PyCharm中cv2.imread/resize报找不到引用及图像缩放异常问题
实现代码
import matplotlib.pyplot as plt import numpy as np import os import cv2 #load data data_directory = r"C:\Users\ikon\PycharmProjects\LogisticRegression\dataset\CnicData" CATEGORIES = ['Cnic', 'noCnic'] for category in CATEGORIES: path = os.path.join(data_directory,category) for img in os.listdir(path): img_array = cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE) IMG_SIZE = 50 new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE)) plt.imshow(img_array, cmap="gray") plt.show() break
遇到的问题
- PyCharm中调用
cv2.imread、cv2.resize方法时,IDE提示错误:Cannot find reference 'imread' in '__init__.py'、Cannot find reference 'resize ' in '__init__.py',已尝试卸载重装opencv库,问题未解决。 - 计划通过设置
IMG_SIZE参数调用cv2.resize缩放图像,但实际plt输出的图像并未按照设定尺寸呈现预期的像素化效果。
解决方案
cv2方法IDE提示找不到引用的问题
该问题是PyCharm对OpenCV的C扩展静态索引识别失败导致,并非库安装损坏,按以下步骤排查修复:
- 卸载当前环境中所有OpenCV相关包,执行
pip uninstall opencv-python opencv-contrib-python opencv-python-headless卸载干净后,重新执行pip install opencv-python opencv-contrib-python安装,避免同环境混装pip、conda源的OpenCV包引发索引冲突。 - 检查PyCharm项目解释器配置:打开
设置 > Project: 项目名 > Python Interpreter,确认选中的解释器路径和你安装OpenCV包的环境路径一致,虚拟环境/全局环境不匹配是最常见的触发原因。 - 上述操作完成后仍报错的,执行
File > Invalidate Caches...,勾选所有缓存清除选项,确认后重启PyCharm,等待索引重建完成即可。
该提示仅为IDE静态检查报错,只要代码运行时不抛出
ModuleNotFoundError,就不会影响OpenCV功能的实际执行。
plt输出图像无缩放像素化效果的问题
代码逻辑存在变量传参错误:你已经将缩放后的图像存入new_array变量,但plt.imshow()传入的是原始未缩放的img_array,缩放后的数组根本没有被调用,自然不会出现预期效果。
修正对应代码段:
# IMG_SIZE建议挪到循环外定义,无需每次读图重复赋值 IMG_SIZE = 50 for category in CATEGORIES: path = os.path.join(data_directory,category) for img in os.listdir(path): img_array = cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE) new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE)) # 传入缩放后的new_array而非原始img_array plt.imshow(new_array, cmap="gray") plt.show() break
修改后运行即可看到50*50尺寸缩放后的像素化图像效果。
内容的提问来源于stack exchange,提问作者Sardar Raheem
相关产品推荐
相关产品推荐

