opencv
文章平均质量分 67
晴宁
这个作者很懒,什么都没留下…
展开
-
VS2015+opencv3.4.1第一次运行出错解决方案
“Project1.exe”(Win32):已加载“C:\ Windows \ System32 \ combase.dll”。无法查找或打开PDB文件。“Project1.exe”(Win32):已加载“C:\ Windows \ System32 \ avicap32.dll“。无法查找或打开PDB文件。”Project1.exe“(Win32):已加载”C:\ Windows \ Syste...原创 2018-06-28 11:10:18 · 2573 阅读 · 0 评论 -
opencv学习笔记二(加载、修改、保存图像imread、cvtColor、imwrite)
修改图像时报错:0x00007FFB930E7788 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000E69A8FE160 处。但是最终也可以运行源代码:#include<opencv2/opencv.hpp>#include<iostream>#i...原创 2018-06-28 22:16:31 · 1013 阅读 · 0 评论 -
opencv笔记三(矩阵的掩膜原理)filter2D
核心代码:Mat x = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0), filter2D(t1, t2, -1, x, Point(-1, -1), 0, BORDER_DEFAULT); const uchar* pre = t1.ptr<uchar>(i-1); ...原创 2018-06-29 16:00:59 · 3340 阅读 · 0 评论 -
opencv学习笔记四(一些基本操作)
本文内容在这里面很详细:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/mat%20-%20the%20basic%20image%20container/mat%20-%20the%20basic%20image%20container.htmlCV_8UC3含义详解:https://blog.cs...原创 2018-06-30 10:51:54 · 489 阅读 · 0 评论 -
opencv学习笔记五(单个像素的操作)
反色代码:bitwise_not(src, g); 灰度图反色原理代码如下:#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;Mat t1, t2, t3;int main(int agrc, char** agrv) { ...原创 2018-06-30 11:39:43 · 424 阅读 · 0 评论 -
opencv笔记六(图像混合函数原理)
原理:#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;Mat t1, t2, t3;char *c1 = "old", *c2 = "new";int a=50;void TRY(int, void*);//测试得函数必须是这...原创 2018-06-30 17:04:56 · 473 阅读 · 0 评论 -
opencv笔记七(调整图像亮度和对比度)
原理公式:α可以拉开像素之间的差距,所以增强了对比度,β提高整体亮度。小知识点:再次参考:https://blog.csdn.net/qq_29540745/article/details/52517269其中8U类型指代u_int8_t ,它是平台无关的,在任何平台下,它都代表8位无符号数#include<opencv2/opencv.hpp&g...原创 2018-06-30 21:53:54 · 535 阅读 · 0 评论 -
opencv学习八(绘制直线,矩形等几何形状,添加文字)line,rectangle,fillPoly
要点:LINE_4/LINE_8都有锯齿,LINE_AA无锯齿;新建一个空白图:Mat t1;t1.create(500, 500, CV_8UC3);t1 = Scalar(255, 255, 255);或者Mat t1(500,500,CV_8UC3,Scalar(255,255,255);新建直线:line(t1, p1, p2, color, 1, LINE...原创 2018-07-01 11:44:52 · 4868 阅读 · 1 评论 -
opencv笔记九、十(模糊处理 blur,medianBlur,GaussianBlur,bilateralFilter)
知识点:均值模糊(均值滤波):blur(Mat src,Mat dst,Size(xradius,yradius))// 原图 输出图 滤波窗口x大小,y大小 (长、宽)高斯滤波: GaussianBlur( Mat src, Mat dst, Size(xradius,yradius),double sigmaX, do...原创 2018-07-01 22:16:43 · 3121 阅读 · 0 评论 -
opencv笔记十一(膨胀腐蚀)erode,dilate,getStructuringElement,createTrackbar
膨胀:dilate(Mat src,Mat out,Mat getStructuringElement);腐蚀:erode(Mat src,Mat out,Mat getStructuringElement);动态调整结构元素大小:createTrackbar(const String & trackbarname, const String winName, int* val...原创 2018-07-02 16:25:59 · 918 阅读 · 0 评论 -
opencv笔记十二(形态学操作)morphologyEx(Mat old, Mat new, CV_MOP_OPEN, Mat getStructuringElement )
形态学梯度补充内容(上表只有基本梯度的代码):详见:https://blog.csdn.net/jia20003/article/details/52903385一:概念介绍形态学操作膨胀与腐蚀图像形态学中最基本的两个形态学操作、常常被组合起来一起使用实现一些复杂的图像形态学操作,计算图像的形态学梯度是形态学重要操作之一是有膨胀和腐蚀基础操作适当的组合形成。可以计算的梯...原创 2018-07-02 21:15:29 · 1975 阅读 · 0 评论 -
opencv笔记十三(实例quchu)
VS常用快捷键:F5: 启动调试Ctrl+Shift+L: 删除当前行Ctrl+Shift+V: 剪贴板循环 (平时我们都只**惯用ctrl+c 和ctrl+v 大家可能还不知道事实上微软都已经帮我们把多次剪切的结果都保存了下来 记下这组快捷键吧 可以粘贴上几次剪切的结果 一用便知道它的强大厉害之处)SHIFT + END选择至行尾SHIFT + HOME选择至行开始处c...原创 2018-07-03 09:33:08 · 804 阅读 · 0 评论 -
opencv笔记十四(上采样与降采样、高斯不同DOG)pyrUp,pyrDown
上采样与降采样理论:实际感觉像是图像的缩放。API:上采样:(cv::pyrUp) – zoom in 放大(向底端发展)pyrUp(Mat src, Mat dst, Size(src.cols*2, src.rows*2)) 生成的图像是原图在宽与高各放大两倍降采样: (cv::pyrDown) – zoom out 缩小(向顶端发展)pyrDown(...原创 2018-07-03 10:36:19 · 2573 阅读 · 0 评论 -
opencv笔记十五(二值化THRESHOLD)
基本原理:参考文章:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/threshold/threshold.html阈值类型1:二进制阈值化 该阈值化类型如下式所示: 解释:在运用该阈值类型的时候,先要选定一个特定的阈值量,比如:125,这样,新的阈值产生规则可以解释为大于125的...原创 2018-07-03 20:40:53 · 5586 阅读 · 0 评论 -
opencv笔记十六(常见边缘算子,自定义边缘算子)效果Laplacian>Canny>Sobel>Robert
基础理论:卷积 1,Robert算子(体现斜对角线放线的差异):结果图:2,Sobel算子(体现x方向和y方向的差异)运行结果(优于Robert算子):3,拉普拉斯算子运行结果(较好的保留了轮廓边缘): #include<opencv2/opencv.hpp>#include<iostream>usi...原创 2018-07-04 10:25:10 · 910 阅读 · 0 评论 -
opencv笔记十七(解决图像外围边缘3*3矩阵无法计算问题)BORDER
BORDER_REPLICATE:复制法,也就是复制最边缘像素。如上图,红色区域为src的最边界像素,蓝色区域是扩充的边界,我们将边缘扩大了5个像素(right=5),蓝色区域的宽度就是5,复制了5次红色区域的值这种方式也就是OpenCV中的中值滤波medianBlur采用的边界处理方式 BORDER_REFLECT_101:对称法,也就是以最边缘像素为轴,对称。...原创 2018-07-04 11:17:32 · 2071 阅读 · 0 评论 -
opencv笔记十八(Sobel算子/数据类型)
详细教程:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/sobel_derivatives/sobel_derivatives.html实验步骤如下:(其中步骤1、2可以交换)1,高斯平滑2,转为灰度图3,求梯度x和y4,得到振幅图像API:Sobel...原创 2018-07-04 20:59:52 · 1142 阅读 · 0 评论 -
opencv笔记十九(Laplance算子)
本文参考:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/laplace_operator/laplace_operator.html理论:图像处理流程:高斯模糊 – 去噪声GaussianBlur() 转换为灰度图像cvtColor() 拉普拉斯 – 二阶导数计算...原创 2018-07-04 21:54:04 · 633 阅读 · 0 评论 -
opencv笔记三十四(基于分水岭变换的图像分割,核心操作:去噪声)watershed(t1, t4);t1为CV_8UC3, t4为CV_32SC1,元素为黑色背景为白色
API:(参考https://blog.csdn.net/qq_18343569/article/details/47972245)distanceTransform函数函数的作用:主要用于计算非零像素到最近零像素点的最短距离。一般用于求解图像的骨骼函数调用形式:C++: void distanceTransform(InputArray src, Outpu...原创 2018-07-18 21:50:58 · 705 阅读 · 0 评论 -
opencv笔记三十三(判断点是否在轮廓内部)
pointPolygonTest(InputArray contour,// 输入的轮廓Point2f pt, // 测试点bool measureDist // 是否返回距离值,如果是false,1表示在内面,0表示在边界上,-1表示在外部,true返回实际距离 )返回数据是double类型 #include <opencv2/opencv.h...原创 2018-07-17 23:34:35 · 10061 阅读 · 2 评论 -
opencv笔记三十二(图像矩moments,轮廓面积contourArea,轮廓周长arcLength)
理论来自:https://blog.csdn.net/keith_bb/article/details/701971041.概述图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图像特征提出,而图像不变矩就是其中一个。...原创 2018-07-17 20:03:23 · 29131 阅读 · 4 评论 -
opencv笔记二十九(轮廓发现)findContours(t2, contour, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));
API:cv::findContours( //发现轮廓InputOutputArray binImg, // 输入图像,非0的像素被看成1,0的像素值保持不变,8-bit OutputArrayOfArrays contours,// 全部发现的轮廓对象, /...原创 2018-07-14 18:10:20 · 9829 阅读 · 1 评论 -
opencv笔记二十八(模板匹配(matchTemplate,较为低级必须是原图扣出来的一部分,且长宽都不能变才行,原理类似于卷积))
直观原理来自:https://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html 它是怎么实现的? 我们需要2幅图像: 原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域 模板 (T): 将和原图像比照的图像块 我们的目标...原创 2018-07-14 11:16:06 · 10749 阅读 · 5 评论 -
opencv笔记二十七(直方图反向投影(Back Projection,没看懂视频))
反向投影 – 步骤1.建立直方图模型2.计算待测图像直方图并映射到模型中3.从模型反向计算生成图像 操作步骤:加载图片imread 将图像从RGB色彩空间转换到HSV色彩空间cvtColor 计算直方图和归一化calcHist与normalize Mat与MatND其中Mat表示二维数组,MatND表示三维或者多维数据,此处均可以用Mat表示。 计...原创 2018-07-08 19:38:48 · 406 阅读 · 1 评论 -
opencv笔记二十六(比较两幅图的【直方图的】相似度)compareHist(InputArray h1, InputArray H2, int method//CV_COMP_BHATTACH)
直方图比较方法-相关性计算(CV_COMP_CORREL)d=1:两幅图完全一致d越接近1两幅图越相似 直方图比较方法-卡方计算(CV_COMP_CHISQR)d=0:两幅图完全相同d越小两幅图越相同 直方图比较方法-十字计算(CV_COMP_INTERSECT)【不常用,很不准】 直方图比较方法-巴氏距离计算(CV_COMP_BHAT...原创 2018-07-07 21:37:36 · 2172 阅读 · 0 评论 -
opencv笔记二十五(直方图计算,图像归一化,HSV空间)**
直方图概念:HSV空间:HSV六棱锥H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。相隔120度。互补色分别相差180度。V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。 取值范围:H色调: ...原创 2018-07-05 22:15:48 · 7931 阅读 · 2 评论 -
opencv笔记二十(canny边缘检测)
实验步骤:1,高斯模糊 - GaussianBlur 2,灰度转换 - cvtColor 3,计算梯度 – Sobel/Scharr 4,非最大信号抑制 5,高低阈值输出二值图像API:Canny( InputArray src, // 8-bit的输入图像 OutputArray edges,// 输出边缘图像, 一般都是二值图像,背景是黑色 double...原创 2018-07-04 22:42:13 · 1468 阅读 · 0 评论 -
opencv笔记二十四(直方图均衡化equalizeHist)
直方图均衡化:是一种提高图像对比度的方法,拉伸图像灰度值范围。API:equalizeHist( InputArray src,//输入图像,必须是8-bit的单通道图像 OutputArray dst// 输出结果 ) #include <opencv2/opencv.hpp>#include <iostream>#include &...原创 2018-07-05 21:08:40 · 3872 阅读 · 0 评论 -
opencv笔记二十三(像素重映射remap函数)注意x,y映射表 必须为:CV_16SC2/CV_32FC1/CV_32FC2
API: remap( InputArray src,// 输入图像 OutputArray dst,// 输出图像 InputArray map1,// x 映射表 必须为:CV_16SC2/CV_32FC1/CV_32FC2 InputArray map2,// y 映射表 int interpolation,// 选择的插值方法,常见线性插值INTER_LI...原创 2018-07-05 19:50:11 · 4625 阅读 · 0 评论 -
opencv笔记二十二(霍夫变换检测圆)HoughCircles
核心步骤:中值滤波去噪声hough圆检测原理:https://blog.csdn.net/zhazhiqiang/article/details/51097439因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波。 基于效率考虑,Opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为两步:1. 检测边缘,发现可能的圆心 2. 基于第一步的基础上从候选圆...原创 2018-07-05 16:37:49 · 10059 阅读 · 1 评论 -
opencv笔记二十一(霍夫变换直线)HoughLinesP(InputArray src, OutputArray lines, 1, CV_PI / 180, 30, 10, 10);
核心代码:vector<Vec4f> lines; HoughLinesP(t3, lines, 1, CV_PI / 180, 30, 10, 10); for (size_t i = 0; i < lines.size(); i++) { Scalar color = Scalar(rng.uniform(0, 255), rng.unif...原创 2018-07-05 16:11:05 · 1713 阅读 · 0 评论