Обнаружение координат в одноцветном изображении - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу узнать координаты белой области (для картинки 1 ) на черном фоне, чтобы обрезать ее. Я хочу обрезать все эти белые области отдельно. Поэтому я подходил как контур к этим фигурам, но он не работает. В то же время я подошел к нему как к объекту, но тоже нет. Следовательно, как я должен приблизиться к этим белым областям, чтобы обнаружить и обрезать?

import numpy as np

img = cv2.imread("image.png")

bw = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret, thresh = cv2.threshold(bw,127,255,0)

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)


cntx1 = contours[0][0]
cntx = contours[0][1]

pt1 = (cntx1[0][0],cntx1[0][1])
pt2 = (cntx[0][0],cntx[0][1])

cv2.circle(img,pt1,5,(0,255,0),-1)
cv2.circle(img,pt2, 5, (0,255,0),-1)

cv2.imshow('f',img)

cv2.waitKey(0)
cv2.destroyAllWindows() ```

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете сделать это с помощью cv2.bitwise_not, затем cv2.add. Потому что у меня нет твоего исходного изображения, поэтому я сделал его.

img = cv2.imread("flower.jpg")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret,thresh = cv2.threshold(gray,180,255,cv2.THRESH_BINARY)

bit_not = cv2.bitwise_not(thresh)
bit_not_bgr = cv2.cvtColor(bit_not, cv2.COLOR_GRAY2BGR)

res = cv2.add(bit_not_bgr,img)

cv2.imshow("img",img)
cv2.imshow("thresh",thresh)
cv2.imshow("bit_not",bit_not_bgr)
cv2.imshow("res",res)

enter image description here enter image description here enter image description here enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...