opencv入门学习第一章,对图像基本的操作(图像腐蚀、图像模糊、canny图像边缘检测)
来源:互联网 发布:远程桌面连接软件 编辑:程序博客网 时间:2024/05/22 01:42
一、图像腐蚀
图像腐蚀用到的函数是erode。erode的原函数:
void erode(const Mat& src, Mat& dst, const Mat& element, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue());
参数:
src:原图像
dst: 目标图像
element:腐蚀操作的内核。默认为一个3x3的矩阵。在指定其形状时可以使用函数getStructuringElement();
anchor:默认为Point(-1,-1),内核中心点。
iterations:腐蚀次数,默认为1
borderType:推断为边缘类型,具体可见borderInterpolate函数,默认为BORDER_DEFAULT,省略时为默认值。
borderValue:边缘值,具体可参见createMorphoogyFilter函数。可省略。
调用代码:
int main(){Mat src = imread("tu.jpg");imshow("tu", src);Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));Mat dst;erode(src, dst, element);imshow("tutu", dst);waitKey(0);return 0;}代码中有生成图像处理内核element的代码,代码中调用了函数getStructuringElement(),下面是该函数的原函数
Mat getStructuringElement(int Shape, Size esize, Point anchor = Point(-1,-1));
参数:
shape:内核形状,主要有MORPH_RECT,MORPH_CROSS和MOPRPH_ELLIPSE,分别为矩形、椭圆形和十字交叉型,对应的数值也分别为0,1,2
esize:内核大小
anchor:内核锚点,默认为内核中心点。
二、图像模糊
在这里调用的是低通滤波blur函数,其作用是;blur的作用是对输入的图像src进行均值滤波后用dst输出。
函数原型:
void blur(InputArray src, OutArray dst, Size ksize, Point anchor = Point(-1,-1),int borderType = BORDER_DEFAULT)
参数;
src: 输入图像
dst: 输出图像
ksize:表示内核的大小一般为Size(w,h)表示内核尺寸,w为像素宽度,h为像素高度)。
anchor:内核的锚点(被平滑的点),默认值为(-1,-1)标识取内核中心为锚点。
borderType:用于推断图像外部像素的某种边界模式,可省略。
样例代码:
#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){Mat src = imread("tu.jpg");imshow("haha", src);Mat dst;blur(src, dst, Size(6, 6));imshow("key", dst);waitKey(0);return 0;}三、canny图像边缘检测
图像的边缘检测原理是检测出图像中所有灰度变化较大的点,而且这些点连接起来就形成了若干条线条,这些线条就是图像的边缘。
函数原型:
void Canny(const CvArr* src, CvArr* dst, double threshold1, double threshold2, int aperture_size = 3);
src:第一个参数标识输入的图像,必须为单通道灰度图。
dst:第二个参数表示输出的边缘图像,为单通道黑白图。
第三个参数和第四个参数表示阈值,这二个阈值中当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割即如果一个像素的梯度大与上限值,则被认为是边缘像素,如果小于下限阈值,则被抛弃。如果该点的梯度在两者之间则当这个点与高于上限值的像素点连接时我们才保留,否则删除。
第五个参数表示算子区域的大小
代码:
int main(){Mat src = imread("tu.jpg");imshow("haha", src);Mat dst, edge, gray;dst.create(src.size(), src.type());cvtColor(src, gray, COLOR_BGR2GRAY);blur(gray, edge, Size(3, 3));Canny(edge, edge, 3, 9, 3);imshow("final", edge);waitKey(0);return 0;}
- opencv入门学习第一章,对图像基本的操作(图像腐蚀、图像模糊、canny图像边缘检测)
- 图像腐蚀,模糊,canny边缘检测,opencv中摄像头捕捉的图像
- opencv3学习之图像显示及腐蚀/模糊/Canny边缘检测的处理
- OpenCV图像边缘检测(Canny算法)
- 【OpenCV学习笔记】2.3图像的腐蚀、膨胀、模糊、边缘检测
- iOS-Opencv 基础学习四(对图片进行图像模糊处理blur、边缘处理Canny)
- 【OpenCV】图像的变换(三)-Canny边缘检测
- OpenCV 3学习笔记(三) 对图像进行Canny边缘检测
- opencv3_java 图像的边缘检测Canny Canny
- 【OpenCV学习笔记 004】 图像的缩放、Canny边缘检测和图像的二值化
- Opencv对图像做边缘检测——canny算子
- 使用OpenCV对图像作边缘检测(Canny、Sobel、Laplace)
- [Opencv入门笔记] 写图像—Canny边缘检测
- 图像基本变换---Canny边缘检测算法
- [学习opencv]图像sobel、laplacian、canny边缘检测
- opencv图像边缘检测Canny算子的总结分析
- 灰度图像--图像分割 Canny边缘检测
- 图像处理------Canny边缘检测
- Python正则表达式基本字符集
- 读《书架》
- (超详细)读取mnist数据集并保存成图片
- HDU 1814(染色)
- String类的基本特点
- opencv入门学习第一章,对图像基本的操作(图像腐蚀、图像模糊、canny图像边缘检测)
- java声明子类时,静态语句块、实例代码块、构造器方法这3者的调用顺序
- 复合文档格式(一)- Excel XLS文件格式
- 奇数阶幻方(幻方)
- 菜鸟先飞之JAVA_Object类
- 使用Jenkins构建Maven项目
- [leaflet] esri-leaflet(一):初识leaflet
- Hadoop伪分布式环境搭建
- hdu1151最小路径覆盖