OpenCV形态学操作一

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

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

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

    Mat dst=Mat::zeros(src.size(),src.type());
    for(int i=0;i<src.rows;i++)
    {
        //uchar *output=dst.ptr<uchar>(i);
        for(int j=0;j<src.cols;j++)
        {
            int b=src.at<Vec3b>(i,j)[0];
            int g=src.at<Vec3b>(i,j)[1];
            int r=src.at<Vec3b>(i,j)[2];
            dst.at<uchar>(i,3*j)=saturate_cast<uchar>((b+g+r)/3);
            dst.at<uchar>(i,3*j+1)=saturate_cast<uchar>((b+g+r)/3);
            dst.at<uchar>(i,3*j+2)=saturate_cast<uchar>((b+g+r)/3);
        }
    }

 

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

//割//

形态学操作

腐蚀

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

膨胀

这个呢,就是选择最大的

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

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

原图:

中值处理:

膨胀效果:

关键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原型要求传入这样的函数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值