Возможно ли использовать templateMatch с бинарными изображениями?У меня ошибка - PullRequest
1 голос
/ 21 мая 2019

Возможно ли в TemplateMatch двоичные изображения?Я пробовал, и ничего не помогает.Я всегда получаю сообщение об ошибке:

cv2.error: OpenCV(3.4.5) C:\projects\opencv-python\opencv\modules\imgproc\src\templmatch.cpp:1107: error: (-215:Assertion failed) (depth == CV_8U || depth == CV_32F) && type == _templ.type() && _img.dims() <= 2 in function 'cv::matchTemplate'

Я пытался использовать astype(np.uint8), но это тоже не помогает.

//template is already binary
//edited: all the code
img = cv2.imread('img/img.png')
template = cv2.imread('template-match/template.png')
img_roi=img[310:1060,510:1430]
img_gray = cv2.cvtColor(img_roi,cv2.COLOR_BGR2GRAY)
afterEnhance = cv2.GaussianBlur(img_gray, (7, 7), 0)
afterEnhance=cv2.equalizeHist(afterEnhance)
_,th1=cv2.threshold(afterEnhance,55,255,cv2.THRESH_BINARY)
result = cv2.matchTemplate(th1, template,cv2.TM_CCOEFF)

1 Ответ

1 голос
/ 21 мая 2019

Кажется, вы поняли: шаблон имеет 3 цветовых канала, тогда как img преобразуется в оттенки серого и имеет только один канал.
Вы можете загрузить шаблон-изображение в градациях серого, используя
template = cv2.imread('template-match/template.png',0)

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