OpenCV形态学操作一

1 图像分,彩色三通道RGB,灰度,二值黑白

opencv中有API直接可以把彩色转为灰度也就是cvtColor();

转为灰度,也就是由原来的三通道变为单通道,单通道的值范围是<0,255>,我记得作飞卡时候每一个像素值似乎范围就是这个,但是微控上面的<0,255>,似乎好像是有彩色的//我记得不太清了,先写这里,以后,确定后更。

    Mat dst=Mat::zeros(src.size(),src.type());
    for(int i=0;i(i);
        for(int j=0;j(i,j)[0];
            int g=src.at(i,j)[1];
            int r=src.at(i,j)[2];
            dst.at(i,3*j)=saturate_cast((b+g+r)/3);
            dst.at(i,3*j+1)=saturate_cast((b+g+r)/3);
            dst.at(i,3*j+2)=saturate_cast((b+g+r)/3);
        }
    }

 

上面赋值了三次,不然得到的灰度是一个被拉长的。

//割//

形态学操作

腐蚀

在我们选的格子区间里寻找最小的值代替中间锚点

膨胀

这个呢,就是选择最大的

根据上面的我们可以使用膨胀来滤除椒盐噪声,并且效果还不错,可以与中值滤波媲美。

效果图贴上,注:企鹅椒盐图来自某博客主:

原图:

中值处理:

OpenCV形态学操作一_第1张图片

膨胀效果:

OpenCV形态学操作一_第2张图片

关键API:

getStructuringElement();

morphologyEx();//形态学

开open:先腐蚀,再膨胀

Mat kernel=getStructuringElement(MORPH_RECT,Size(5,5));
morphologyEx(src,dst,CV_MOP_CLOSE,kernel);

关close:先膨胀,再腐蚀

和上面调用的函数一样,只是把CV_MOP_CLOSE改为CV_MOP_OPEN

这个可以用来改善上面那只企鹅。

顶帽:

原图像减去开操作:

morphologyEx(src,dst,CV_MOP_TOPHAT,kernel);

黑帽:

原图像减去关操作:

morphologyEx(src,dst,CV_MOP_BLACKHAT,kernel);

///割///

opencv的滑动控件:

createTrackbar("SET:",out,&element,maxsize,callback);//创建滑动控件
//SET为控件名字
//out是一个字符数组,表示在哪一个窗口上面创建控件
//element表示初始值
//maxsize是最大值
//callback是回调函数必须具有这样的格式:void callback(int ,void *)
//因为opencv里面createTrackbar原型要求传入这样的函数

 

你可能感兴趣的:(OpenCV)