opencv2.0 常见函数

图片读取,显示,保存,窗口操作

Mat m_oriImage = imread(m_filePath); 		//读取文件
imwrite(m_fileName, m_oriImage);			//保存文件
imshow(''123'', m_oriImage);				//显示文件
namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE);	//创建窗口,WINDOW_AUTOSIZE表示窗口自适应图片大小,WINDOW_NORMAL表示窗口大小可以改变,WINDOW_OPENGL表示窗口支持OpenGL
destroyWindow("123");			//销毁指定窗口
destroyAllWindows();			//销毁所有窗口

图片色彩空间操作

	Mat GrayImage;
	cvtColor(OriImage, GrayImage, CV_BGR2GRAY);	//RGB转灰度
	Mat BinImage;
	threshold(GrayImage, BinImage, 30, 200.0, CV_THRESH_BINARY);  //灰度图二值化

图像像素点遍历

	for (int iRow = 0; iRow < OriImage.rows; iRow++)
	{
		uchar* data = OriImage.ptr<uchar>(iRow);
		for (int iCol = 0; iCol < OriImage.cols; iCol++)
		{
			data[3 * iCol];
			data[3 * iCol + 1];
			data[3 * iCol + 2];
		}
	}

轮廓提取

	Mat grayImage;
	cvtColor(m_oriImage, grayImage, CV_BGR2GRAY);
	
	vector<vector<Point>> contours; //定义轮廓
	vector<Vec4i> hierarchy; //定义层次结构
	findContours(grayImage, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE); //查找轮廓,输入必须为单通道图像

	Mat ContourImage = Mat(grayImage.rows, grayImage.cols, CV_8UC3, Scalar::all(255));
	Scalar color(0, 0, 255);
	drawContours(ContourImage, contours, -1, color, 4, 8, hierarchy); //绘制轮廓,参数-1表示绘制所有轮廓
	
	//函数解析
	[findcontours函数详解](https://blog.csdn.net/keith_bb/article/details/70185209)
	常用参数:
	参数4表示轮廓检索模型CV_RETR_EXTERNAL表示只检测最外层轮廓,CV_RETR_LIST表示提取所有轮廓;
	参数5表示轮廓检测方法,CV_CHAIN_APPROX_NONE表示获取轮廓的每个像素,相邻的两个点的像素误差不超过1;

形态学运算

//腐蚀(erode)和膨胀(dilate)是对于白色部分(高亮部分)而言的;
腐蚀是对于原图中高亮部分进行腐蚀,效果图比原图有更小的高亮部分,腐蚀即求解局部最小值,计算核覆盖区域像素点的最小值;
膨胀是对于原图中高亮部分进行膨胀,效果图比原图有更大的高亮部分,膨胀即求解局部最大值,计算核覆盖区域像素点的最大值
//膨胀
Mat element = getStructuringElement(MORPH_RECT, Size(15,15));	//获取自定义核,MORPH_RECT表示矩形,MORPH_CROSS表示交叉形,MORPH_ELLIPSE表示椭圆
dilate(inPut, outPut, element);
//腐蚀
Mat element = getStructuringElement(MORPH_RECT, Size(15,15));	//获取自定义核,MORPH_RECT表示矩形,MORPH_CROSS表示交叉形,MORPH_ELLIPSE表示椭圆
erode(inPut, outPut, element);
//开运算,先腐蚀后膨胀,可以消除小的高亮区域
dst = open(src, element);	//等价于dilate(erode(src,element))
//闭运算,先膨胀后腐蚀,可以消除小的低亮区域
dst = close(src, element);	//等价于erode(dilate(src,element))
//形态学梯度,膨胀与腐蚀之差,用于保留物体的边缘轮廓
dst = morph-grad(src, element);		//等价于dilate(src,element) - erode(src,element)
//顶帽(礼帽),原图与开运算之差
dst = tophat(src, element);	//src-open();
//黑帽,闭运算和原图之差
dst = blackhat(src, element);	//close-src

基本图形绘制

line();		//绘制直线
ellipse(); 	//绘制椭圆
rectangle();	//绘制矩形
circle();		//绘制圆形
fillPoly();		//绘制填充的多边形
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV中,回调函数是一种通过函数指针调用的函数,用于对事件或条件进行响应。在使用OpenCV时,可以使用回调函数来处理鼠标事件、键盘事件等。例如,在上述提供的代码中,onMouse函数就是一个回调函数,用于处理鼠标左键按下事件。当鼠标左键按下时,该函数会输出鼠标点击位置的像素值。 回调函数OpenCV中的应用很广泛,特别是在结合图像处理和用户交互时非常有用。通过定义自己的回调函数,可以实现各种各样的事件处理逻辑,只要符合OpenCV的回调函数的格式即可。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [opencv回调函数](https://blog.csdn.net/hanshuobest/article/details/51320249)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [OPENCV回调函数](https://blog.csdn.net/PINBODEXIAOZHU/article/details/41809301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值