报错OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor汇总

遇到这个报错 目前总结有三个可能
第一个
图片格式不对,不能说jpeg你要改成png

第二个
图片 保存路径不对
查看自己的路径
把图片路径 修改成完整路径 或者 把图片放到和.cpp文件同一个路径

/* input and output directories */
std::string repo_dir = "/path/to/stereo_sparse_depth_fusion/";
std::string left_image_uri = repo_dir + "imgs/stereo_left.png";
std::string right_image_uri = repo_dir + "imgs/stereo_right.png";
std::string left_depth_uri = repo_dir + "imgs/gt_disparity.png";
std::string save_dir = repo_dir + "results/";

这里的std::string repo_dir = “/path/to/stereo_sparse_depth_fusion/”;需要改成你的照片存放的真是的地址 我的在Ubuntu下 地址为 /home/用户名/…/stereo_sparse_depth_fusion/

第三个
可能是由于将已经是灰度图的图片转为灰度图造成的
调用代码为:
import cv2
image = cv2.imread(r"E:\190307_pydemo\图片\02.png",0)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
错误提示为:
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(3.4.2) c:\projects\opencv-python\opencv\modules\imgproc\src\color.hpp:253: error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function ‘cv::CvtHelper,struct cv::Set<1,-1,-1>,struct cv::Set<0,2,5>,2>::CvtHelper’

修改方法:cv2.imread路径后加 “,0” 时已经将图片读取为灰度图,故转换时报错。此处将image = cv2.imread(r"E:\190307_pydemo\图片\02.png",0)修改为image = cv2.imread(r"E:\190307_pydemo\图片\02.png")即可。因此,以后要注意在做图像灰度变换前,最好先判断确定待变换图像不是灰度图。
该方法借鉴了作者:https://blog.csdn.net/anyiran666/article/details/90444692

你可能感兴趣的:(opencv,计算机视觉)