您的位置:首页 > 运维架构

初学opencv-通用的形态学

2016-04-19 16:09 399 查看
<pre name="code" class="cpp">cvNamedWindow("形态梯度image");
cvNamedWindow("礼帽image");
cvNamedWindow("黑帽image");
IplImage * src = cvLoadImage("1.jpg", 0);
//创建临时图像,某些操作会用到,应该与图像有相同的大小
IplImage * temp1 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,src->nChannels);
IplImage * temp2 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,src->nChannels);
IplImage * temp3 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,src->nChannels);
IplImage * temp4 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,src->nChannels);
//输出图像
IplImage * img1=cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,src->nChannels);
IplImage * img2=cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, src->nChannels);
IplImage * img3=cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,src->nChannels);
IplImage * img4=cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,src->nChannels);

cvCopyImage(src,temp1);
cvCopyImage(src,temp2);
cvCopyImage(src,temp3);
cvCopyImage(src,temp4);

cvCopyImage(src, img1);
cvCopyImage(src, img2);
cvCopyImage(src, img3);
cvCopyImage(src, img4);
//形态学梯度,用来突出亮度区域的外围
cvMorphologyEx(
src,
img1,
temp1,
NULL, //default 3*3
CV_MOP_GRADIENT,
1);
//开运算,先腐蚀后膨胀
cvMorphologyEx(
src,
img4,
temp4,
NULL, //default 3*3
CV_MOP_OPEN,
1);

//"礼帽",用来分离比邻近的点亮的斑块
cvMorphologyEx(
src,
img2,
temp2,
NULL, //default 3*3
CV_MOP_TOPHAT,
1);

//“黑帽”用来分离比临近点暗的斑块

cvMorphologyEx(
src,
img3,
temp3,
NULL, //default 3*3
CV_MOP_BLACKHAT,
1);
cvShowImage("形态梯度image", img1);
cvShowImage("礼帽image", img2);
cvShowImage("黑帽image", img3);
cvShowImage("开运算image", img4);
cvWaitKey(0);
cvReleaseImage(&temp1);
cvReleaseImage(&temp2);
cvReleaseImage(&temp3);
cvReleaseImage(&temp4);
cvReleaseImage(&src);
cvReleaseImage(&img1);
cvReleaseImage(&img2);
cvReleaseImage(&img3);
cvReleaseImage(&img4);
cvDestroyAllWindows();
return 0;



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