![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OPENCV学习记录
HarwardWu
Automation Engineer/ROS/PCL/Robotics/Industrial4.0
展开
-
OpenCV-学习历程33 - 基于距离变换与分水岭的图像分割
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。1.距离变换和分水岭分割原理2.距离变换和分水岭分割--处理流程2.代码实现#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace ...原创 2021-03-16 23:03:31 · 183 阅读 · 0 评论 -
OpenCV-学习历程32 - 点多边形 (判断点是否在多边形内部/边缘/外部)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.原理:二.代码:#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespace cv;int main(int argc, char** argv) { ...原创 2021-03-16 09:15:16 · 403 阅读 · 0 评论 -
OpenCV-学习历程31 - 图像矩(Image Moments)(计算图像中某一特征进行度量-中心位置,直径,圆心等)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.原理:二.代码#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespace cv;Mat src, gray_src;int threshold_va...原创 2021-03-16 08:44:31 · 489 阅读 · 0 评论 -
OpenCV-学习历程30 - 轮廓周围绘制矩形和圆形框 (主要关注:如何减少多边形顶点数的API)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.原理:二.代码展示:#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespace cv;Mat src, gray_src, drawImg;i...原创 2021-03-16 07:43:08 · 219 阅读 · 0 评论 -
OpenCV-学习历程29 -凸包 Convex Hull
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 凸包原理(Convex Hull):-> OpenCV 已经封装了凸包程序,直接调用即可。二.代码实现#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using n...原创 2021-03-16 07:05:54 · 192 阅读 · 0 评论 -
OpenCV-学习历程28 - 轮廓发现(find contour in your image)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 轮廓发现原理:二.代码展示#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespace cv;/*This project is to do the ..原创 2021-03-16 03:54:26 · 347 阅读 · 0 评论 -
OpenCV-学习历程27 - 模板匹配(Template Match)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.模板匹配原理: (实际上就是使用模板图片,在目标图像中,寻找与模板图片最为相似的地方)二. 模板匹配相关API(建议使用归一化的方法)二. 代码实现#include <opencv2/opencv.hpp>#include <iostream>#include <math.h...原创 2021-03-16 02:39:43 · 494 阅读 · 0 评论 -
OpenCV-学习历程26- 直方图反向投影
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。注: 直方图反向投影暂时不清楚作用,待以后用到这个内容再进行完善。一.原理:二.代码实现:#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespac...原创 2021-03-16 00:44:15 · 115 阅读 · 0 评论 -
OpenCV-学习历程25- 直方图比较(衡量两个图像/或者图像中的某个区域的相似情况)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 直方图比较方法原创 2021-03-13 08:35:00 · 605 阅读 · 0 评论 -
OpenCV-学习历程24- 直方图计算(直方图概念等)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.直方图概念二.直方图主要API的内容三.代码测试#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;//测试使用OpenCV自带的HoughLineP提取图像边缘...原创 2021-02-27 09:11:01 · 148 阅读 · 0 评论 -
OpenCV-学习历程23- 直方图1- Histogram(什么是直方图?直方图均衡化equalHist-提高对比度,显示更多细节)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.什么是直方图(不同数据出现的频次):二.直方图均衡化(提高对比度,提高细节):三.代码实现:#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;//测试使用Op...原创 2021-02-27 07:19:10 · 252 阅读 · 0 评论 -
OpenCV-学习历程22-像素重映射(cv::remap)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 像素重映射(把像素按照一定的规则重新排列):二. 像素重映射(API):三. 代码实现:#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;//测试使用OpenCV自带的H...原创 2021-02-27 05:12:58 · 370 阅读 · 0 评论 -
OpenCV-学习历程21- 霍夫变换2-圆检测(HoughCircles)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.霍夫圆检测原理:二.霍夫圆检测API: 三.代码实现:#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;//测试使用OpenCV自...原创 2021-02-27 04:00:42 · 385 阅读 · 0 评论 -
OpenCV-学习历程20- 霍夫变换1-直线检测(HoughLineP Transform)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.霍夫直线变换介绍:一.霍夫直线变换介绍:...原创 2021-02-27 00:46:40 · 397 阅读 · 0 评论 -
OpenCV-学习历程19- Canny边缘检测(Canny算法介绍+API)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.Canny边缘检测算法介绍: 注意: 以下5步为Canny边缘检测的理论实现过程,在OpenCV中,这5步已经被封装成了一个函数,可以直接调用。 第一部分的内容只做原理解释。二.Canny边缘检测API:三.Canny边缘检测代码实现:#include <opencv...原创 2021-02-27 00:40:41 · 477 阅读 · 0 评论 -
OpenCV-学习历程18- Laplacian算子(通过二阶导求图像边缘)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。重要!!! Sobel算子是通过一阶导数求解边沿,laplace是通过二阶导求边缘一. Laplacian算子理论(知道原理,知道使用场景即可):二. Laplacian算子的API及流程:三. 重要!!使用Laplacian算子的过程,代码演示#include <opencv2/opencv.hpp>#include <...原创 2021-02-26 10:37:42 · 461 阅读 · 0 评论 -
OpenCV-学习历程17- Sobel算子(应用及边缘提取)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 卷积应用-图像边缘提取:如下图:图像内部的边缘主要是强度相差比较大的地方,在图像边缘处,导数能够取到最大。 二. Sobel算子的API:三. 重要!!使用Sobel算子的过程,代码演示 高斯平滑降噪->图片转灰度->求XY方向的梯...原创 2021-02-26 09:20:56 · 553 阅读 · 0 评论 -
OpenCV-学习历程16- 边缘处理(卷积边缘处理-处理卷积运算后,没有被处理到的图片边缘像素)(API名称为:copyMakerBorder)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。基于“学习历程15”,在使用Filter2D与卷积算子对图片进行卷积处理时,图片边缘的像素无法被处理到,本学习历程就是要处理这些没有被处理到的图片边缘像素。原因是:边缘像素,没有与卷积核重合 ...原创 2021-02-26 06:01:38 · 738 阅读 · 0 评论 -
OpenCV-学习历程15- 自定义线性滤波(包含卷积的概念)(Robert+Sobel+laplace算子+自定义模糊算子)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 卷积概念: 卷积核(也称为卷积算子)的概念: 卷积核Kernel实际上就是一个固定大小的矩阵数组,中心称为锚点; 一般卷积核的维数是单数(一般是3x3或者5x5 的矩阵数组)。 图像卷积处理: 就是将卷积核的锚点(中心点),与二维图像的每一个像素重合,然后卷积核的每一个数...原创 2021-02-26 04:50:56 · 335 阅读 · 0 评论 -
OpenCV-学习历程14- 基本阈值操作 (设置限制值,操作不同深度的像素)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 图像阈值 1 定义: 其实就是将图像进行分割的标尺。 2 阈值类型 1(阈值二值化/反二值化) 这个阈值类型: 大于某个值,设为0或1; 小于的设为相反的值。 ...原创 2021-02-22 10:19:31 · 640 阅读 · 0 评论 -
OpenCV-学习历程13- 图像上采样及降采样+图像金字塔概念+DOG
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 图像金字塔概念 概念如下图:最重要的性质是:通过图像金字塔进行上采样或者降采样,图像的特征信息不变。 图像金字塔种类: 包括高斯金字塔(降采样用)和拉普拉斯金字塔(根据图片上层降采样图片,重建一张图片)。 ...原创 2021-02-22 08:42:33 · 180 阅读 · 0 评论 -
OpenCV-学习历程12- 形态学操作应用(提取水平与垂直线)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一. 原理方法二. 代码实现#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;/************************************ 形态...原创 2021-02-22 05:32:20 · 184 阅读 · 0 评论 -
OpenCV-学习历程10/11- 形态学操作(开操作/闭操作/形态学梯度/顶帽/黑帽)(!主要是用于二值化图像进行处理)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。注意! 形态学操作虽然是由简单的膨胀和腐蚀组合而成,实际上OPENCV有统一的形态学操作API可以使用 。 ->形态学操作调用这个API就好一.开操作(先腐蚀后膨胀) 作用:去除一些小的缺陷。 原理:首先用腐蚀去掉一些小的缺陷对象,然后使用膨胀,将被腐蚀掉的有用信息复原。 ...原创 2021-02-22 03:46:02 · 405 阅读 · 0 评论 -
OpenCV-学习历程8- 图像模糊1(基础知识,中值模糊,高斯模糊)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.图像模糊原理 模糊功能:消除噪声,取边缘之前使用。 公式内: f()原图像,h()卷积核/掩膜 ...原创 2021-02-21 21:51:06 · 245 阅读 · 0 评论 -
OpenCV-学习历程7- 在图片上绘制形状与文字(cv::Point/cv::Scalar) (圆,矩形,直线,随机直线,文字)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.OpenCV 中(cv::Point/cv::Scalar)API ...原创 2021-02-21 09:44:25 · 251 阅读 · 0 评论 -
OpenCV-学习历程6- 图像亮度和对比度(理论+代码)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.图像亮度和对比度原理 图像变换包括像素变换和邻域变换:像素变换: 对像素点进行操作,调整亮度和对比度就是对点进行操作。 邻域操作: 对图像进行整体操作,例如求卷积或者求掩膜(mask计算)。 下图中包含了调整像素亮度的公式: f(i,j)代表像素点,α代表增益(最终结果越靠近255越亮); !α->对比度增益; β...原创 2021-02-21 07:52:21 · 458 阅读 · 0 评论 -
OpenCV-学习历程5- 线性混合操作(将两张图片融合在一起)(理论+代码)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。一.线性组合原理线性混合就是,对两幅图像 f0(x)和 f1(x)或两段视频(同样为(f0(x)和f1(x))产生时间上的画面叠化(cross-dissolve)效果,就像幻灯片放映和电影制作中的那样。函数表示为。 不同的像素采用不同的权重(在API中,alpha和beta对应着两幅图像的权重,gamma是校验值) Saturate这个函数,确保图像的灰度范围不会超过0..原创 2021-02-21 06:47:11 · 664 阅读 · 0 评论 -
OpenCV-学习历程4- 读取图像/读取像素/修改像素值方法(包含灰度+rgb图像像素处理方式)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(int argc, char**argv) { //Step1 读取图片 Mat src; src = imread("sample.jpg").原创 2021-02-21 04:43:31 · 1321 阅读 · 0 评论 -
OpenCV-学习历程3-Mat对象及相关方法 (如何初始化图像,拷贝图像,获取像素强度值等)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。Mat类型的使用方法#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(int argc, char**argv) { //Mat1. 创建Mat对象,并且从文件中读取图片显示 Mat sr..原创 2021-02-21 03:22:46 · 505 阅读 · 0 评论 -
OpenCV-学习历程2-矩阵掩膜操作(mask)+Kernal+filter2D+getTickCount (时间统计)
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace cv;int main(int argc, char** argv) { //Step1 读取图片 Mat src, dst; src = imread("..原创 2021-02-20 23:50:19 · 201 阅读 · 0 评论 -
OpenCV-学习历程1-图片文件-加载,修改,保存
OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。原创 2021-02-20 21:59:48 · 105 阅读 · 0 评论