【问题标题】:Why isn't imread in openCV opening some of the images?为什么在openCV中没有打开某些图像的imread?
【发布时间】:2017-10-31 11:04:35
【问题描述】:

我得到的错误是

"Traceback(最近一次调用最后一次):文件 “C:\Users\harit\Desktop\red.py”,第 6 行,在 cv2.imshow('img',img) 错误:C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:304: 错误:(-215) size.width>0 && size.height>0 in function cv::imshow"

相关代码是这样的:

import cv2
import numpy as np

img = cv2.imread('C:\Users\harit\Desktop\images\12.jpg')

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

【问题讨论】:

  • 检查这些图像。它们是格式良好的图像吗?似乎缺少一个完整的维度,或者取决于opencv,当打开文件出现问题时会出现类似这样的错误?您可能应该在 imshow 之前检查 img。
  • 我如何准确地检查这些图像(对不起,我是 openCV 和 python 的新手)。我正在从谷歌下载这些图片。有些图片可以打开,而有些则不能。我已经尝试打开两个扩展名(.png 和 .jpg)。
  • 只需在一些图像查看器中打开它们。并在 imshow 之前检查 img。在打开文件之前检查文件是否存在甚至是明智的,如果不存在则抛出一些有用的东西。
  • 图片确实存在,而且打开得很好。
  • 现有(我在我的文件夹中看到它们)和从 python 的角度现有/可加载是两个不同的东西。然而,您没有在 imshow 之前检查 img。慢慢来。

标签: python


【解决方案1】:

尝试改变

img = cv2.imread('C:\Users\harit\Desktop\images\12.jpg')

img = cv2.imread(r'C:\Users\harit\Desktop\images\12.jpg')

反斜杠是转义字符,引号前的 r 告诉 python “忽略”它们。

例如:

>>> s = 'C:\Users\harit\Desktop\images\12.jpg'
>>> print s
C:\Users\harit\Desktop\images
.jpg

这是错误的路径!...字符串前面有一个“r”:

>>> s = r'C:\Users\harit\Desktop\images\12.jpg'
>>> print s
C:\Users\harit\Desktop\images\12.jpg

有关原始字符串的更多信息,请参阅https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals

【讨论】:

  • 非常感谢!在字符串前面添加 'r' 确实有效!即使添加双反冲而不是在字符串前面添加“r”,它也可以工作。
猜你喜欢
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多