
opencv
weixin_kk
这个作者很懒,什么都没留下…
展开
-
opencv入门九,图像矩, 点多边形测试, 基于距离变换与分水岭的图像分割
图像矩moments(InputArray array,//输入数据bool binaryImage=false // 是否为二值图像)面积contourArea(InputArray contour,//输入轮廓数据bool oriented// 默认false、返回绝对值)弧长arcLength(InputArray curve,//输入曲线数据bool closed// 是否是封闭曲线)过程:提取图像边缘发现轮廓计算每个轮廓对象的矩计算每个对象原创 2020-05-27 19:13:58 · 290 阅读 · 0 评论 -
opencv入门八, 获取轮廓, 获取轮廓凸包,画出外接矩形或者外接圆
获取图片轮廓在二值图像上发现轮廓使用API cv::findContours(InputOutputArray binImg, // 输入图像,非0的像素被看成1,0的像素值保持不变,8-bit OutputArrayOfArrays contours,// 全部发现的轮廓对象OutputArray, hierachy// 图该的拓扑结构,可选,该轮廓发现算法正是基于图像拓扑结构实现。int mode, // 轮廓返回的模式int method,// 发现方法Point offse原创 2020-05-26 18:22:50 · 1050 阅读 · 0 评论 -
opencv入门七 直方图比较,直方图反向投影, 模板匹配
直方图比较对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。Opencv提供的比较方法有四种:Correlation 相关性比较Chi-Square 卡方比较Intersection 十字交叉性Bhattacharyya distance 巴氏距离步骤:首先把图像从RGB色彩空间转换到HSV色彩空间cvtColor计算图像的直方图,然后归一化到[0~1]之间calcHist和n原创 2020-05-25 17:21:33 · 224 阅读 · 0 评论 -
霍夫变换(主要说明检测直线及圆的原理)
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。最基本的霍夫变换是从黑白图像中检测直线(线段)。一、直线检测1.直线的表示方式对于平面中的一条直线,在笛卡尔坐标系中,常见的有点斜式,两点式两种表示方法。然而在hough变换中,考虑的是另外一种表示方式:使用(r,theta)来表示一条直线。其中r为该直线到原点的距离,theta为该直线的垂线与x轴的夹角。如下图所示。也就是霍夫变换中表示一条直线转载 2020-05-22 17:24:53 · 957 阅读 · 0 评论 -
opencv入门六,霍夫圆检测、像素重映射、直方图均衡、直方图计算
霍夫圆检测因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波。基于效率考虑,Opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为两步:1. 检测边缘,发现可能的圆心2. 基于第一步的基础上从候选圆心开始计算最佳半径大小HoughCircles(InputArray image, // 输入图像 ,必须是8位的单通道灰度图像OutputArray circles, // 输出结果,发现的圆信息Int method, // 方法 - HOUGH_GRADIENTDouble dp原创 2020-05-22 17:14:56 · 241 阅读 · 0 评论 -
opencv入门五,边缘检测算法, 霍夫变换直线检测
Sobelcv::Sobel (InputArray Src // 输入图像OutputArray dst// 输出图像,大小与输入图像一致int depth // 输出图像深度. Int dx. // X方向,几阶导数int dy // Y方向,几阶导数. int ksize, SOBEL算子kernel大小,必须是1、3、5、7、double scale = 1double delta = 0int borderType = BORDER_DEFAULT)Scharrcv原创 2020-05-21 17:14:09 · 806 阅读 · 0 评论 -
opencv入门四:图像金字塔,高斯差分,归一化函数,边缘填充
图像金字塔:高斯金字塔 – 用来对图像进行降采样拉普拉斯金字塔 – 用来重建一张图片根据它的上层降采样图片高斯金字塔是从底向上,逐层降采样得到。降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。高斯金子塔的生成过程分为两步:对当前层进行高斯模糊删除当前层的偶数行与列即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。上采样与降采样上采样,生成图像是原图在宽高各放大两倍pyrUp(Mat src, Mat原创 2020-05-19 16:54:55 · 867 阅读 · 0 评论 -
Opencv Mat类成员函数详解
Mat::eye返回一个恒等指定大小和类型矩阵。C++: static MatExpr Mat::eye(int rows, int cols, inttype)C++: static MatExpr Mat::eye(Size size, int type)参数rows –的行数。cols– 的列数。size –替代矩阵大小规格Size(cols, rows)的方法。type – 创建的矩阵的类型。该方法返回 Matlab 式恒等矩阵初始值设定项,类似 Mat::zeros()和 Mat转载 2020-05-19 16:08:33 · 1249 阅读 · 0 评论 -
归一化函数normalize
1、函数原型:void normalize(InputArray src,OutputArraydst, double alpha = 1, double beta = 0, intnorm_type = NORM_L2, int dtype = -1, InputArray mask = noArray() )参数说明:src——输入数组dst——输出数组,支持原地运算alpha——range normalization模式的最小值beta ——range normalization模式的最大转载 2020-05-19 14:15:15 · 2857 阅读 · 0 评论 -
opencv入门三:平滑滤波、形态学操作、二值化图像
线性滤波:均值滤波blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1, -1));高斯滤波GaussianBlur(Mat src, Mat dst, Size(xradius, yradius), sigmax, sigmay);其中Size(x, y), x,y必须是正数且为奇数非线性滤波:中值滤波medianBlur(Mat src, Mat dst, ksize);ksize的值必须大于0且为奇数双边滤波:保存边缘原创 2020-05-18 17:47:02 · 749 阅读 · 0 评论 -
opencv入门2
提取点的像素值(单通道)gray_image.at(row, col);取反gray_image.at(row, col) = 255 - gray;提取点的像素值(3通道)int b = dst.at(row, col)[0];int g = dst.at(row, col)[1];int r = dst.at(row, col)[2];取反dst.at(row, col)[0] = 255 - b;dst.at(row, col)[1] = 255 - g;dst.at(row,原创 2020-05-17 16:33:36 · 160 阅读 · 0 评论 -
opencv入门学习1
1.图像加载图像 imread(“路径”,-1原图/0灰度图/1RGB图)修改图像 cvtColor (输入图像,输出图像,色域转换)从一个色彩空间转换到另一色彩空间,COLOR_BGR2HLS、 COLOR_BGR2GRAY保存图像 imwrite(保存路径,输入图像)2.矩阵掩模获取图像像素指针Cv_Assert(mylmage depth()==CV 8U);● Mat.ptr(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数。●获得当前行指针Mat myIma原创 2020-05-16 19:06:07 · 208 阅读 · 0 评论