为了账号安全,请及时绑定邮箱和手机立即绑定

函数 'cv::cvtColor' 中的 !_src.empty()

函数 'cv::cvtColor' 中的 !_src.empty()

慕村9548890 2023-06-27 13:34:03
from skimage.measure import compare_ssimimport argparseimport imutilsimport cv2first = ("original_02.png")second = ("modified_02.png")imageA = cv2.imread("first")imageB = cv2.imread("second")grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)(score, diff) = compare_ssim(grayA, grayB, full=True)diff = (diff * 255).astype("uint8")print("SSIM: {}".format(score))thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)for c in cnts:    (x, y, w, h) = cv2.boundingRect(c)    cv2.rectangle(imageA, (x, y), (x + w, y + h), (0, 0, 255), 2)    cv2.rectangle(imageB, (x, y), (x + w, y + h), (0, 0, 255), 2)cv2.imshow("Original", imageA)cv2.imshow("Modified", imageB)cv2.imshow("Diff", diff)cv2.imshow("Thresh", thresh)cv2.waitKey(0)这是我的代码,我遇到了标题中提到的错误。我将代码和必要的文件保存在同一个文件夹中greyA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY) cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-j8nxabm_\opencv\modules\imgproc \src\color.cpp:182: 错误: (-215:断言失败) !_src.empty() 在函数“cv::cvtColor”中上面是我收到的错误
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您不是在读取图像,而是将字符串读取到 imread 中。imread()将此解释为路径并可能返回,None因为它找不到路径。相反尝试:


first = ("original_02.png")

second = ("modified_02.png")



imageA = cv2.imread(first)

imageB = cv2.imread(second)


查看完整回答
反对 回复 2023-06-27
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

错误消息告诉您您的图像是空的。


这是为什么?— 因为您的代码正在尝试读取名称为'first'且'second'. 实际上,您想要读取这些名称的变量。


因此删除引号。此外,没有理由将变量名称放在括号中 - 也删除它们。目前看来您打算将这些变量定义为元组(但您没有):


first = "original_02.png"

second = "modified_02.png"


imageA = cv2.imread(first)

imageB = cv2.imread(second)

接下来,您应该检查这是否真的有效。

如果无法读取图像(...),该函数将返回一个空矩阵


查看完整回答
反对 回复 2023-06-27
  • 2 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信