最近在做一个数字图像的小项目,在最后的界面与程序结合阶段总是出现单个程序可以运行,但是使用界面传递的参数就运行不了的情况。在网上查了很多相关错误,最终确定是文件命名问题。
错误如下:
cv2.error: OpenCV(3.4.1) C:Miniconda3conda-bldopencv-suite_1533128839831workmodulesimgprocsrccolor.cpp:11214: error: (-215) (scn == 3 || scn == 4) && (depth == 0 || depth == 5) in function cv::cvtColor
出现这种错误原因是文件命名中含有中文名或者其他cv2中不支持的符号格式,解决方法可以考虑改变命名的编码格式,修改字符型为整型等。
#将cv2.imread变为可读取中文路径的cv_imread()
def cv_imread(filePath):
cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
#imdecode读取的是rgb,如果后续需要opencv处理的话,需要转换成bgr,转换后图片颜色会变化
#cv_img=cv2.cvtColor(cv_img,cv2.COLOR_RGB2BGR)
return cv_img
另外,文件的路径写法也尤其重要,一般系统的路径写法为“C:Users27489Desktop”,在python中‘’为转义字符,如果路径中继续使用的话,可能会引起歧义,所以建议python中的路径统一使用‘/’或者‘\’。