用cvCvtColor转化RGB彩色图像为灰度图像时发生的小失误
版本信息
MAC版本:10.10.5
Xcode版本:7.2
openCV版本:2.4.13
在运行程序的时候发现cvCvtColor的地方程序报错
error: (-215) src.depth() == dst.depth() in function cvCvtColor
调试回去的时候回去看了看src和dst的depth变量,原图是正常的8,新图的时候depth==-2147483640。
。。。。。。
(我明明是对着网络代码抄的啊!!!
阿列,等等,定义dst变量好像有什么不对啊。。。)
IplImage* out = cvCreateImage(cvGetSize(in),IPL_DEPTH_8S,1);
(s。。。。。)
万恶的代码补全害死人,最后把IPL_DEPTH_8S改成IPL_DEPTH_8U,结果运行成功。
总结:
查看cvCreateImage的源代码时,他是这么定义的:
CVAPI(IplImage*) cvCreateImage( CvSize size, int depth, int channels );
也就是说一开始我当初的笔误造了新图像的depth参数出了问题。最后再通过源代码对这两个宏定义的变量进行区分吧!
#define IPL_DEPTH_8U 8
#define IPL_DEPTH_8S (IPL_DEPTH_SIGN| 8)
#define IPL_DEPTH_SIGN 0x80000000
0x80000000 | 8
==2147483648 | 8
==2147483656//用int depth变量储存导致溢出问题
本文来自博客园,作者:MrYu4,转载请注明原文链接:https://www.cnblogs.com/MrYU4/p/15778898.html