您的位置:首页 > 其它

提取图片中任意形状的区域

2008-10-27 17:55 288 查看
正在做一个基于内容的图像检索项目,客户要求可以让用户提取图片上的任意形状的子图作为输入。为了实现这个功能,花了不少精力,中间绕了不少圈子。现在问题总算解决了,把主要的思路记录一下,希望能帮到有同样需求的朋友。
由于这个项目使用了第三方的开源图像库opencv,所以这个功能也是借助opencv来实现的。首先需要解决的是在图片中绘制曲线的问题,思路很简单,只需要响应鼠标事件通过描点、连线的方式就可以完成。在opencv中需要使用回调来响应鼠标事件,opencv中文站上有很好的示例,关键代码:
if(event == CV_EVENT_RBUTTONUP)

{

cvFloodFill(maskImg,cvPoint(x,y),cvScalarAll(255));

cvSaveImage("maskImg.bmp",maskImg);

IplImage *segImage=cvCreateImage(cvGetSize(img),8,3);;

cvCopy(img,segImage,maskImg);

cvSaveImage("segImage.bmp",segImage);

cvCopy(segImage,proc->img);

cvReleaseImage(&segImage);

cvDestroyWindow("Key Image");

}
效果如下:

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: