各位大牛,这个图像如何自动截取其中有颜色的部分?

kakaweek 2014-04-04 04:45:34
各位大牛,这个图像如何自动截取剪切其中有颜色的部分?用opencv方法自动截取这个有色部分。我知道用cvSetImageROI(src , cvRect(x,y,width,height));语句可以完成,但我提取有颜色部分的像素坐标,提取不出来?拜托各位大牛能试试手,应该是个很简单的程序。请各位指导下下。这个图像是我从已知图像中提取的蓝色部分。现在就是想怎么能够直接自动截取出如下面的第二张小图那样的有颜色的部分?第二张小图是我自己手动用截图软件截取的,我希望是能够自动截取。再次拜托大家了。谢谢了
...全文
216 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kakaweek 2014-04-08
  • 打赏
  • 举报
回复
可以给个具体的代码吗?谢谢各位了,我已经尝试编程很久了。它困扰我很久了。谢谢大家了
kakaweek 2014-04-08
  • 打赏
  • 举报
回复
遍历整个图片像素点,求出四个非255极值(X最大,X最小,Y最大,Y最小),然后你就找到了四个边界,然后用掩码图像处理就可以剪切出图像。 我现在进行的代码是: IplImage *pImg=cvLoadImage("1.jpg",1); //加载图片 if (pImg==0) { printf("Can't find the picture!\n"); //不能载入 } else { printf("Can find the image!\n"); //成功载入 cvNamedWindow("Image",1); cvShowImage("Image",pImg); cvWaitKey(0); cvDestroyWindow( "Image" );//销毁窗口 cvReleaseImage( &pImg ); //释放图像 } 获取图像像素: CvScalar s; for(i=0;i<pImg->height;i++) { for(j=0;j<pImg->width;j++) { s=cvGet2D(pImg,i,j); printf("B=%f, G=%f, R=%f ",s.val[0],s.val[1],s.val[2]); s.val[0]=180; s.val[1]=90; s.val[2]=0; //就是图中这蓝色的RGB值 cvSet2D(pImg,i,j,s); } } 下面我想找到蓝色部分左上角第一个点(蓝色部分最小的i和最小的j),和右下角(蓝色部分最大的像素点i和最大的j),请大家帮帮忙?往后怎么提取呢,然后用矩形ROI可以截取剪切出想要的蓝色部分。请大家贴个代码出来,谢谢了
神-气 2014-04-05
  • 打赏
  • 举报
回复
水平垂直投影
采石工 2014-04-05
  • 打赏
  • 举报
回复
水平和垂直投影也可以
zcdabing 2014-04-04
  • 打赏
  • 举报
回复
你可以这么实现:遍历整个图片像素点,求出四个非255极值(X最大,X最小,Y最大,Y最小),然后你就找到了四个边界,然后用掩码图像处理就出来了

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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