opencv cvcanny报错 OpenCV Error: Bad number of channels

chenwucai123456 2013-04-27 09:36:22
hi all

在迷迷糊糊的使用opencv中,现在碰到个问题
我先读了一张图片
IplImage*m_image;

Mat source(m_image,false);
然后对source进行了一系列的矩阵变换等
得到一个最后的Mat数据src

现在对这个src进行canny处理
Mat dst;
cvtColor(src,dst,CV_GRAY2BGR);
然后运行到这里就报错了
报错信息如下
OpenCV Error: Bad number of channels (Incorrect number of channels for this conversion code) in cvCvtColor, file /build/buildd/opencv-2.1.0/src/cv/cvcolor.cpp, line 2356
/build/buildd/opencv-2.1.0/src/cv/cvcolor.cpp:2356: error: (-15) Incorrect number of channels for this conversion code in function cvCvtColor


查了网上的一些说法
意思说是这个src必须是单通道的才行,然后这m_image我是用3的方式创建的
所以我想知道我这里该怎么把这个src转成单通道的

不知道小子说的意思高人理解否

坐等高人指点
...全文
495 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
luotuo44 2013-05-02
  • 打赏
  • 举报
回复
首先加载一张图片,然后用cvCreateImage函数创建一个一样大的(长宽一样)图像。创建的时候要设置通道数为1. 最后,调用cvCvtColor函数。第三个参数使用CV_RGB2GRAY。
suseyaoyao 2013-05-02
  • 打赏
  • 举报
回复
给楼主一段关于cvtColor的测试代码: IplImage *RGB = cvLoadImage("8.0.jpg",-1); IplImage *Gray = cvCreateImage(cvGetSize(RGB),RGB->depth,3); cvCvtColor(RGB,Gray,CV_GRAY2BGR); cvNamedWindow("src"); cvShowImage("src",RGB); cvNamedWindow("dst"); cvShowImage("dst",Gray); cvWaitKey(0); 其中RGB是一副单通道的灰度图像,这其实就是matlab中的cat函数功能
suseyaoyao 2013-05-02
  • 打赏
  • 举报
回复
既然src的通道数是3,那么就应该有:int channels = src->nchannels = 3; 可以这么做: IplImage *r = cvCreateImage(cvGetSize(src),src->depth,1); IplImage *g = cvCreateImage(cvGetSize(src),src->depth,1); IplImage *b = cvCreateImage(cvGetSize(src),src->depth,1); cvSplit(src,r,g,b,NULL);
赵4老师 2013-04-28
  • 打赏
  • 举报
回复
在OpenCV\Samples目录下找使用cvcanny的例子代码参考一下。

24,853

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧