opencv-形态处理

opencv-形态处理

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

开运算 (Opening)

  • 原理摘自:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.html

  • 开运算是通过先对图像腐蚀再膨胀实现的。

    dst = open( src, element) = dilate( erode( src, element ) )

  • 可以排除小团块物体(如果物体较背景明亮)

  • 请看以下。左图是原图像,右图是採用开运算转换之后的结果图。

    观察发现字母拐弯处的白色空间消失。

  • opencv-形态处理opencv-形态处理

闭运算(Closing)

  • 闭运算是通过先对图像膨胀再腐蚀实现的。

    dst = close( src, element ) = erode( dilate( src, element ) )

  • 可以排除小型黑洞(黑色区域)。

    opencv-形态处理opencv-形态处理

形态梯度(Morphological Gradient)

  • 膨胀图与腐蚀图之差

    dst = morph_{grad}( src, element ) = dilate( src, element ) - erode( src, element )

  • 可以保留物体的边缘轮廓,例如以下所看到的:

    opencv-形态处理opencv-形态处理

顶帽(Top Hat)

  • 原图像与开运算结果图之差

    dst = tophat( src, element ) = src - open( src, element )

    opencv-形态处理opencv-形态处理

黑帽(Black Hat)

  • 闭运算结果图与原图像之差

    dst = blackhat( src, element ) = close( src, element ) - src

    opencv-形态处理opencv-形态处理

  • 代码:
  • // ConsoleApplication3_6_23.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;Mat src,dst;int pro_elem = 0;int pro_size = 0;int pro_operator = 0;const int max_elem = 2;const int max_size = 21;const int max_operator = 4;char* windowName = "Demo";void Image_pro(int,void*);int _tmain(int argc, _TCHAR* argv[]){	src = imread("hwl.jpg");	if(!src.data)		return -1;	namedWindow(windowName,CV_WINDOW_AUTOSIZE);	createTrackbar("Operator:\n 0:opening-1:closing-2:gradient-3:Top Hat-4:	Black Hat",		windowName,&pro_operator,max_operator,Image_pro);	createTrackbar("Element:\n 0:Rect-1:Cross-2:Ellipse",		windowName,&pro_elem,max_elem,Image_pro);	createTrackbar("Kernel size:\n 2n+1",		windowName,&pro_size,max_size,Image_pro);		Image_pro(0,0);	waitKey(0);	return 0;}void Image_pro(int,void*){	int operation = pro_operator + 2;	Mat  element = getStructuringElement(pro_elem,Size(2*pro_size+1,2*pro_size+1),		Point(pro_size,pro_size));	morphologyEx(src,dst,operation,element);	imshow(windowName,dst);}

版权声明:本文博主原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117126.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 树莓派是什么 树莓派能做什么 树莓派的功能用途

    树莓派是什么 树莓派能做什么 树莓派的功能用途阿里云官方镜像源:https://developer.aliyun.com/mirror/?utm_content=g_1000304579树莓派是指RaspberryPi,是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。随着Windows10IoT的发布,我们也将可以用上运行Windows的树莓派。下面小编给大家介绍一下“树莓派是什么树莓派能做什么树莓派的功能用途”1.树莓派是什么树莓派是指RaspberryPi,是为学习计算机编程

  • 集合和数组的相互转换

    集合和数组的相互转换集合和数组相互转换很多时候API的方法只支持集合或数组,比如适配器类中的数据只支持集合,这时候我们就要把数组转换集合。

  • ubuntu安装nginx教程_ubuntu服务器安装教程

    ubuntu安装nginx教程_ubuntu服务器安装教程ubuntu系统安装nginx

  • java事务_Java 事务详解[通俗易懂]

    java事务_Java 事务详解[通俗易懂]一、事务(1)事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。(2)事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(atomicity)。一个事务是一个不可分割的工作单位。比如A向B转账1000元,那么这就一定要保证原子性(要么同时成功,要么同时失败)。一致性…

    2022年10月13日
  • matlab中误差计算公式_mse均方误差计算公式

    matlab中误差计算公式_mse均方误差计算公式残差平方和(SSE)计算公式:代码实现:sse=sum((YReal-YPred).^2);均方误差(MSE)计算公式:代码实现:mse=sqrt(sum((YReal-YPred).^2))./2;平均绝对误差(MAE)计算公式:代码实现:mae=mean(abs(YReal-YPred));平均绝对百分比误差(MAPE)计算公式:代码实现mape=mean(abs((YReal-YPred)./YReal));均方根误差(R

  • java如何打印菱形_java实现空心菱形

    java如何打印菱形_java实现空心菱形第一步:首先对图像进行解析想要打印如图所示的形状经过简单分析之后可得出想要打印该图形必须要进行多层循环嵌套分两个部分进行打印第一部分为上半部分前四行他们是递增的关系后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环。并且由于“*”位置的关系我们必须带入空格同时打印所以每个部分需要两个循环控制,即两个大循环每个里面嵌套两个小循环总计四个循环。第二部:对数字进行分析在分析之前我们必…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号