【第七课:C++和opencv】图像的膨胀+控制条

     上一次写了图像的腐蚀,下载为其加上控制条。

      在opencv文档上有一个腐蚀和膨胀处理,是使用壳控制条的程序【要看的点击这里】,但我这的代码是模仿网上大牛的【如有雷同纯属巧合^_^】,该方法和opencv文档的方法有点不同。

     在opencv文档对腐蚀介绍得很清楚,我就不再多讲了。其实我也不太懂,也是菜鸟一个^_^

     在上代码前,还是看看要用的函数。

     **********************************************************************************************

     1.Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1))

       shape –元素的形状可用值:
                            – MORPH_RECT - a rectangular structuring element
                            – MORPH_ELLIPSE - an elliptic structuring element, that is, a filled ellipse inscribed
                                      into the rectangle Rect(0, 0, esize.width, 0.esize.height)
                            – MORPH_CROSS - a cross-shaped structuring element:
                            – CV_SHAPE_CUSTOM - custom structuring element (OpenCV 1.x API)

        ksize –-结构元素大小

    2.int createTrackbar(const string& trackbarname, const string& winname, int* value, int count,
                TrackbarCallback onChange=0, void* userdata=0)


   代码:

        

#include "stdafx.h"
#include "opencv2/opencv.hpp"
#include <iostream>
#include <windows.h>

using namespace cv;
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	FreeConsole();
    //Read image
	Mat image;
	image= imread("F://Opencv_picture//s4.jpg");
	if(image.empty())
	{
	    cout<<"Cannot find or open image"<<endl;
		return -1;
	}

	//Create window
	namedWindow("Image", 0);
	//Create trackbar 
	int erosion_elem= 0;
	int erosion_size= 0;
	//创建腐蚀控制条
	createTrackbar("Element", "Image", &erosion_elem, 2);  
    createTrackbar("Kernel", "Image", &erosion_size, 21);
	while(true)
	{    
	     Mat dst;
		 
		 int erosion_type;
		 if(erosion_elem== 0)
		 {
		    erosion_type= MORPH_RECT;
		 }
		 else if(erosion_elem==1)
		 {
		    erosion_type= MORPH_CROSS;
		 }
		 else if(erosion_elem)
		 {
			  erosion_type= MORPH_ELLIPSE;
		 }

		 Mat element= getStructuringElement(erosion_type,
			                                                         Size(2* erosion_size+ 1, 2*erosion_size+ 1),
		   														     Point(erosion_size, erosion_size) );
		 //腐蚀操作
		 erode(image, dst, element);
		 //show image
		 imshow("Image", dst);
		 //wait untill user press any key
		 if(waitKey(33)== 27)
		 {
		     break;
		 }
	}
	return 0;
}

结果图:

  

   PS:忘了说明,控制条Elment[0, 2] 的是选择  【shape】,图中选的是1:MORPH_CROSS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值