
opencv
文章平均质量分 80
zzyczzyc
越努力越幸运
展开
-
灰度变换函数
imadjustg=imadjust( f, [low_in high_in] ,[low_out,high_out],gamma)功能:将输入图像 f 中灰度值 映射为图像 g中新值参数说明:[low_in high_in] ,[low_out,high_out] 默认[0 1]将[low_in high_in] 之间的值映射到[low_out,high_out]...原创 2018-11-05 22:59:10 · 2276 阅读 · 0 评论 -
霍夫变换(Hough Circle Transform)-圆检测
官网教程代码在这里插入代码片OpenCV APIvoid cv::HoughCircles( InputArray image, // 8-bit, single-channel, grayscale input image.OutputArray circles, // 输出检测到的圆,参数是 float型 (x,y,radius)int me...原创 2019-01-09 21:44:20 · 3693 阅读 · 0 评论 -
反向投影(Back Projection)
原理代码OpenCV API复制输入图像的一个通道到输出图像的一个通道void cv::mixChannels( const Mat * src, // 输入图像的数组,每个图像都必须相同size和depthsize_t nsrcs, //输入图像的个数Mat * dst, //输出图像数组,所有图像必须是已经被分配好大小、深...原创 2019-01-25 16:38:16 · 5583 阅读 · 0 评论 -
直方图比较
原理如何对两个直方图进行比较,通过一种度量方法来判断两个直方图的相似程度。两个直方图:H1H2H_1 H_2H1H2,规定 d(H1,H2)d(H_1,H_2)d(H1,H2)他们之间的匹配程度,OpenCV给出了几种方法:Correlation ( CV_COMP_CORREL )Chi-Square ( CV_COMP_CHISQR )Intersectio...原创 2019-01-24 22:27:42 · 366 阅读 · 0 评论 -
霍夫变换(Hough Line Transform)-直线检测
OpenCV官网参考1原理直角坐标表示用y=mx+by=mx+by=mx+b 描述一条直线, m是斜率, b是截距,m和b是参数。如果将上面 的式子改写:b=−mx+yb=-mx+yb=−mx+y ,x和y 是参数。根据以上两个式子得出结论:给定一个点(x,y),对应到 2 上就是一条直线,x 相当于斜率,y相当于截距。如果给定一系列的点(x1,y1)、(x2,y2)、(x3,...原创 2019-01-08 22:44:16 · 4284 阅读 · 1 评论 -
直方图均衡(Histogram Equalization)
官网教程原理原理参考 ,或者数字图像处理p72将图像像素值概率分别拉升,扩大分别范围,提高对比度,应用于背景和前景像素差别不大最终的映射公式:sk=T(rk)=(L−1)∑j=0kPr(rj)=L−1MN∑j=0knj     &原创 2019-01-23 19:27:19 · 9260 阅读 · 0 评论 -
仿射变换(affine transformation)
原理代码OpenCV API计算放射矩阵map_matrix ( 2×3), Mat cv::getAffineTransform ( const Point2f src[], // 原图像的三个顶点 const Point2f dst[] //目的图像的三个顶点 ) 对一幅图像进行仿射变换 void cv...原创 2019-01-11 18:02:52 · 2065 阅读 · 0 评论 -
Sobel算子-边界检测
OpenCV官方教程原理Sobel算子近似计算图像梯度Horizontal 方向的变化:III是输入图像,算出的Gx:G_x:Gx:[−10+1−20+2−10+1]∗I \left[\begin{matrix}-1 & 0 & +1 \\-2& 0 & +2 \\-1 &原创 2019-01-01 22:35:37 · 1310 阅读 · 0 评论 -
给图像添加边界
OpenCV官网教程原理 一般在处理卷积操作的时候,遇到图像边界要么扩大图像,要么图像边界不做处理。对于增加图像边界通常有很多方法,这里介绍两种,使用的是OpenCV API cv::copyMakeBorder()BORDER_CONSTANT:给边界填充常量BORDER_REPLICATE:将原来的边界复制到扩大的边界例程在这里插入代码片结果:OpenCV API...原创 2019-01-01 19:34:51 · 1301 阅读 · 0 评论 -
Remapping
原理代码OpenCV API原创 2019-01-10 18:55:41 · 790 阅读 · 0 评论 -
基于距离变换和分水岭算法的图像分割
原理代码#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;double maxVal, minVal;int main(void){ Mat src = imread("../res/cards.png&原创 2019-01-31 16:54:58 · 839 阅读 · 2 评论 -
模板匹配(template matching)
原理什么是模板匹配?你有一副原图像,还有一小块模板(很小的图像,有可能来源于原图像),通过模板找出原图中和模板相似的位置。如何实现匹配?原图(I):我们需要在上面找到和模板匹配的图像模板(T):一小块图像,是我们需要在原图中找到和它相似的区域位置的图像方法:一直用模板在原图上进行移动,从左到右,从上到下,每移动一个像素,便去在模板区域内计算 “一种度量(度量)”,然后将"度量"结果存...原创 2019-01-26 21:08:20 · 8467 阅读 · 0 评论 -
检测轮廓(Finding Contours)
官网链接代码#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;Mat src_gray;int thresh = 100;RNG rng(12345);void thresh_callba原创 2019-01-27 16:19:15 · 336 阅读 · 0 评论 -
FLANN_Based SURF特征匹配
官网教程介绍FLANN(Fast Library for Approximate Nearest Neighbors)在一个描述符集合(询问集)中找另一个集合(相当于训练集)的最近邻。例子#include <iostream>#include <vector> #include <opencv2/xfeatures2d.hpp>#includ...原创 2019-04-12 18:28:25 · 310 阅读 · 0 评论 -
Shi-Tomasi角点检测
理论介绍在Harris角点检测的介绍时候得到协方差矩阵MMM,它的特征值:λ1,λ2\lambda_1 ,\lambda_2λ1,λ2Harris打分函数:R=det(M)−k(Trace(M))2R=det(M)-k(Trace(M))^2R=det(M)−k(Trace(M))2det(M)=λ1λ2det(M)=\lambda_1\lambda_2det(M)=λ1λ2T...原创 2019-04-11 11:30:20 · 662 阅读 · 0 评论 -
Harris角点检测
opencv官网教程参考1参考2理论代码原创 2019-03-08 22:57:03 · 312 阅读 · 0 评论 -
opencv_contrib模块安装与概述
文章目录安装概述aruco :增强现实bgsegm:背景分割bioinspired:生物视觉ccalib:自定义标定cnn_3dobjcvvdatasetsdnn_objdetectdnns_easily_fooleddpmfacefuzzyfreetypehdfline_descriptormatlaboptflowovisplotregrgbdsaliencysfmstereostructur...原创 2019-02-26 22:58:18 · 7559 阅读 · 0 评论 -
检测点是否在轮廓、多边形的内部
OpenCV官网代码#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;int main(void){ const int r=100; Mat src = Mat::zeros(Size(4*r, 4*r), C...原创 2019-01-30 20:42:51 · 1017 阅读 · 0 评论 -
图像的矩
原理代码#include &amp;lt;opencv2/opencv.hpp&amp;gt;#include &amp;lt;iostream&amp;gt;using namespace cv;using namespace std;Mat src_gray;int thresh = 100;RNG rng(12345);void thresh_callback(int, void*)原创 2019-01-29 22:26:05 · 968 阅读 · 0 评论 -
轮廓的最小外接矩形、最小外接圆、三角形、椭圆等
OpenCV官网#include &amp;amp;amp;lt;opencv2/opencv.hpp&amp;amp;amp;gt;#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;using namespace cv;using namespace std;Mat src_gray;int thresh = 100;RNG rng(12345);原创 2019-01-28 19:11:59 · 6122 阅读 · 0 评论 -
凸包(Convex Hull)
凸包介绍代码#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;RNG rng(1);#define MAX_POINTS 50 //最大点数int num_points =20; //默认点数void ConvexHul...原创 2019-01-27 20:42:20 · 930 阅读 · 0 评论 -
Canny算子-检测边界
原理例子OpenCV API原创 2019-01-04 21:59:43 · 672 阅读 · 0 评论 -
Laplace 算子-边界检测
原理当一个图像在像素值变化大的地方(比如边界),对其取 first derivative ,得到:取 second derivative 得到 :变化最大的地方,一阶导数最大,二阶导数为0,前者是Sobel算子所为,后者便是 Laplace 算子所为公式因为图像是2D的,所以对两个方向求二阶导数:例子在这里插入代码片结果:OpenCV API内部调...原创 2019-01-04 21:41:25 · 329 阅读 · 0 评论 -
图像亮度和对比度调整
文章目录理论基础alpha, beta correctiongamma correction理论基础图像处理一般分为两种,一种基于像素点的操作,一种是邻域操作。所介绍的两种方法( alpha/beta correction ,gamma correction)都是基于像素操作,和邻域的值没有关系。alpha, beta correction原理:g(i,j)=α⋅f(i,j)+β...原创 2018-12-01 19:07:45 · 2021 阅读 · 0 评论 -
基本绘图、随机生成器、字体
标题翻译 2018-12-02 20:01:22 · 4383 阅读 · 0 评论 -
图像混合
原理g(x)=(1−α)f0(x)+αf1(x)g(x)=(1−α)f0(x)+αf1(x)g(x)=(1−α)f0(x)+αf1(x)f0和f1是输入图像,gx是输出图像f0和f1是输入图像,gx是输出图像f0和f1是输入图像,gx是输出图像代码在这里插入代码片...原创 2018-11-26 22:14:20 · 293 阅读 · 0 评论 -
矩阵的掩膜操作
掩膜操作的数学表示公式:I(i,j)=5∗I(i,j)−[I(i−1,j)+I(i+1,j)+I(i,j−1)+I(i,j+1)]I(i,j)=5∗I(i,j)−[I(i−1,j)+I(i+1,j)+I(i,j−1)+I(i,j+1)]I(i,j)=5∗I(i,j)−[I(i−1,j)+I(i+1,j)+I(i,j−1)+I(i,j+1)]I∗[0−10−15−10−10]=OI* \...原创 2018-11-26 11:54:19 · 837 阅读 · 1 评论 -
如何扫描一幅图像
文章目录图像的存储结构用指针扫描(官网:Efficient Way)用迭代器(iterator way : safe)On-the-fly RALUT Core Function比较几种扫描方法的效率图像的存储结构单通道图像多通道图像(BGR顺序)用指针扫描(官网:Efficient Way)预备知识:大部分情况下,一张图像的存储是连续的,这样我们可以得到首地...原创 2018-11-24 18:24:17 · 622 阅读 · 0 评论 -
ubuntu16.04源码安装opencv3.1.0
文章目录源码准备安装依赖源码准备下载源码,opencv官网,得到 .zip的压缩文件(默认在~/Downloads下),进入Downloads文件下,解压文件到用户目录下(自己随意) ,unzip opencv-3.1.0.zip -d …/安装依赖有一点需要说明的是,opencv有很多依赖库,根据自己需要安装,缺少依赖库会影响他的部分功能(有的可能你本来也用不到,根据自己需求,以...原创 2018-11-17 22:17:53 · 3324 阅读 · 3 评论 -
图像的加载、修改、保存
目标加载一幅图像:cv::imread()将RGB图转化成灰度图像:cv::cvtColor()将图像存入磁盘: cv::imwrite()显示图像:cv::namedWindows与cv::imshow()函数说明cv::imread()返回值:将图像转成Mat对象 返回第一个参数:图像名(可加路径)第二个参数(常见有三种): IMREAD_UNCHANGE...原创 2018-11-19 23:04:31 · 282 阅读 · 0 评论 -
VS2013+OpenCV3.1.0环境搭建
文章目录本人环境1. 下载源码2. 添加环境变量3. 新建工程4. 测试处理警告信息本人环境Win10+64位+VS2013+Opencv3.1.0(只要环境变量和库目录配置没问题,一般和系统关系不大)1. 下载源码从官网下载安装到特定目录(如我的目录 E:\opencv)2. 添加环境变量我的电脑->右击属性->高级系统设置->环境变量->找到P...原创 2018-11-19 11:19:37 · 483 阅读 · 0 评论 -
图像金字塔
原理图像金字塔的概念:如上图所示:一系列图像的集合,最底层是原始图像,然后长宽各缩小 12\frac{1}{2}21(即缩小4倍),循环下去,直到最后只有一个像素。两种常见的图像金字塔:Gaussian pyramid: 通常用来进行下采样图像(zoom out)Laplacian pyramid: 通常用来进行上采样图像(zoom in)高斯金字塔:分为两个步骤...原创 2018-12-18 22:22:45 · 2365 阅读 · 0 评论 -
形态学:击中、不击中
原理作用:在二值图像中找到匹配公式:A⊛B=(A⊖B1)∩(Ac⊖B2)A⊛B=(A⊖B1)∩(A^c⊖B2)A⊛B=(A⊖B1)∩(Ac⊖B2)用 kernel B1B1B1 腐蚀A用 kernel B2B2B2 腐蚀A的补集求1和2所得结果的交集解释:比如kernel B1 B2如下左中,目的找到匹配B1,但是不匹配B2的区域,B1和B2也可以直接由B(右)表示。...原创 2018-12-11 11:49:35 · 1779 阅读 · 0 评论 -
Filter2D 滤波
correlation with kernel核在图像上扫描的结果,公式: III是输入图像,KKK是核,MiMjM_i M_jMiMj是核的大小,aiaja_i a_jaiaj是anchor代码在这里插入代码片结果:OpenCV API...原创 2018-12-27 13:45:40 · 753 阅读 · 0 评论 -
使用inRange进行阈值操作
HSV色域空间Hue(色调):色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等Saturation(饱和度):色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。Value(亮度值):描述的是色彩的亮度,取值0-1,0 就是黑色,1(饱和度为0)为白色。 官方代码在这里插入代码片OpenCV API...原创 2018-12-27 10:32:53 · 2203 阅读 · 0 评论 -
形态学:开、闭、梯度、顶帽、黑帽
原理官方代码原创 2018-12-10 17:34:40 · 288 阅读 · 0 评论 -
阈值操作
阈值操作OpenCV 提供了 cv::threshold,一共有5种不同的阈值操作蓝色的横线表示阈值, 红色表示像素值 Threshold Binary Threshold Binary, Inverted Truncate Threshold to Zero Threshold to Zero, Inverted 代码在这...原创 2018-12-20 21:39:30 · 1001 阅读 · 0 评论 -
形态学:提取横线、竖线
原理OpenCV官网教程通过使用不同形状的核,得到不同的结果提取横线:经过先腐蚀,再膨胀,得到直线。提取竖线:经过先腐蚀,再膨胀,得到竖线。代码官方API void cv::adaptiveThreshold( InputArray src, // 输入图像OutputArray dst, //输出图像dou...原创 2018-12-15 14:38:02 · 1855 阅读 · 0 评论 -
形态学:腐蚀与膨胀
xx原创 2018-12-09 17:38:52 · 586 阅读 · 0 评论 -
图像平滑
均值滤波原理:窗口中的像素值的权重都一样,比如3*3的Kernel:13×3[111111111]\frac{1}{3\times 3} \left[\begin{matrix} 1 &amp;amp;amp;amp;amp;amp; 1 &amp;amp;amp;amp;amp;amp; 1 \\ 1 &amp;amp;amp;amp;amp;amp; 1 &amp;amp;amp;amp;amp;amp; 1 \原创 2018-12-05 22:59:03 · 367 阅读 · 0 评论