import cv2 import numpy as np print('loading ...') def showpiclocation(myimg, myimg1): # 定义定位函数 # 定位图片 h,w = myimg.shape # 返回img的第二维度长度---宽度 fh,fw = myimg1.shape # 返回img的第一维度长度---高度 findpt = None for now_h in range(0, h - fh): for now_w in range(0, w - fw): comp_tz = myimg[now_h:now_h + fh, now_w:now_w + fw, :] - myimg1 if np.sum(comp_tz) < 1: findpt = now_w, now_h print(".") if findpt != None: cv2.rectangle(myimg, findpt, (findpt[0] + fw, findpt[1] + fh), (0, 0, 255)) # opencv函数画矩形 else: print("Target image not found!") return myimg fn = 'C:/Users/王鑫楠/Desktop/金城武.png' fn1 = 'C:/Users/王鑫楠/Desktop/小金城武.png' #fn2 = 'pictestt2.png' myimg = cv2.imread(fn) myimg1 = cv2.imread(fn1) #myimg2 = cv2.imread(fn2) myimg = showpiclocation(myimg, myimg1) #myimg = showpiclocation(myimg, myimg2) cv2.namedWindow('img') cv2.imshow('img', myimg) cv2.waitKey() cv2.destroyAllWindows()代码报错AttributeError: 'NoneType' object has no attribute 'shape',请说明原因并改正
时间: 2023-06-27 12:04:57 浏览: 205
代码中出现了NoneType的错误,通常这意味着cv2.imread()函数返回了None,即无法读取图片。可能的原因是文件路径错误或文件不存在。请检查文件路径是否正确,并确保文件存在。
另外,您需要将导入语句放在代码的开头,并使用正确的缩进格式。以下是修改后的代码:
```
import cv2
import numpy as np
fn = 'C:/Users/王鑫楠/Desktop/金城武.png'
fn1 = 'C:/Users/王鑫楠/Desktop/小金城武.png'
print('loading ...')
def showpiclocation(myimg, myimg1):
# 定义定位函数
h,w = myimg.shape # 返回img的第二维度长度---宽度
fh,fw = myimg1.shape # 返回img的第一维度长度---高度
findpt = None
for now_h in range(0, h - fh):
for now_w in range(0, w - fw):
comp_tz = myimg[now_h:now_h + fh, now_w:now_w + fw, :] - myimg1
if np.sum(comp_tz) < 1:
findpt = now_w, now_h
print(".")
if findpt != None:
cv2.rectangle(myimg, findpt, (findpt[0] + fw, findpt[1] + fh), (0, 0, 255)) # opencv函数画矩形
else:
print("Target image not found!")
return myimg
myimg = cv2.imread(fn)
myimg1 = cv2.imread(fn1)
myimg = showpiclocation(myimg, myimg1)
cv2.namedWindow('img')
cv2.imshow('img', myimg)
cv2.waitKey()
cv2.destroyAllWindows()
```
阅读全文