OpenCV 无法 read/write 一张 jpg 图像

OpenCV not able to read/write a jpg image

我得到了这个非常简单的代码来遍历目录,对每个图像应用精明的边缘检测并将每个结果保存到不同的目录:

import cv2, os

directory = os.listdir('beard/')

for image in directory:
    cv2.imwrite('canny-esult/' + image + '_canny.jpg', cv2.Canny(cv2.imread('bear/' + image), 100, 200))

但这是我遇到的错误:

    cv2.imwrite('canny-esult/' + image + '_canny.jpg', cv2.Canny(cv2.imread('bear/' + image), 100, 200))
cv2.error: OpenCV(4.5.5) /io/opencv/modules/imgcodecs/src/loadsave.cpp:801: error: (-215:Assertion failed) !_img.empty() in function 'imwrite'

我发现了一些勘误表

熊 -> 胡子

cv2.imwrite('canny-esult/' + 图片 + '_canny.jpg', cv2.Canny(cv2.imread('beard/' + 图片), 100, 200))

cv2.imread('bear/'+image) 中有一个简单的拼写错误。我想你想从 cv2.imread('beard/'+image) 读取文件。此外,您可能希望使用 image[:-4] 从文件名中 trim 扩展部分,以避免您的文件被命名为 file.jpg_canny.jpg.

的情况

工作代码:

import cv2, os

directory = os.listdir('beard/')

for image in directory:
    cv2.imwrite('canny-esult/' + image[:-4] + '_canny.jpg', cv2.Canny(cv2.imread('beard/' + image), 100, 200))

断言 215 声明图像大小为 0。您只是在定义图像路径时做了一个类型,这就是为什么您无法读取图像,然后您尝试调整图像大小并给出错误,因为没有图像。 只需重新检查您的图像路径,一旦正确,它应该可以工作。