OpenCV4学习笔记
OpenCV4学习笔记,实践于C++、Python和JS(Vue)代码。
Apple_Coco
一以贯之的努力,不得懈怠的人生,每天的微小积累会决定最终结果,这就是答案。
展开
-
OpenCV4学习笔记 - 目录
前言OpenCV4 学习笔记,实践于 C++、Python 和 JS(Vue)代码以下文章均收录在我的 GitHub 中,欢迎 Star ⭐ ο(=•ω<=)ρ⌒☆环境Python:3.6.5 OpenCV 4.1.2C++:OpenCV 4.1.2JS:OpenCV 4.5.0环境搭建可参考:B站视频目录入门OpenCV4(1)-读取和显示图像(C++,Python,JS)OpenCV4(2)-保存图像与色彩空间的转换(C++,Python,JS)OpenCV4(3)-图像对原创 2020-11-11 11:33:05 · 843 阅读 · 0 评论 -
OpenCV实战-图像素描化
OpenCV实战-图像素描化环境运行结果Python代码JS代码环境Python:3.6.5 OpenCV 4.1.2C++:OpenCV 4.1.2JS:OpenCV 4.5.0环境搭建可参考:B站视频欢迎访问博主搭建的 在线运行平台 (o゜▽゜)o☆运行结果Python代码import cv2 as cv# 转换函数def convert(img): gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) inv.原创 2020-12-07 22:51:25 · 703 阅读 · 0 评论 -
OpenCV-如何快速免费获取到官方最新版的opencv.js
前言最近在网上查询 opencv.js 的相关学习资料,发现有一些小伙伴不是很清楚 opencv.js 的获取方式。要不就是从前人留下来的百度云链接获取,要不就是在CSDN上通过积分换取,要不就是按照教程从 opencv 源码编译获取,这些获取方式也很难获取到最新版的 opencv.js。在我写下这篇博客的时候(20201119),opencv 官方已经更新到 4.5.0 的版本啦,那么如何获取到 4.5.0 版本的 opencv.js 呢,很简单哦,且往下看~opencv.js的获取方式其实,官方在原创 2020-11-20 00:05:40 · 1228 阅读 · 0 评论 -
npm安装opencv4nodejs(Windows)
前言官方指南踩坑指南安装好 git 和 cmake安装 windows-build-tools安装 opencv4nodejs安装成功参考链接前言深夜踩坑真的是太难了,呜呜OpenCV 可以说是很早就接触了,之前用过 Python 版本的和 C++ 版本的。最近在学习前端方面的知识,做 WebGIS 和图像处理方面的开发,顺理成章就希望能将 OpenCV 用在前端上。查阅了一些资料,发现已经有大神做了将 OpenCV 用于 NodeJS 上的开发,其名为 opencv4node.原创 2020-11-01 14:47:23 · 8274 阅读 · 22 评论 -
OpenCV4实战:基于特征对齐的二景图像拼接
前言实验环境实现思路代码演示结果展示前言昨天总结了基于特征的图像对齐,今天来尝试一下,基于特征对齐的二景图像拼接吧。如下图所示,这是同一地点不同角度拍摄的两幅图像,现在尝试将其进行拼接。原创 2020-06-01 20:08:09 · 1286 阅读 · 2 评论 -
OpenCV4:图像处理-ORB_FAST特征关键点检测
原理介绍相关API代码演示结果展示原理介绍ORB - (Oriented Fast and Rotated BRIEF) 算法是基于 FAST 特征检测与 BRIEF 特征描述子匹配实现,相比 BRIEF 算法中依靠随机方式获取而值点对,ORB 通过 FAST 方法,FAST 方式寻找候选特征点方式是假设灰度图像像素点 A 周围的像素存在连续大于或者小于 A 的灰度值,选择任意一个像素点 P,假设半径为 3,周围 16 个像素表示如下相关APIstatic Ptr<ORB>.原创 2020-05-30 03:28:36 · 1051 阅读 · 0 评论 -
OpenCV4.0进阶(1)图像卷积操作
知识点:图像卷积操作:图像卷积可以看成是一个窗口区域在另外一个大的图像上移动,对每个窗口覆盖的区域都进行点乘得到的值作为中心像素点的输出值。窗口的移动是从左到右,从上到下。窗口可以理解成一个指定大小的二维矩阵,里面有预先指定的值。相关API:void blur( InputArray src, OutputArray dst, Size ksize, P...原创 2019-07-04 16:48:27 · 497 阅读 · 0 评论 -
OpenCV4.0进阶(2)图像均值模糊与高斯模糊
知识点:图像均值与高斯模糊:均值模糊,是卷积核的系数完全一致。上一节我们便实现了自定义版本的均值模糊与API版本的均值模糊;高斯模糊,考虑了中心像素距离的影响,对距离中心像素使用高斯分布公式生成不同的权重系数给卷积核,然后用此卷积核完成图像卷积得到输出结果就是图像高斯模糊之后的输出。相关API:void GaussianBlur( InputArray src, Ou...原创 2019-07-04 18:05:44 · 668 阅读 · 0 评论 -
OpenCV4.0进阶(3)中值滤波
知识点:中值模糊:中值滤波本质上是统计排序滤波器(包括最小值滤波器和最大值滤波器)的一种,中值滤波对图像特定噪声类型(椒盐噪声)会取得比较好的去噪效果,也是常见的图像去噪声与增强的方法之一。中值滤波也是窗口在图像上移动,其覆盖的对应ROI区域下,所有像素值排序,取中值作为中心像素点的输出值。相关API:void medianBlur( InputArray src, Outp...原创 2019-07-04 19:03:54 · 760 阅读 · 0 评论 -
OpenCV4.0进阶(4)图像噪声
知识点:图像噪声:图像噪声产生的原因很复杂,有的可能是数字信号在传输过程中发生了丢失或者受到干扰,有的是成像设备或者环境本身导致成像质量不稳定,反应到图像上就是图像的亮度与颜色呈现某种程度的不一致性。从噪声的类型上,常见的图像噪声可以分为如下几种:- 椒盐噪声:是一种随机在图像中出现的稀疏分布的黑白像素点, 对椒盐噪声一种有效的去噪手段就是图像中值滤波;- 高斯噪声/符合高斯分...原创 2019-07-04 20:00:46 · 398 阅读 · 0 评论 -
OpenCV4.0入门(15)几何形状绘制
知识点:1、绘制直线void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);- thickness = 1 // 表示线宽为1。thickness = -1 表示进...原创 2019-06-30 15:37:55 · 370 阅读 · 0 评论 -
OpenCV4(16)-图像ROI与ROI操作(C++,Python,JS)
知识点:ROI解释:图像的 ROI(region of interest) 是指图像中感兴趣区域、在 OpenCV 中图像设置图像 ROI 区域,实现只对 ROI 区域的操作。提取不规则ROI区域的一般步骤:1、通过inRange函数生成mask2、通过与操作提取ROI#ifndef DAY16#define DAY16#include <opencv2...原创 2019-06-30 16:43:13 · 9663 阅读 · 0 评论 -
OpenCV4.0进阶(5)图像非局部均值去噪
知识点:图像去噪声:图像去噪声在OCR、机器人视觉与机器视觉领域应用开发中是重要的图像预处理手段之一,对图像二值化与二值分析很有帮助,OpenCV中常见的图像去噪声的方法有:- 均值模糊去噪声- 高斯模糊去噪声- 中值滤波去噪声- 非局部均值去噪声- 双边滤波去噪声- 形态学去噪声均值、高斯、中值去噪在前面几个章节都已经介绍过了,今天主要介绍非局部均值去噪声及其...原创 2019-07-11 20:25:08 · 1105 阅读 · 0 评论 -
OpenCV4.0进阶(6)高斯双边模糊
知识点:边缘保留滤波算法 – 高斯双边模糊:之前我们介绍了图像卷积处理无论是均值还是高斯都是属于模糊卷积,它们都有一个共同的特点就是模糊之后图像的边缘信息不复存在,受到了破坏。我们今天介绍的滤波方法有能力通过卷积处理实现图像模糊的同时对图像边缘不会造成破坏,滤波之后的输出完整的保存了图像整体边缘(轮廓)信息,这类卷积滤波算法被称为边缘保留滤波算法(EPF)。最常见的边缘保留滤波算法有以...原创 2019-07-11 21:39:00 · 933 阅读 · 0 评论 -
OpenCV4.0进阶(7)均值迁移模糊(mean-shift blur)
知识点:边缘保留滤波算法 – 均值迁移模糊(mean-shift blur):均值迁移模糊是图像边缘保留滤波算法中一种,经常用来在对图像进行分水岭分割之前去噪声,可以大幅度提升分水岭分割的效果。其基本原理如下:在n维空间中,有一定数量的样本,我们选定其中的一个样本,以该样本为中心,给定长度为半径画一个圆,求取该圆形区域内样本的质心,即密度最大的点,再以该点为中心继续执行上述迭代过程,直...原创 2019-07-30 00:14:56 · 1223 阅读 · 0 评论 -
OpenCV4.0进阶(8)图像积分图算法
知识点:1、概述:在卷积操作中,如果我们想快速计算得到卷积窗口中所有元素的和或平方和,我们该怎么操作?图像积分图算法就是一种快速计算图像区域和与平方和的算法,由Crow在1984年首次提出,目的是为了在多尺度透视投影中提高渲染速度。目前,图像积分图在图像特征提取HAAR/SURF、二值图像分析、图像相似相关性NCC计算、图像卷积快速计算等方面均有应用,是图像处理中的经典算法之一。...原创 2019-08-01 00:55:43 · 985 阅读 · 0 评论 -
OpenCV4.0入门(20)图像直方图反向投影
知识点:图像直方图反向投影:图像直方图反向投影是通过构建指定模板图像的二维直方图空间与目标的二维直方图空间,进行直方图数据归一化之后, 进行比率操作,对所有得到非零数值,生成查找表对原图像进行像素映射之后,再进行图像模糊输出的结果。直方图反向投影流程:- 计算直方图- 计算比率R- LUT查找表- 卷积模糊- 归一化输出相关API:void calcBac...原创 2019-07-04 12:25:21 · 275 阅读 · 0 评论 -
OpenCV4.0入门(19)图像直方图比较
知识点:图像直方图比较:图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度,直方图比较在早期的CBIR中是应用很常见的技术手段,通常会结合边缘处理、词袋等技术一起使用。相关API:double compareHist( InputArray H1, InputArray H2, int method );比较常见的方法有:-...原创 2019-07-03 22:07:09 · 422 阅读 · 0 评论 -
OpenCV4.0入门(12)视频读写
知识点:1、VideoCapture 视频文件读取、摄像头读取、视频流读取2、获取视频的相关属性- CAP_PROP_FRAME_HEIGHT // 高- CAP_PROP_FRAME_WIDTH // 宽- CAP_PROP_FRAME_COUNT // 总帧数- CAP_PROP_FPS // 帧率3、VideoWriter 视频写出、文件保...原创 2019-06-26 14:22:31 · 1771 阅读 · 0 评论 -
OpenCV4(1)-读取和显示图像(C++,Python,JS)
前言:对于OpenCV4.0的python环境和VS环境的搭建,可参考此视频知识点:读取图像 — imread显示图像 — imshow#ifndef DAY01#define DAY01#include <opencv2/opencv.hpp>#include <iostream>using namespace std;usin...原创 2019-06-23 19:09:57 · 1461 阅读 · 0 评论 -
OpenCV4.0入门(13)图像翻转(Image Flip)
知识点:图像翻转的本质是像素映射,OpenCV支持三种图像翻转方式- X轴翻转,flipcode = 0- Y轴翻转, flipcode = 1- XY轴翻转, flipcode = -1相关APIvoid flip(InputArray src, OutputArray dst, int flipCode);#ifndef DAY13#define DAY...原创 2019-06-26 18:39:51 · 851 阅读 · 0 评论 -
OpenCV4(2)-保存图像与色彩空间的转换(C++,Python,JS)
知识点:1、图像保存— imwrite第一个参数是图像保存路径第二个参数是图像内存对象2、色彩空间转换函数 — cvtColorCOLOR_BGR2GRAY = 6 彩色到灰度COLOR_GRAY2BGR = 8 灰度到彩色COLOR_BGR2HSV = 40 BGR到HSVCOLOR_HSV2BGR = 54 HSV到BGR#ifndef DAY02...原创 2019-06-23 19:50:50 · 942 阅读 · 0 评论 -
OpenCV4(3)-图像对象拷贝与创建(C++,Python,JS)
知识点:1、图像对象的拷贝学过C++的应该都很清楚,拷贝分为深拷贝和浅拷贝OpenCV的clone()和copyTo是深拷贝,赋值运算符‘=’是浅拷贝头部保存了该图像的宽度和高度还有通道数等信息,数据部分保存了该图像的像素信息2、图像对象的创建常用方法有Mat::zeros()和Mat::ones()#ifndef DAY03#define DAY03...原创 2019-06-23 20:20:03 · 563 阅读 · 0 评论 -
OpenCV4(4)-图像像素读写操作(C++,Python,JS)
知识点:C++中的像素遍历与访问- 数组遍历- 指针遍历#ifndef DAY04#define DAY04#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;void day04() { Mat src =...原创 2019-06-23 20:50:17 · 858 阅读 · 1 评论 -
OpenCV4(5)-图像像素算数操作(C++,Python,JS)
知识点:saturate_cast防止数据溢出#ifndef DAY05#define DAY05#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;void day05() { Mat src = imread("...原创 2019-06-23 21:13:37 · 642 阅读 · 0 评论 -
OpenCV4(6)-LookUpTable(LUT)查找表(C++,Python,JS)
知识点:Look Up Table(LUT)查找表- applyColorMap(src, dst, COLORMAP)- src 表示输入图像- dst表示输出图像- OpenCV支持13种颜色风格的查找表映射#ifndef DAY06#define DAY06#include <opencv2/opencv.hpp>#include &l...原创 2019-06-23 21:32:39 · 1164 阅读 · 1 评论 -
OpenCV4(7)-图像像素逻辑操作(C++,Python,JS)
知识点:像素操作之逻辑操作- bitwise_and- bitwise_xor- bitwise_or上面三个类似,都是针对两张图像的位操作- bitwise_not针对输入图像, 图像取反操作,二值图像分析中经常用#ifndef DAY07#define DAY07#include <opencv2/opencv.hpp>#incl...原创 2019-06-23 21:50:56 · 509 阅读 · 0 评论 -
OpenCV4(8)-通道分离与合并(C++,Python,JS)
知识点:OpenCV中的imread()函数原型为:Mat imread(const string& filename, int flags=1 ),flags有如下几种类型枚举标识 备注 IMREAD_UNCHANGED = -1 8位原通道,新版本已经废置 IMREAD_GRAYSCALE = 0 8位1通道,图像总是转换成灰度 ...原创 2019-06-24 00:10:29 · 379 阅读 · 0 评论 -
OpenCV4(9)-色彩空间的转换及应用(C++,Python,JS)
知识点:- RGB色彩空间只需要知道RGB是我们最常用的色彩空间,且与设备无关。- HSV色彩空间对于一些直方图相关的图像处理和算法,将其转到HSV色彩空间,通常会取得较好的效果。- YUV色彩空间一种跟设备有关的色彩空间。- YCrCb色彩空间常用作皮肤检测,根据一些颜色的统计模型,通常会取得较好的效果。API知识点- 色彩空间转换cvtColor- ...原创 2019-06-24 18:57:34 · 652 阅读 · 0 评论 -
OpenCV4.0入门(14)图像插值(Image Interpolation)
知识点:四种最常见的图像插值算法- INTER_NEAREST = 0- INTER_LINEAR = 1- INTER_CUBIC = 2- INTER_LANCZOS4 = 4相关APIvoid resize(InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0, int...原创 2019-06-27 18:30:59 · 1553 阅读 · 0 评论 -
OpenCV4(10)-图像像素值统计(C++,Python,JS)
知识点:像素值统计- 最小(min)- 最大(max)- 均值(mean)- 标准方差(standard deviation)API知识点 - 最大最小值minMaxLoc- 计算均值与标准方差meanStdDev#ifndef DAY10#define DAY10#include <opencv2/opencv.hpp>#inclu...原创 2019-06-24 21:43:41 · 1401 阅读 · 0 评论 -
OpenCV4.0入门(17)图像直方图
知识点:图像直方图的解释:图像直方图是图像像素值的统计学特征、计算代价较小,具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类、反向投影跟踪。常见的分为- 灰度直方图- 颜色直方图Bins是指直方图的大小范围, 对于像素值取值在0~255之间的,可以有256个bin,此外还可以有16、32、48、1...原创 2019-07-03 18:47:11 · 394 阅读 · 0 评论 -
OpenCV4.0入门(18)图像直方图均衡化
知识点:图像直方图均衡化:图像直方图均衡化可以用于图像增强、对输入图像进行直方图均衡化处理,提升后续对象检测的准确率在OpenCV人脸检测的代码演示中已经很常见。此外对医学影像图像与卫星遥感图像也经常通过直方图均衡化来提升图像质量。相关API:void equalizeHist( InputArray src, OutputArray dst );代码演示:#if...原创 2019-07-03 20:29:10 · 415 阅读 · 0 评论 -
OpenCV4.0入门(11)像素归一化
知识点:OpenCV中提供了四种归一化的方法:- NORM_MINMAX- NORM_INF- NORM_L1- NORM_L2最常用的就是NORM_MINMAX归一化方法。相关API函数:void normalize(InputArray src, InputOutputArray dst, double alpha = 1, double beta = 0...原创 2019-06-26 13:24:19 · 707 阅读 · 0 评论