【问题标题】:cv2 imread returns none when not using backslash不使用反斜杠时 cv2 imread 不返回
【发布时间】:2020-02-14 12:37:20
【问题描述】:

您好,我想根据 alpha 值将图像转换为灰度,但 cv2 imread 函数返回以下错误:

TypeError: 'NoneType' 对象不可下标

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('C:/Users/sgunes/Downloads/Cyrillic/Ж/5a793d87b7ef9.png', cv2.IMREAD_UNCHANGED)
img_gray = 255 - img[:, :, 3]

plt.imshow(img_gray, cmap='gray', vmin=0, vmax=255)
plt.show()

当我调试它时,我的 img 对象没有。我如何解决它?感谢您的关注。

【问题讨论】:

    标签: python image opencv


    【解决方案1】:

    根据OpenCV documentation

    函数 imread 从指定文件加载图像并返回。如果无法读取图像(由于缺少文件、权限不正确、格式不受支持或无效),该函数将返回一个空矩阵( Mat::data==NULL )。

    这意味着您输入了错误的路径,或者您没有权限,或者图像不可读。

    从您的标题来看,可能是路径错误。如果你想使用反斜杠,你可以在你的字符串之前添加一个'r'(意味着原始),或者转义每个反斜杠(所以'\'变成'\\')。 请注意,如果您使用原始字符串 (r''),您仍然无法通过反斜杠完成您的字符串。

    img = cv2.imread(r'C:\Users\sgunes\Downloads\Cyrillic\Ж\5a793d87b7ef9.png', cv2.IMREAD_UNCHANGED)
    

    img = cv2.imread('C:\\Users\\sgunes\\Downloads\\Cyrillic\\Ж\\5a793d87b7ef9.png', cv2.IMREAD_UNCHANGED)

    【讨论】:

    • 我认为这是因为我用于文件夹名称的字母Ж。当我更改为 J 时,它工作正常。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2021-03-19
    • 2019-01-28
    相关资源
    最近更新 更多