我收到错误:
w, h = template.shape[::-1]
AttributeError: 'NoneType' object has no attribute 'shape'
我的代码:
import cv2
import numpy as np
img_rgb = cv2.imread('opencv-template-matching-python-tutorial.jpg')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('opencv-template-for-matching.jpg',0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,255,255), 2)
cv2.imshow('Detected',img_rgb)
如何解决此问题?
答案 0 :(得分:2)
我对opencv
不太熟悉,但该错误意味着cv2.imread('opencv-template-for-matching.jpg',0)
无法读取该文件,因此返回None
。
确保此文件存在且支持的格式。
来自imread
的{{3}}:
函数imread从指定文件加载图像并返回它。 如果无法读取图像(由于文件丢失,权限不正确,格式不受支持或无效),该函数将返回一个空矩阵(Mat :: data == NULL)。目前,支持以下文件格式: Windows位图 - * .bmp,* .dib(始终支持) JPEG文件 - * .jpeg,* .jpg,*。jpe(参见注释部分) JPEG 2000文件 - * .jp2(参见注释部分) 便携式网络图形 - * .png(参见“注释”部分) 便携式图像格式 - * .pbm,* .pgm,* .ppm(始终支持) 太阳栅格 - * .sr,* .ras(始终支持) TIFF文件 - * .tiff,* .tif(参见注释部分)