使用open cv的imread时出现'libpng error: Read Error'错误

5

我目前正在使用Anaconda 4.3.27,Python 3.6.2和OpenCV 3.3.0。

当我尝试

img1 = cv2.imread('D:\Images\3D-Matplotlib.png')
img2 = cv2.imread('D:\Images\mainsvmimage.png')

我遇到了“libpng error: Read Error”的问题,并弹出一个窗口,指示Python停止工作。 我已经尝试将'\'替换为'\\'和'/',但在这些情况下仍然出现相同的错误。 当我尝试读取jpg而不是png时,我不会收到错误。 有人知道可能出现什么问题吗?
提前感谢!
编辑:
cv2.imwrite也会出现错误:
libpng error: Write Error

给定路径的图像是否存在?也许您可以尝试使用 os.listdir("D:/Images/")。 - Mitiku
是的,它们是。当我尝试 os.listdir 时,它们被返回... - Jorre Goossens
3个回答

2

1

我在目录中有损坏的图片,删除这些图片解决了错误。


0
尝试添加cv2.imread所需的标志(灰度等),请参考https://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html,并使用r作为路径。
 img2 = cv2.imread(r"D:\Images\mainsvmimage.png",0)

(0 会将图像以灰度方式加载)

OpenCV Python无法使用imread()打开图像

如果仍然无法工作,可以尝试使用另一张图片进行测试,因为可能存在图像头文件问题,请参考libpng错误:读取错误或您的libpng版本存在问题,请参考OpenCV上的Libpng冲突?


添加标志并在路径前面使用'r'是无效的。我尝试将我可以打开的jpg保存为png,但是当我尝试使用imread读取它时,我仍然得到相同的错误。如果问题是由于libpng版本引起的,那么我不应该得到不同的错误,比如在“OpenCV上的Libpng冲突?”链接中吗? - Jorre Goossens
你能用 img2 = cv2.imread(r"D:\Images\jpg_image.jpg.",0) 打开一个 .jpg 文件吗?通常情况下这应该是可行的,如果它可以工作,那么问题可能与 libpng 相关,或者与你的 png 文件头或权限问题有关。通常情况下,上面的 Python 代码是正确的。 - ralf htp
是的,我可以打开 .jpg 文件。我现在尝试更新 conda 和 libpng,但更新后仍然遇到相同的错误。有没有办法缩小我的错误来源范围?我对 Python 和 OpenCV 还很新,所以经验不是很丰富。 - Jorre Goossens
我不知道,很有可能这是 libpng 错误,而我对 Windows 不熟悉。libpng 版本必须与 opencv 版本匹配。如果你不一定要使用 .png 格式,则可以使用 .jpg 文件并跳过 libpng 的错误跟踪。从 matplotlib 中,你可以像 https://dev59.com/rGoy5IYBdhLWcg3wBJcx 所示保存文件为 .jpg 格式。 - ralf htp
是的,目前我打算通过仅使用 .jpg 来规避这个问题。希望在未来某个时候能够弄清楚问题所在。感谢你的努力! - Jorre Goossens
1
当我尝试使用OpenCV imread()函数读取图像时,遇到了类似的问题。解决方法是“清理”路径。文件路径中有空格和“+”,通过将两者替换为“_”,现在可以通过cv2.imread()正确读取文件。 - Greg Mansio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接