我收到一个错误:
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)
如何解决此问题?
我对opencv
不太熟悉,但该错误意味着cv2.imread('opencv-template-for-matching.jpg',0)
无法读取该文件,因此返回None
。
确保此文件存在且格式支持。来自imread
的文档:
函数 imread 从指定文件加载图像并返回它。如果无法读取图像(由于缺少文件、权限不正确、格式不受支持或无效),该函数将返回一个空矩阵 ( Mat::d ata==NULL)。目前支持以下文件格式: Windows 位图 - *.bmp、*.dib(始终支持) JPEG 文件 - *.jpeg、*.jpg、*.jpe(请参阅注释部分) JPEG 2000 文件 - *.jp2(请参阅"注释"部分) 便携式网络图形 - *.png(请参阅注释部分) 便携式图像格式 - *.pbm、*.pgm、*.ppm(始终支持) 太阳光栅 - *.sr、*.ras(始终支持) TIFF文件 - *.tiff,*.tif(请参阅注释部分)