![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
openCV
DIAJEY
这个作者很懒,什么都没留下…
展开
-
《基于opencv的机械零件部件特征的识别与检测》—阅读笔记
·opencv 数据访问方式访问方式有四种:原创 2020-10-30 19:58:44 · 4886 阅读 · 3 评论 -
openCV特征提取与检测(六)-- HOG特征检测算法
1.什么是HOG特征提取算法?Hog,即方向梯度直方图直方图就是数据分布的一种图形表现,类似于柱形图,每个柱形代表一组处于一定范围的数据。这些柱形也成为组(bins),柱形越高意味着某组数据越多以下图灰度图像为例像素值的范围在0-255之间,将这些值分为32组,每组包含8个像素值,所以第一组的范围是0-7,以此类推到248-255.要创建直方图,就是将该途中的各个像素值,放到对应的组里。而上图中的薄饼有很多亮值,背景则很黑,因此直方图大致如下:什么是方向梯度?方向很简单,指的就是图像梯度原创 2020-08-28 22:31:19 · 7578 阅读 · 1 评论 -
openCV特征提取与检测(五)-- SIFT算法
文章主要参考:https://blog.csdn.net/lingyunxianhe/article/details/79063547算法介绍SIFT算法步骤图像金字塔空间极值点检测关键点方向分配特征点描述符API即openCV应用1.算法介绍SIFT--尺度不变特征转换算法(Scale-invariant feature transform),通常用来侦测与描述影像中的局部性特征,在空间尺度中寻找极值点,并提取出其位置,尺度,旋转不变量。SIFT的应用范围包括物体识别,机器人感知原创 2020-08-28 09:06:54 · 1427 阅读 · 2 评论 -
open CV学习笔记(四)-- SURF特征检测
1.概述SURF–Speeded up Robust Features(加速稳健特征),是一种稳健的局部特征点检测和描述算法。算法的基本路程可以分为三大部分2.算法原理2.1、SURF特征检测步骤1.尺度空间的极值检测:搜索所有尺度空间上的图像,通过Hessian来识别潜在的对尺度和选择不变的兴趣点2.特征点过滤并进行精确定位3.特征方向赋值:统计特征点圆形领域内的Harr小波特征。即在60°扇形内,每次将60°扇形区域旋转0.2弧度进行统计,将值最大的哪个扇形的方向作为特征点的主方向4.原创 2020-08-27 22:08:10 · 1009 阅读 · 0 评论 -
openCV特征检测与提取(三)-- 自定义角点检测器
之前的角点检测器主要都是通过固定方法的API来实现的,而我们也可以用不同角点检测方法的原理和需求去制作角点检测的函数相关函数的介绍1.cornerEigenValsAndVecs()函数该函数用来求解输入图像矩阵的特征向量和特征值主要用来模拟Harris角点检测2.cornMinEigenVal()函数与第一个函数相似,但是它只计算相关矩阵的最小特征值,主要用来模拟Shi-Tomasi角点检测3.minMaxLoc()函数寻找输入矩阵中的最小值和最大值,并可以获得对应点的位置代码: .原创 2020-08-23 14:35:46 · 338 阅读 · 0 评论 -
openCV特征检测与提取(二)-- Shi-Tomasi角点检测
Shi-Tomasi角点检测Harris算法原始的定义是将矩阵M的行列式值与M的迹相减,再将差值同预先给定的阈值进行比较由于harris算法的稳定性和k值相关,因此在harris的基础上发现,角点的稳定性和矩阵M的较小特征值相关。即可以直接计算出矩阵M的特征值,用较小的特征值与阈值比较,大于阈值的则为角点Api说明:代码:#include<opencv2/opencv.hpp>#include<math.h>#include<iostream>u原创 2020-08-23 14:27:30 · 227 阅读 · 0 评论 -
openCV特征提取及检测(一)-- Harris角点检测
Harris角点检测人眼对角点的识别通常是通过一个局部的小窗口完成,如果在各个方向上移动该小窗口,且窗口内的灰度发生了较大的变化,则说明窗口内存在角点。·如果在某个方向移动,灰度几乎不变,说明是平坦区域·如果只延某一个方向移动,灰度几乎不变,说明是直线·如果延各个方向移动,灰度均发生变化,说明是角点。主要推导公式如下:在找出矩阵后,便可以找出矩阵的两个特征值,根据两个特征值的关系区分是否是角点以上是Harris定义角点响应函数,k为常验函数0.04-0.06.定义当R>thre原创 2020-08-23 14:21:45 · 321 阅读 · 0 评论 -
openCV小案例(六)-- 对象提取与测量
问题描述:给出一张用太空望远镜检测的星云图片,测算它的面积与周长注意事项:我们可能一开始想到的是二值化的方法,但是在二值化后,我们会得到下图,发现结果并不理想,很难取得轮廓或许可以通过膨胀操作将黑色部分填上,但是白色区域也势必会扩大,这样的话,测量的数据也不会准确。为了解决以上问题,我们可以先使用高斯模糊来降低噪点的影响,这样二值化后的图像也会相对比较好因为原图像的直方图会有单峰,因此可以尝试triangle的二值化阈值选择方法。代码:#include<opencv2/opencv原创 2020-08-09 01:16:23 · 281 阅读 · 0 评论 -
OpenCV小案例(五)-- 透视矫正
问题描述拍摄或扫描图像不是规则的矩形,会对后期处理产生不好的影响需要通过透视变换矫正得到正确形状解决思路:二值分割+形态学方法+霍夫直线变换+透视变换透视变换://透视变换//输入变换前的四个点坐标以及变换需要实现的四个点坐标,生成一个变换矩阵,然后使用此透视矩阵变换图形代码:#include<opencv2/opencv.hpp>#include<math.h>#include<iostream>using namespace cv;usin原创 2020-08-08 17:18:25 · 803 阅读 · 1 评论 -
OpenCV小案例(四)-- 对象计数
·问题描述有一张图片,计算图片中种子的数量主要需要解决的是如何将种子粘连的部分去掉,生成一个个独立的对象·解决方案1.二值化首先进行二值分割在进行对象计数时,推荐使用Triangle的方法来寻找阈值2.形态学–膨胀操作使用形态学的膨胀操作,可以细化图像对象之间的粘连区域但是对于一些粘连较强的部分,可能难以细化,可以留到后面解决3.距离变换距离变化可以找出各个对象的中心点,并且变现为亮点,有效找出各个对象4.自适应阈值算法根据图像不同区域亮度分布,计算其部分阈值,所以对于图像不原创 2020-08-01 18:17:45 · 767 阅读 · 0 评论 -
openCV小案例(一)-- 图像切边
旋转图形效果,旋转后按步骤一再处理一次即可#include<opencv2/opencv.hpp>#include<math.h>#include<iostream>using namespace cv;using namespace std;Mat src2;Mat src,dst,gray_src,temp,dst1;const char* output_win = "output_img";RNG rng(12345);int thr...原创 2020-07-19 00:52:45 · 472 阅读 · 1 评论 -
openCV学习笔记(十三)-- 图像分割
距离变换:distanceTransform方法用于计算图像中每一个非零点距离离自己最近的零点的距离,distanceTransform的第二个Mat矩阵参数dst保存了每一个点与最近的零点的距离信息,图像上越亮的点,代表了离零点的距离越远。https://blog.csdn.net/u012566751/article/details/54286391分水岭算法:分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相..原创 2020-07-15 23:59:26 · 948 阅读 · 1 评论 -
openCV学习笔记(十二)-- 图像矩,点多边形距离测试
图像矩点多边形距离测试1. 图像矩图像中心计算计算矩的API具体实现步骤再找出图像的中心质点后,可以在输出图像中画出来实现代码://图像矩 #include<opencv2/opencv.hpp>#include<math.h>#include<iostream>using namespace cv;using namespace std;Mat src,dst,gray_src,temp,dst1;const char*.原创 2020-07-10 23:26:31 · 556 阅读 · 0 评论 -
openCV学习笔记(十一)-- 模板匹配,轮廓操作
模板匹配轮廓发现及绘制轮廓1.模板匹配归一化后的模板匹配算法:在API中对应模板匹配算法的定义:模板匹配算法API:具体实现: //模板匹配 #include<opencv2/opencv.hpp>#include<math.h>#include<iostream>using namespace cv;using namespace std;Mat src,dst,gray_src,temp;int max_track .原创 2020-07-09 22:14:08 · 882 阅读 · 0 评论 -
openCV学习笔记(十)-- 直方图
1.什么是直方图?举个例子:2.直方图均衡化代码://先要将图像转换为灰度图像 cvtColor(src, gray_src, CV_BGR2GRAY); namedWindow("input_image", WINDOW_AUTOSIZE); namedWindow("output_Img", WINDOW_AUTOSIZE); imshow("input_image", gray_src); //直方图均衡化--一般用于提高图像对比度 equalizeHist原创 2020-07-08 22:42:35 · 177 阅读 · 0 评论 -
openCV学习笔记(九)-- 霍夫变换,像素重映射
1.霍夫直线检测·霍夫空间是一个极坐标空间·假设有N个点,我们要检测其中的直线,也就是我们要找到具体的r和theata。对于上面所说的每个点可以通过无数条直线,这里我们设为n条(通常 n = 180),则我们一起可以找到Nn个(r, theata),对这Nn个(r,theata),我们可以利用统计学,统计到在theta=某个值theta_i时,多个点的r近似相等于r_i。也就是说这多个点都在直线(r_i,theta_i)上。原文链接:https://blog.csdn.net/weixin_40196原创 2020-07-05 02:05:13 · 329 阅读 · 0 评论 -
openCV学习笔记(八)--卷积,边缘处理,边缘提取,边缘检测
1.自定义线性滤波–卷积卷积工作原理–即中心值根据周围定义大小邻域,从而计算成新值常见的卷积算子://Sobel算子--获取边缘比较强,用于边缘检测 Mat SX, SY; Mat sobel_x = (Mat_<int>(3, 3) << -1, 0, 1, -2, 0, 2, -1, 0, 1); filter2D(src, SX, -1, sobel_x, Point(-1, -1), 0.0); //imshow("sobel_x", SX); Ma原创 2020-07-04 00:02:54 · 1683 阅读 · 0 评论 -
openCV学习笔记(七)-- 图像采样、阈值切割
1.图像采样1.1图像金字塔1.2高斯金字塔的上、下采样//上采样--即金字塔从上向下,放大操作 pyrUp(src, upI, Size(src.cols * 2, src.rows * 2));//下采样--金字塔从下向上,缩小操作 pyrDown(src, downI, Size(src.cols / 2, src.rows / 2));1.3高斯不同//高斯不同,将两站不同程度高斯模糊后的图片相减--常用于边角检测 //1.先将图片灰度化 2.分别模糊 3.相减操作原创 2020-07-02 19:18:11 · 287 阅读 · 0 评论 -
openCV学习笔记(六)-- 图像形态学操作
1.膨胀与腐蚀原理:膨胀–扩大白色区,如果有小黑点干扰可以消掉腐蚀–扩大黑色区,如果有小白点可以消掉对应API:具体使用:erode(binImg, temp, hline);//最后一个参数时定义的元素结构dilate(temp, result, hline);2.开,闭,梯度,顶帽,黑帽操作开操作–去掉背景色中的其他颜色小点,去椒盐噪声。闭操作–去掉前景中的小点,”补小洞“。梯度操作–针对二值图,可以去掉填充部分得到轮廓线对应API:对应使用:Mat k.原创 2020-07-01 22:23:49 · 287 阅读 · 0 评论 -
openCV学习笔记(五)-- 模糊图像
图像模糊原理线性滤波—主要为均值滤波和高斯滤波高斯滤波考虑对应距离的权重值进行相加,均值则各处都一样非线性滤波–中值滤波和双边滤波与高斯滤波不同,双边滤波不仅仅考虑距离权重,海鲜定了像素值问题,因此可以考虑到轮廓具体使用://-------------图像模糊-------------- Mat ImageBlur, dst,gaosiBlur,mediaBlur,bilateralImage; ImageBlur = imread("C:/Users/18929/De原创 2020-06-30 22:51:47 · 251 阅读 · 0 评论 -
openCV学习笔记(四)-- 绘制基本形状和文字
1.绘制基本图形记住要全局声明,和在main函数中调用//绘制直线void MyLines() { //定义两个点 Point p1 = Point(20, 30); Point p2; p2.x = 300; p2.y = 300; Scalar color = Scalar(0, 0, 255);//定义直线颜色 //练成一条直线 line(bgImage, p1, p2, color, 1, LINE_8);//背景图片,点1,点2,线的颜色,线的宽度,线的类型(LINT_AA原创 2020-06-28 14:15:23 · 226 阅读 · 0 评论 -
openCV学习笔记(三)-- 图像操作
1.像素操作修改单/多通道像素值—取反操作Mat dst;dst.create(src.size(), src.type());int height = src_gray.rows;int width = src_gray.cols;int nc = src.channels();for (int row = 0; row < height; row++){ for (int col = 0; col < width; col++) { //转换为灰度图像后,变原创 2020-06-28 12:50:58 · 309 阅读 · 0 评论 -
openCV学习笔记(二)-- Mat对象和基本使用(掩膜操作)
1.获得像素指针saturate_cast函数:2.掩码操作 – 实现提高图像对比度原理:具体代码实现:Mat src, dst; src = imread("C:/Users/18929/Desktop/博客项目/项目图片/01.jpg"); if (!src.data) { printf("could not load image...\n"); return -1; } namedWindow("input_image", CV_WINDOW_AUTOSIZE); im原创 2020-06-28 01:40:49 · 603 阅读 · 2 评论 -
OpenCV学习笔记(一)-- 基础流程
1.下载,安装,配置openCV1.1.https://blog.csdn.net/qq_39407482/article/details/881367561.2.https://www.jianshu.com/p/77c5a0cac78a1.3.测试代码:#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;int main(int argc, char** argv) { Mat原创 2020-06-27 22:10:52 · 241 阅读 · 0 评论