Opencv
初学OpenCV,依据清华大学出版社的这本《学习OpenCV》来慢慢入门,并在此作些笔记。
一只小汤姆
本人还处于学习阶段,且习惯于打下知识框架再慢慢填充,所有部分篇博文可能无主要内容,只有目录大纲,希望大家谅解。而且本人的文章按专栏从上到下看最好,这样知识层层递进,由浅入深。最好再配合着习题,建立知识框架。
2022.4.23更新:一年前用onenote记笔记,没管这个平台了,以后开始整理一下。
展开
-
图像像素位置的变化
目录1. 重映射2. 仿射变换1. 重映射void remap(InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation, int borderMode = BOREDER_CONSTANT, const Scalar& borderValue = Scalar());参数详解:第一个参数:输入图像。需为单通原创 2020-10-10 10:33:53 · 860 阅读 · 0 评论 -
光流跟踪
这里写目录标题1. 稀疏光流跟踪:Lucas-Kanade方法原理程序示例2. 稠密光流跟踪:Farneback算法1. 稀疏光流跟踪:Lucas-Kanade方法原理前提亮度恒定。图像场景中目标的像素在帧间运动时外观上保持不变。对于灰度图像,需要假设像素被逐帧跟踪时且亮度不变。时间连续或者运动是“小运动”。图像的运动随时间的变化比较缓慢。实际应用中指的是时间变化相对图像中运动的比例要足够小,这样目标在帧间的运动就比较小。空间一致。一个场景中同一表面上邻近的点具有相似的运动,在图像平面上的投影原创 2020-10-07 09:36:47 · 675 阅读 · 1 评论 -
边缘检测
边缘检测一般步骤滤波。 边缘检测算法主要基于图像强度的一阶和二阶导数,但噪声会很大程度地影响导数,故采用滤波器降噪。增强。检测。边缘检测的主要评价标准低错误率。 标识出尽可能多的实际边缘。高定位性。 标识出的边缘要与图像的实际边缘尽可能近。最小响应。 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识成边缘。Canny算子具体步骤:消除噪声。 使用高斯平滑滤波器卷积降噪。计算梯度幅值和方向。梯度幅值方向非极大值抑制。 排除非边缘像素,仅保留细线条。原创 2020-10-02 22:11:44 · 157 阅读 · 0 评论 -
OpenCV的功能及其模块
目录输入输出imgcodecs图像处理imgprocximgprocGUIhighguicore. Core functionality视频分析videovideostab.3D重建calib3d特征提取features2dbioinspiredxfeatures2d对象检测objdetect.xobjdetect计算摄影photostitching机器学习ml形状分析shape光流算法optflowtracking表面匹配Kinectsurface_matching人脸和对象识别facesaliency文原创 2020-09-18 08:03:16 · 337 阅读 · 0 评论 -
Opencv基本操作
# include <iostream># include <string># include <sstream>using namespace std;# include <opencv2/opencv.hpp>using namespace cv;int main(){ //Read images Mat lena = imread(""); //Checking if Lena image has been loaded i原创 2020-09-19 07:55:19 · 137 阅读 · 0 评论 -
opencv的类
MatVectypedef Vec<uchar, 2> Vec2b;typedef Vec<uchar, 3> Vec3b;typedef Vec<uchar, 4> Vec4b;typedef Vec<short, 2> Vec2s;typedef Vec<short, 3> Vec3s;typedef Vec<short, 4> Vec4s;typedef Vec<int, 2> Vec2i;typ原创 2020-09-19 07:24:49 · 119 阅读 · 0 评论 -
图像处理基本流程
自动光学检查(AOI)例子:对象的检测和分类步骤:1. 预处理去除噪音和光照效果来得到最佳的二值化图像,从而减少检测错误。(1)噪声消除噪声分类:椒盐噪声 - 中值滤波器 - medianBlur散粒噪声高斯噪声medianBlur();(2)光消除(3)二值化2. 分割轮廓检测算法findContours();连通组件算法3. 特征提取4. 分类处理5. 后期处理...原创 2020-09-19 16:47:28 · 6429 阅读 · 0 评论 -
滤波
平滑处理图像形态学漫水填充算法尺寸调整图像金字塔阈值化原创 2020-04-14 14:23:24 · 205 阅读 · 0 评论 -
形态学处理
形态学图像处理一般应用于二进制图像。使形状变细使形状变粗形态开口形态闭合绘制边界礼帽变换黑帽变换原创 2020-09-20 09:17:44 · 1162 阅读 · 0 评论 -
漫水填充
把和种子点连通且颜色亮度相近的区域染成同一颜色。int floodFill(InputOutputArray image, InputOutputArray mask, Point seedPoint, Scalar newVal, Rect* rect = 0, Scalar loDiff = Scalar(), Scalar upDiff = Scalar(), int flags = 4);参数详解:第一个参数:第二个参原创 2020-09-23 00:32:18 · 281 阅读 · 0 评论 -
图像表现方式的变换
卷积梯度和Sobel导数拉普拉斯变换Canny算子霍夫变换重映射拉伸、收缩、扭曲和选转CartToPolar与PolarToCartLogPolar离散傅里叶变换离散余弦变换积分图像距离变换直方图均衡化...原创 2020-04-14 14:22:33 · 224 阅读 · 0 评论 -
图像修复
OpenCV的基本数据类型CvMat矩阵结构IplImage数据结构矩阵和图像操作绘图数据存储集成性能基元原创 2020-04-14 14:26:21 · 129 阅读 · 0 评论 -
角点检测
角点/兴趣点/特征点:特征明显的点。具体描述:灰度的梯度的局部最大所对应的像素点两条及两条以上边缘的交点图像中梯度值和梯度方向的变换速率都很高的点角点检测应用于运动检测,图像匹配,视频跟踪,三维建模和目标识别。图像的特征类型:边缘感兴趣关键点(角点)感兴趣区域(斑点)阻挠:光照变换和图像旋转的变化会使已有角点的特征变化。角点检测算法基于灰度图像的角点检测基于梯度基于模板主要考虑像素邻域点的灰度变化,将与邻域内亮度对比足够大的点定义未角点。Kitchen-Rosenf原创 2020-09-23 19:02:14 · 216 阅读 · 0 评论 -
图像分割
用光模式移除背景进行分割方法一:R = L - I方法二:R = 255*( 1 - (I/L) )光模式L :没有对象,只有背景图像I结果 RMat removeLight(Mat img, Mat pattern, int method){ Mat aux; // if method is normalization if(method == 1) { // Reequire change out image to 32 float for divison Mat原创 2020-09-21 17:27:46 · 123 阅读 · 0 评论 -
获取图像轮廓
Canny算子Sobel算子Laplacian算子Scharr滤波器原创 2020-09-21 20:20:21 · 230 阅读 · 0 评论 -
图像颜色均衡
void equalizeCallback(int state, void* userData){ Mat result; // Convert BGR image to YCbCr Mat ycrcb cvtColor(img, ycrcb, COLOR_BGR2YCrCb); // Split image into channels vector<Mat> channels; split(ycrcb, channels); // Equalize the Y channe原创 2020-09-19 10:13:34 · 102 阅读 · 0 评论 -
交互功能
OpenCV基本用户界面OpenCV Qt界面滑块和按钮高级用户界面:OpenGL颜色转换基本滤波器原创 2020-09-19 08:34:46 · 787 阅读 · 0 评论 -
开发用于文本识别的分割算法
光学字符识别介绍预处理阶段对图像进行阈值处理文本分割在你的操作系统上安装Tesseract OCR使用Tesseract库原创 2020-09-20 08:14:20 · 182 阅读 · 0 评论 -
背景消除
帧差法Mat frameDiff(Mat prevFrame, Mat curFrame, Mat nextFrame){ Mat diffFrames1, diffFrames2, output; // Computer absolute difference between current frame and the next absdiff(nextFrame, curFrame, diffFrames1); // Computer absolute difference bet原创 2020-09-19 23:25:45 · 87 阅读 · 0 评论 -
检测和跟踪面部部位
代码示例# include<opencv2/opencv.hpp># include<iostream>using namespace std;using namespace cv;int main(int argc, char* argv[]){ string faceCascadeName = argv[1]; // Detect faces faceCascade.detectMulticale(frameGray, facess, 1.1, 2原创 2020-09-19 17:45:29 · 163 阅读 · 0 评论 -
机器学习
利用机器学习算法对图像中的对象进行分类根据机器学习算法从输入数据中进行学习的方式,监督学习:无监督学习:强化学习:把机器学习算法得到的结果分为分类回归聚类密度估计在此使用监督学习和分类方法,利用算法:Opencv的StatModel类中实现了这八种算法支持向量机(SVM)人工神经网路期望最大化逻辑回归k - 最近邻决策树随机梯度下降SVM朴素贝叶斯分类器深度学习机器学习中,最耗时的是训练过程,建议保存训练好的模型和已经学习过的所有参数train负责使用原创 2020-09-19 17:20:32 · 87 阅读 · 0 评论 -
卡通效果
示例void cartoonCallback(int state, void* userData){ Mat imgMedian; medianBlur(img, imgMedian, 7); // Detect edges with canny Mat imgCanny; Canny(imgMedian, imgCanny, 50, 150); //Dilate the edges Mat kernel = getStructuringElement(MORPH_RECT, Size原创 2020-09-19 11:19:14 · 87 阅读 · 0 评论 -
直方图
示例void showHistCallback(int state, void* userData){ //Separate image in BRG vector<Mat> bgr; split(img, bgr); //Create the histogram for 256bins //The number of possible values[0..255] int numbins = 256; //Set the ranges for B,G,R last is原创 2020-09-19 09:43:33 · 340 阅读 · 0 评论 -
使用Opencv进行深度学习
一、牛顿定律1. 牛顿第一定律2. 牛顿第二定律3. 牛顿第三定律4. 力学相对性原理二、物理量的单位与量纲三、几种常见的力1. 万有引力2. 弹性力3. 摩擦力四、惯性力 非惯性力原创 2020-05-19 09:05:43 · 1306 阅读 · 0 评论 -
使用Tesseract进行文本识别
斯托克斯公式:对于速度不太大的球形物体,当其在流体中下落时,粘性阻力的大小为:Fr = bv = 6Πŋrv方向与物体运动方向相反当重力大于浮力时速度与时间的函数(初始速度为0)F0:球形物体的重力与浮力的差b:斯托克斯公式的系数m:球形物体的质量t:从物体接触水面开始的时间e:自然常数函数图像一般认为,当 t > 3m/b 时,下沉速度已到达最大值当重力小于浮力时速度与时间的函数v0:初速度。b:斯托克斯公式的系数m:球形物体的质量t:从物体接触水面开原创 2020-07-04 12:33:55 · 186 阅读 · 0 评论 -
对象跟踪
磁感应强度安培环路定理ciwei恒定磁场基本方程·分界面上的衔接条件磁矢位·恒定磁场的边值问题ci’wei原创 2020-09-13 17:52:21 · 285 阅读 · 0 评论 -
OpenCV——立体匹配算法
目录局部的立体匹配算法BM算法(blocking match)全局的立体匹配算法坑局部的立体匹配算法BM算法(blocking match)原理:以左目图像的源匹配点为中心,定义一个大小为(2m+1)x(2n+1)的SAD1窗口,统计其窗口的灰度值的和;然后在右目图像中逐步滑动相同窗口,统计其灰度值的和,并计算其与左窗口的灰度和的差值;差值最小的区域的中心像素即为匹配点。不...原创 2020-04-15 10:47:18 · 510 阅读 · 0 评论 -
第12章——投影与三位视觉
投影仿射变换和透视变换POSIT:3D姿态估计立体成像来自运动的结构二维和三维下的直线拟合挖坑原创 2020-04-14 14:08:52 · 308 阅读 · 0 评论 -
第2章——OpenCV入门
配置环境变量目录显示图像三级目录int main( int argc, char** argv )-argc (arguments count):从外部输入字符串的总数目。-argv (arguments values):第一个地址指向文件的全路径名,从第二项开始,依次指向输入的字符串。显示图像cv::imread()函数源代码Mat cv::imread(const String&...原创 2020-04-16 00:06:05 · 97 阅读 · 0 评论 -
OpenCV——立体标正算法
目录Hartley算法Bouguet算法第一次投影: 三维空间的点在摄像机图像平面的投影。重投影: 根据几何信息推导出的,空间中虚拟的点,在图像平面的投影。Hartley算法通过单个摄像机记录的运动推导出立体结构Bouguet算法前提:两摄像机经过标定,得到从右到左的旋转矩阵R和平移向量T。主要步骤:共面:把右摄像机坐标旋转到与左摄像机重合看作一个过程,看作右图像平面想和左图像...原创 2020-04-15 22:34:17 · 486 阅读 · 0 评论 -
反向投影
一个可移植的图形工具包创建窗口载入图像显示图像视频的处理ConvertImage函数原创 2020-04-14 14:24:51 · 110 阅读 · 0 评论 -
模板匹配
直方图的基本数据结构访问直方图直方图的基本操作一些更复杂的策略原创 2020-04-14 14:20:16 · 110 阅读 · 0 评论 -
第9章——图像局部与分割
局部与分割背景减除分水岭算法用Inpainting修补图像均值漂移分割Delaunay三角剖分和Voronoi划分原创 2020-04-14 14:16:52 · 148 阅读 · 0 评论 -
第10章——跟踪与运动
跟踪基础寻找角点不变特征光流mean-shift和camshift跟踪运动模板预估器condensation算法原创 2020-04-14 14:14:58 · 141 阅读 · 0 评论 -
第11章—摄像机模型与标定
光线从物体反射到摄像机的图像采集器过程中光路的几何研究针孔成像模型首先引入一个简单的模型解释——针孔摄像机模型,利用小孔成像原理。-f(焦距):从针孔到屏幕的距离,单位是像素。-Z:物体到摄像机的距离。-X:物体的实际长度。-x:图像(投影)平面的物体长度,单位是像素。由三角形相似可知:-x/f = X/Z为了投影平面的图像不倒立,把投影平面前移至投影中心前f远处-投影中心:...原创 2020-04-14 13:52:55 · 275 阅读 · 0 评论 -
第13章——机器学习
OpenCV机器学习算法Mahalanobis距离K均值朴素贝叶斯分类二叉决策树boosting随机森林人脸识别和Haar分类器其他机器学习算法原创 2020-04-14 14:12:54 · 112 阅读 · 0 评论