用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变量储存导致溢出问题
posted @ 2016-07-27 16:39  MrYu4  阅读(46)  评论(0编辑  收藏  举报