OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 2772|回复: 1

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

[复制链接]
发表于 2014-4-5 00:41:37 | 显示全部楼层 |阅读模式
各位大牛,这个图像如何自动截取剪切其中有颜色的部分?用opencv方法自动截取这个有色部分。我知道用cvSetImageROI(src , cvRect(x,y,width,height));语句可以完成,但我提取有颜色部分的像素坐标,提取不出来?拜托各位大牛能试试手,应该是个很简单的程序。请各位指导下下。这个图像是我从已知图像中提取的蓝色部分。现在就是想怎么能够直接自动截取出如下面的第二张小图那样的有颜色的部分?第二张小图是我自己手动用截图软件截取的,我希望是能够自动截取。再次拜托大家了。谢谢了

想要截取的原图

想要截取的原图

我自己手动截取的图像

我自己手动截取的图像
回复

使用道具 举报

 楼主| 发表于 2014-4-8 19:33:12 | 显示全部楼层
遍历整个图片像素点,求出四个非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可以截取剪切出想要的蓝色部分。请大家贴个代码出来,谢谢了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-17 17:02 , Processed in 0.010026 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表