
虹麟君的OpenCV学习笔记
文章平均质量分 61
虹麟君的OpenCV学习笔记
虹麟君
用软件让生活变得更简单
展开
-
第34课 基于距离变换与分水岭的图像分割
文章目录1. 什么是图像分割2. 距离变换与分水岭变换简介2.1 距离变换2.2 分水岭变换3. 相关API3.1 distanceTransform()3.2 cv::watershed()4.处理流程5.例程1. 什么是图像分割图像分割(Image Segmentation)是图像处理最重要的处理手段之一图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个...原创 2021-05-18 09:04:20 · 478 阅读 · 0 评论 -
openCV 3A算法示例
//一、AWE 自动曝光://1.灰度世界法#if 0#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(){ Mat g_srcImage, dstImage; vector<Mat> g_vChannels; g_srcImage = imread("W:/sources/openc..原创 2021-05-08 17:59:23 · 536 阅读 · 1 评论 -
VS Code + OpenCV 开发环境配置(Mac)
目录文章目录目录前言一、tasks.json二、c_cpp_properties.json三、launch.json四、main.cpp前言为了方便以后在Mac上配置VS Code + Open CV的开发环境,也为了以后在VS code上添加第三方库做一些启发,所以将这次配置成功的相关文件记录下来 。如何使用Vs code在Mac上开发C++可以参考下面的链接:VS code Clang on Mac 官方文档说明后面就是VS code开发openCV所使用的相关配置文件。一、tas原创 2021-05-03 18:47:32 · 1500 阅读 · 0 评论 -
第1课 OpenCV简介与开发环境的配置
@第一课第一课OpenCV介绍与环境介绍课程视频链接1. OpenCV介绍OpenCV是一种计算机视觉开源库,主要算法涉及图像处理和机器学习相关方法。1.1 Conceptual Structure1.2 核心模块1. HighGUI部分2. Image Process(重点)3. 2D Feature4. Camera Calibration and 3D reconst...原创 2020-01-06 11:37:23 · 625 阅读 · 8 评论 -
第2课 加载、修改和保存图像
第二课 加载、修改和保存图像课程视频链接加载图像 (cv::imread,cv::namedWindos,cv::imshow)修改图像 (cv::cvtColor)保存图像 (cv::imwrite)代码历程原创 2020-01-15 11:06:15 · 215 阅读 · 0 评论 -
第11课 形态学操作之腐蚀与膨胀
目录图像形态学操作(morphology operator)膨胀腐蚀相关API生成结构元素B,即kernel膨胀腐蚀动态调整结构元素大小课程视频链接图像形态学操作(morphology operator)定义: 图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学。形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段...原创 2020-02-04 21:40:17 · 330 阅读 · 0 评论 -
第12课 形态学操作之开、闭、梯度、顶帽和黑帽操作
目录1. 开操作(Open)2.闭操作(Close)3.形态学梯度(MorphologicalGradient)4. 顶帽(Top hat)5.黑帽(Black hat)6.相关API7.例程1. 开操作(Open)定义:先腐蚀后膨胀公式:作用:可以去掉小的对象,假设对象是前景色,背景是黑色,其效果如下图所示:2.闭操作(Close)定义:先膨胀后腐蚀公式:可以fill ...原创 2020-02-04 22:21:30 · 522 阅读 · 0 评论 -
第13课 提取水平与垂直线
目录1.原理方法2.步骤2.1输入彩色图像2.2 转化为灰度图像2.3 转化为二值图像2.3 定义结构元素2.4 开操作(腐蚀+膨胀)2.5 后处理3. 例程课程视频链接1.原理方法通过自定义的结构元素,实现结构元素对输入图像的一些对象敏感,另一些对象不敏感,从而就可以让敏感的对象改变而不敏感的对象保留。通过两个最基本的形态学操作——膨胀与腐蚀,使用不同的结构元素对输入图像的进行操作,得到想...原创 2020-02-05 22:49:13 · 405 阅读 · 0 评论 -
第14课 图像上采样和降采样和高斯不同
目录1. 图像金字塔1.1 图像金字塔的概念1.2 图像金字塔的种类2. 采样的相关API上采样cv::pyrUp()(zoom in放大)降采样cv::pyrDown()(zoom out 缩小)3. 高斯不同(difference of Gaussian-DOG)4. 高斯不同的相关API4.1 高斯模糊4.2 图像减法操作4.3 归一化显示5. 例程1. 图像金字塔1.1 图像金字塔的概...原创 2020-02-06 16:45:40 · 924 阅读 · 0 评论 -
第15课 基本阈值操作
目录1. 图像阈值(Threshold)2. 阈值类型2.1 阈值二值化(Threshold Binary)2.2 阈值反二值化(Threshold Binary Inverted)2.3 截断(Truncate)2.4 阈值取零(Threshold to Zero)2.5 阈值反取零(Threshold to zero inverted)2.6 汇总3. 相关API4. 例程1. 图像阈值(T...原创 2020-02-07 19:50:05 · 682 阅读 · 0 评论 -
第16课 自定义线性滤波
文章目录1. 卷积1.1 卷积的概念1.2 卷积如何工作2. 常见的算子2.1 Robert算子2.2 Sobel算子2.3 拉普拉斯算子3. 自定义卷积模糊4. 相关API5. 例程1. 卷积1.1 卷积的概念卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)1.2 卷积如何工作...原创 2020-02-08 00:03:23 · 159 阅读 · 0 评论 -
第17课 处理边界(增加边界)
文章目录1. 卷积边缘问题2. 处理边缘2.1 BORDER-DEFAULT(常用)2.2 BORDER_CONSTANT——自定义指定像素值2.3 BORDER_REPLICATE – 通过插值计算2.4 BORDER_WRAP – 另外一边补偿3. 相关API4. 例程1. 卷积边缘问题如下图,当我们用一个结构元素去卷积和一张图片是,边缘的像素值无法被处理,这时就需要我们先将图片的边缘扩展...原创 2020-02-08 12:10:29 · 1009 阅读 · 0 评论 -
第18课 Soble算子——提取边缘
文章目录1. 卷积应用——图像边缘提取2.Soble算子3. 相关API3.1 cv::Sobel ()3.2 cv::Scharr()3.3 其他API4. 例程1. 卷积应用——图像边缘提取边缘是什么 – 是像素值发生跃迁的地方,是图像的显著特征之一,在图像特征提取、对象检测、模式识别等方面都有重要的作用。如何捕捉(提取边缘) —— 对图像求它的一阶导数delta = f(x) –...原创 2020-02-08 22:38:28 · 2574 阅读 · 0 评论 -
第19课 Laplance算子
文章目录1. 理论2. Laplance算子3. 处理流程4. Laplacian() API5. 例程1. 理论在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。2. Laplance算子用Laplance算子对图像进行二阶求导Opencv已经提供了相关API - cv::Laplance3. 处理流程高...原创 2020-02-10 11:59:51 · 347 阅读 · 0 评论 -
第20课 Canny边缘检测
文章目录1. Canny算法介绍1.1 Canny算法包括1.1.1 非最大信号抑制1.1.2 高低阈值输出二值图像2. cv::Canny() API3. 例程1. Canny算法介绍Canny是边缘检测算法,在1986年提出的。是一个很好的边缘检测器很常用也很实用的图像处理方法1.1 Canny算法包括高斯模糊灰度转换计算梯度非最大信号抑制高低阈值输出二值图像1....原创 2020-02-10 15:30:59 · 206 阅读 · 0 评论 -
第21课 霍夫变换——直线
文章目录1.霍夫直线变换简介2.相关API2.1 标准的霍夫变换 cv::HoughLines()2.2 霍夫变换直线概率 cv::HoughLinesP()2.2.1注意:3.例程1.霍夫直线变换简介Hough Line Transform用来做直线检测前提条件 – 边缘检测已经完成平面空间到极坐标空间转换对于任意一条直线上的所有点来说,变换到极坐标中,从[0~360]空间...原创 2020-02-13 12:24:37 · 626 阅读 · 0 评论 -
第22课 霍夫变换——圆
文章目录1. 霍夫圆检测原理简介2. 相关API2.1.cv::HoughCircles()3. 例程1. 霍夫圆检测原理简介从平面坐标到极坐标转换三个参数:圆心坐标和半径。假设平面坐标的任意一个圆上的点C,转换到极坐标中,在点C处有最大值,霍夫变换正是利用这个原理实现圆的检测。(a, b)为圆心坐标2. 相关API2.1.cv::HoughCircles()因为霍夫圆检...原创 2020-02-13 16:44:26 · 1594 阅读 · 0 评论 -
第23课 像素重映射
文章目录1. 什么是像素重映射2. 相关API2.1 cv::remap()3.例程1. 什么是像素重映射简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。g(x,y)是重映射之后的图像,h(x,y)是功能函数,f是源图像2. 相关API2.1 cv::remap()remap(InputArray src,// 输入图像Out...原创 2020-02-14 22:53:43 · 240 阅读 · 0 评论 -
第24课 直方图均衡化
文章目录1.什么是直方图2. 直方图均衡化2.1 如何实现3. 相关API3.1 equalizeHist()4. 例程1.什么是直方图图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。是图像的统计学特征。上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值...原创 2020-02-16 15:56:16 · 1051 阅读 · 0 评论 -
第25课 直方图计算
文章目录1. 直方图概念1.1 直方图常见的几个属性:2. 相关API2.1 split()2.2 直方图计算calcHist()1. 直方图概念在24课有详细介绍,此就不做赘述。1.1 直方图常见的几个属性:dims 表示维度,对灰度图像来说只有一个通道值dims=1bins 表示在维度中子区域大小划分,bins=256,划分为256个级别range 表示值得范围,灰度值范围为[0...原创 2020-02-16 20:17:31 · 324 阅读 · 0 评论 -
第26课 直方图比较
文章目录1. 直方图比较方法1.1 相关性比较1.2 卡方比较1.3 十字计算1.4 巴氏距离计算2.步骤3. 相关API3.1直方图比较compareHist()4. 例程1. 直方图比较方法对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间;然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。Opencv4提供的比较方法有6种:e...原创 2020-02-16 22:07:16 · 390 阅读 · 0 评论 -
第27课 直方图反向投射(Back Projection)
文章目录1. 反向投影2. 反向投影的步骤2.1 具体步骤3. 例程1. 反向投影反向投影是反映直方图模型在目标图像中的分布情况简单点说就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道的直方图模型。2. 反向投影的步骤建立直方图模型计算待测图像直方图并映射到模型中从模型反向计算生成图像2.1 具体步骤加载图片imread将图像从R...原创 2020-02-18 11:23:04 · 537 阅读 · 0 评论 -
第28课 模板匹配(TemplateMatch)
文章目录1. 模板匹配介绍1.1模板匹配的算法介绍2. 相关API2.1模板匹配matchTemplate()2.2在矩阵中需找全局的最大最小数minMaxLoc()3. 例程1. 模板匹配介绍模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像),另外需要一个待检测的图像-源图像S。工作方法,在带检测图像上,从左到右,从上向下计算模板...原创 2020-02-18 16:15:29 · 1899 阅读 · 0 评论 -
第29课 轮廓发现(find contour)
文章目录1. 轮廓发现(find contour)2. 步骤3.相关API3.1寻找轮廓findCon tours()3.2 绘制轮廓drawContours()4. 例程1. 轮廓发现(find contour)轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓发现结果。2. 步骤输入图像转为灰度图像cvtColor使用Canny进行边缘提...原创 2020-02-18 17:57:36 · 1862 阅读 · 2 评论 -
第30课 凸包(Convex Hull)
文章目录1.什么是凸包2. Graham扫描算法3. 步骤4. 相关API4.1 cv::convexHull()5. 例程1.什么是凸包在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部。包含点集合S中所有点的最小凸多边形称为凸包凸包检测算法——Graham扫描法2. Graham扫描算法首先选择Y方向最低的点作为起始点p0从p0开始极坐标扫描,依次添...原创 2020-02-18 21:09:27 · 766 阅读 · 0 评论 -
第31课 轮廓周围绘制矩形框和圆形框
文章目录1. 步骤2. 相关API2.1 approxPolyDP()2.2 cv::boundingRect()2.3 cv::minAreaRect()2.4 cv::minEnclosingCircle()2.5 cv::fitEllipse()3. 例程1. 步骤首先将图像变为二值图像threshold()发现轮廓,找到图像轮廓canny()通过相关API在轮廓点上找到最小包含矩...原创 2020-02-19 21:25:05 · 219 阅读 · 0 评论 -
第32课 图像矩(Image Moments)
文章目录1. 矩的概念介绍1.1 图像矩相关公式2. 步骤3. 相关API3.1 计算中心矩cv::moments()3.2 contourArea()3.3 arcLength()4. 例程1. 矩的概念介绍图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发...原创 2020-02-20 16:37:39 · 984 阅读 · 0 评论 -
第33课 点多边形检测
文章目录1. 概念介绍2. 相关API2.1 cv::pointPolygonTest()3. 例程1. 概念介绍点多边形测试就是测试一个点是否在给定多边形的内部、边缘或外部,可用于做归一化显示。2. 相关API2.1 cv::pointPolygonTest()double pointPolygonTest(InputArray contour,// 输入的轮廓Point2...原创 2020-02-20 22:36:50 · 220 阅读 · 0 评论 -
OpenCV——自动光学检查、对象分割和检测
文章目录效果代码效果代码原创 2020-03-01 20:32:45 · 596 阅读 · 0 评论 -
OpenCV4 + Xcode环境配置 (Mac)
文章目录一、资源安装1.安装Xcode命令行工具2.安装Homebrew3.安装wget4.安装Cmake5.安装Open CV6.安装过程遇见的问题二、Xcode+OpenCV环境配置1.创建新工程2.添加include和lib3.添加Other Linker Flags一、资源安装1.安装Xcode命令行工具终端输入xcode-select --install等待安装2.安装Homebrew终端输入/bin/zsh -c "$(curl -fsSL https://gitee.com原创 2021-01-09 16:09:33 · 909 阅读 · 3 评论