Python中cv2.imread()返回None的问题求助
解决cv2.imread()返回None的问题
你的代码里cv2.imread()返回None,核心问题是路径转义错误,再加上缺少窗口显示的必要代码,以下是具体解决步骤:
核心修复:路径转义问题
Windows路径中的\在Python字符串里是转义字符(比如\N会被解析为特殊字符),导致实际读取的路径和输入不一致。可以用三种方式修复:
- 使用双反斜杠:
"D:\\Python\\New folder\\apple.png" - 使用原始字符串(推荐):
r"D:\Python\New folder\apple.png" - 使用正斜杠:
"D:/Python/New folder/apple.png"
额外检查项
- 验证文件存在:先确认文件路径是否正确,避免文件名拼写错误(比如大小写、后缀名),可以用
os.path.exists()做前置检查 - 图片格式与权限:确保图片是OpenCV支持的格式(PNG、JPG等),且当前程序有读取该文件的权限
- 窗口显示修复:原代码缺少
cv2.waitKey(),即使读取到图片,窗口也无法正常显示
修改后的完整代码
from numpy import asarray from mss import mss import cv2 import time import pyautogui import imageio.v3 as iio import os import shutil def vision(): cords = (400,400,1100,400) # 使用原始字符串避免转义问题 mark_path = r"D:\Python\New folder\apple.png" # 检查文件是否存在 if not os.path.exists(mark_path): print(f"错误:文件 {mark_path} 不存在") return mark = cv2.imread(mark_path) if mark is None: print("错误:无法读取图片,请检查格式或文件权限") return cv2.imshow("OpenCV Image", mark) cv2.waitKey(1) # 必须调用此函数才能显示窗口 while True: vision() time.sleep(0.1) # 添加延时,避免循环占用过多资源
内容的提问来源于stack exchange,提问作者Mint3Ds
相关产品推荐
相关产品推荐

