7. opencv图片的腐蚀和膨胀

opencv图片的腐蚀和膨胀

  1. 膨胀就是求局部最大值的操作,从数学角度讲,就是将图像与核进行卷积运算。

示例代码:
//#include “opencv/opencv_application.h”
//#include “public.h”
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include

using namespace std;
using namespace cv;

Mat g_srcImage, g_dstImage;
int g_nTrackbarNumber = 0;
int g_nStructElementSize = 3;

void Process();
void on_TrackbarNumChange(int, void *);
void on_ElementSizeChange(int, void *);

int main( int argc, const char* argv[])
{
// OpencvOperator opencvOperator;
// opencvOperator.FullfillblurFilter();
system(“color5E”);

g_srcImage = imread("../data/1.jpg");
if(!g_srcImage.data){printf("error\n"); return false; }

namedWindow("[原始图片]");
imshow("[原始图片]", g_srcImage);

namedWindow("[效果图]");
Mat element = getStructuringElement(MORPH_RECT, Size(2*g_nStructElementSize+1, 2*g_nStructElementSize+1),
        Point(g_nStructElementSize, g_nStructElementSize));
erode(g_srcImage, g_dstImage, element);

imshow("[效果图]", g_dstImage);

//创建轨迹条
createTrackbar("腐蚀/膨胀", "[效果图]", &g_nTrackbarNumber, 1, on_TrackbarNumChange);
createTrackbar("内核尺寸", "[效果图]", &g_nStructElementSize, 21, on_ElementSizeChange);

//轮询获取按键信息,若按下q键,程序退出
while(char(waitKey(1)) != 'q') {}

return 0;

}

void Process()
{
//获取自定义的核
Mat element = getStructuringElement(MORPH_RECT, Size(2g_nStructElementSize+1, 2g_nStructElementSize+1),
Point(g_nStructElementSize, g_nStructElementSize));

//进行腐蚀或者膨胀操作
if(g_nTrackbarNumber == 0)
{
    erode(g_srcImage, g_dstImage, element);
}
else{
    dilate(g_srcImage, g_dstImage, element);
}

imshow("[效果图]", g_dstImage);

}

//腐蚀和膨胀之间切换开关的回调函数
void on_TrackbarNumChange(int , void *)
{
//腐蚀和膨胀之间的效果已经切换,回调函数体内需要调用一次Process函数,使改变后的效果立即生效并显示出来
Process();

}

//腐蚀和膨胀操作内核改变的时的回调函数
void on_ElementSizeChange(int, void *)
{
//内核尺寸已经改变,回调函数体内需要调用一次Process函数,使改变后的效果立即生效并显示出来
Process();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值