使用w时出错,h = template.shape [:: - 1]

时间:2016-07-09 12:52:16

标签: python opencv

我收到错误:

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)

如何解决此问题?

1 个答案:

答案 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(参见注释部分)