
opencv Learning
暖暖的粉红冻奶
这个作者很懒,什么都没留下…
展开
-
opencv(4)---Mat数据类型与颜色空间
一 opencv常用的数据结构Point类Point类数据结构表示二维坐标系的点,由坐标x, y指定的2D点. Point pt; pt.x=10; pt.y=20; cout<<pt<<endl;运行结果: Rect类Rect类用来表示矩形. 1. 成员变量 x y width height 2. 成员函数 1)Size() 返回值Size表示大小 2转载 2017-04-18 23:26:57 · 7808 阅读 · 0 评论 -
opencv(19)---模板匹配及应用
基本概念模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的, 而是通过在输入图像上滑动图像块(模板)同时比对相似度, 来对模板和输入图像进行匹配的一种方法。缺点(1)不适应角度变换和旋转 (2)不适应尺度变换应用①目标查找定位 ②运动物体跟踪 ③其他…模板匹配—matchTemplate()函数原型void matchTemplate( Input转载 2017-05-16 15:45:46 · 670 阅读 · 0 评论 -
opencv(18)---直方图计算以及绘制
基本概念直方图是对数据进行统计的一种方法, 可以直观表现图像某属性的数值(频率)分布情况, 包括灰度直方图、RGB直方图等数字直方图 图像直方图 相关概念函数原型CV_EXPORTS void calcHist( const Mat* images, int nimages, const int* channels, InputArray ma转载 2017-05-15 22:23:12 · 858 阅读 · 0 评论 -
opencv(14)---图像阈值化
基本概念图像阈值化是图像处理的重要基础部分, 应用很广泛, 可以根据灰度差异来分割图像不同部分阈值化处理的图像一般为单通道图像(灰度图)阈值化参数的设置可以使用滑动条来debug阈值化处理易光照影响, 处理时应注意本节主要介绍的图像阈值化函数方法: 固定阈值:threshold() 自适应阈值:adaptiveThreshold()固定阈值—threshold()转载 2017-05-06 10:00:41 · 638 阅读 · 0 评论 -
opencv(13)---图像滤波
基本概念滤波实际上是信号处理的一个概念,图像可以看成一个二维信号,其中像素点 灰度值得高低代表信号的强弱高频:图像中变化剧烈的部分 低频:图像中变化缓慢,平坦的部分根据图像高低频特性,设置高通和低通滤波器 高通滤波可以检测图像中尖锐、变化明显的地方; 低通滤波可以让图像变得平滑,消除噪声干扰图像滤波是OpenCV图像处理的重要部分,在图像预处理方面应用广泛,图像 滤波的好坏决定着后转载 2017-05-05 17:44:38 · 1038 阅读 · 0 评论 -
opencv(33)- - -SURF特征检测
基本概念SURF(SpeededUp Robust Features)—加速稳健特征算法, 在2006 年由Bay.H和Van Gool.L共同提出, SURF是尺度不变特征变换SIFT的加速版。一般来说, 标准的SURF算子比SIFT算子快好几倍, 并且在多幅图像下具有更好的稳定性。SURF最大的特征在于采用了harr特征以及积分图像的概念, 这大大加快了程序运行时间,可以应用于物体识别以及三维重转载 2017-05-24 22:12:51 · 1278 阅读 · 0 评论 -
opencv(31)---SIFT特征匹配
SIFT特征提取匹配步骤① 使用SiftFeatureDetector的detect方法检测特征存入一个向量里(可以使用drawKeypoints在图中标识出来) ② 使用SiftDescriptorExtractor的compute方法提取特征描述符(特征向量),特征描述符是一个矩阵 ③ 使用匹配器matcher对描述符进行匹配 ④ 匹配结果保存由DMatch的组成的向量里设置距离阈值, 使转载 2017-05-24 21:57:57 · 1072 阅读 · 0 评论 -
opencv(30)---特征检测与匹配(1)---SIFT特征点提取
基本概念特征点的检测和匹配是计算机视觉中非常重要的技术之一, 在物体识别、视觉跟踪、三维重建等领域都有很广泛的应用。OpenCV提供了如下几种特征检测方法:“FAST”——FastFeatureDetector“STAR”——StarFeatureDetector“SIFT”——SIFT(nonfree module)“SURF”——SURF(nonfree module)“ORB”——O转载 2017-05-24 21:22:46 · 8007 阅读 · 0 评论 -
opencv(12)---图像几何变换
图像缩放—resize()函数原型src: 输入图像,Mat类型即可 dst: 输出图像,当其非0时,由dsize确定尺寸 dsize: Size类型,指定输出图像大小,如果它等于0,由下式计算: dsize = Size(round(fx*src.cols), round(fy*src.rows)) fx: 沿水平方向的缩放系数,默认值0,等于0时,由下式计算: (dou转载 2017-05-05 12:45:53 · 1946 阅读 · 0 评论 -
opencv(20)---轮廓查找与绘制
轮廓基本概念轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度,提取轮廓就是提取这些具有相同颜色或者灰度的曲线,或者说是连通域,轮廓在形状分析和物体的检测和识别中非常有用。注意事项①为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测 ②查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存转载 2017-05-21 16:15:50 · 1093 阅读 · 0 评论 -
opencv(21)---轮廓属性特征以及应用之凹包
凸包基本概念凸包(Convex Hull)是一个计算机几何图形学中的概念, 简单来说, 给定二维平面点集, 凸包就是能够将最外层的点连接起来构成的凸多边形, 它能够包含点集中所有的点。物体的凸包检测场应用在物体识别、手势识别及边界检测等领域。寻找凸包—convexHull()函数原型points: 输入的二维点集, 可以填Mat类型或std::vectorhull: 函数调用后找到的凸包clo转载 2017-05-21 21:01:42 · 10038 阅读 · 7 评论 -
opencv(25)---轮廓特征属性及应用之矩
点与轮廓的距离及位置关系函数原型double pointPolygonTest( InputArray contour, Point2f pt, bool measureDist );contour: 所需检测的轮廓对象pt: Point2f 类型的pt, 待判定位置的点measureDist: 是否计算距离的标志, 当其为true时, 计算点到轮廓的最短距离, 当其为false时, 只判定轮转载 2017-05-22 21:57:41 · 697 阅读 · 0 评论 -
opencv(24)---轮廓特征属性及应用之最小外接圆
最小外接圆函数原型—minEnclosingCircle()void minEnclosingCircle( InputArray points, CV_OUT Point2f& center, CV_OUT float& radius );points: 输入的二维点集, 可以填Mat类型或std::vectorcenter: Point2f&类转载 2017-05-22 19:23:27 · 6344 阅读 · 0 评论 -
opencv---相机标定
参考文章http://blog.youkuaiyun.com/aptx704610875/article/details/48914043 https://my.oschina.net/abcijkxyz/blog/787659 http://blog.youkuaiyun.com/hust_bochu_xuchao/article/details/51838732坐标系之间的关系计算机视觉领域中常见的三个坐标系:图像转载 2017-06-01 17:10:17 · 2884 阅读 · 0 评论 -
opencv(23)---轮廓特征属性及应用之最小外接矩形
轮廓最小外接矩形—minAreaRect()函数原型points: 输入的二维点集, 可以填Mat类型或std::vector 返回值: RotatedRect类矩形对象, 外接旋转矩形主要成员有center、size、 angle、points注意点在opencv中,坐标的原点在左上角,与x轴平行的方向为角度为0,逆时针旋转角度为负,顺时针旋转角度为正。而RotatedRect类是以矩形的哪一条转载 2017-05-22 12:26:25 · 15272 阅读 · 4 评论 -
opencv---FileStorage
参考地址: http://blog.youkuaiyun.com/jarvischu/article/details/8481510 《Learning opencv3》完成功能创建XML向XML中存储或者是读取Int float型基本数据通过创建XML元素,存取复杂的结构如:结构体、矩阵基础知识数据存在opencv3提供一种机制用于序列化和去序列化,可以操作disk中的YAML文件或者XML文件。转载 2017-06-01 21:19:34 · 3620 阅读 · 0 评论 -
opencv(22)---轮廓特征属性及应用之使用特定形状的轮廓
使用特定形状的轮廓包围基本概念在实际应用中, 经常会有将检测到的轮廓用多边形表示出来的需求, 提取包围轮廓的多边形也方便我们做进一步分析, 轮廓包围主要有一下几种: - 轮廓外接矩形 - 轮廓最小外接矩形(旋转) - 轮廓最小包围圆形 - 轮廓拟合椭圆 - 轮廓逼近多边形曲线轮廓外接矩形不能进行旋转,为下图中所示的绿色框。 函数原型轮廓外接矩形—boundingRect转载 2017-05-21 23:29:27 · 720 阅读 · 1 评论 -
opencv(29)---角点检测
角点检测基本概念1.兴趣点 在图像处理和计算机视觉领域, 兴趣点(interest points)也被称为关键点(key points)或者特征点(feature points)被大量用于解决物体识别、图像识别、图像匹配、视觉跟踪、三维重建等一系列问题。我们不再观察整幅图, 而是选择某些特殊的点, 然后对它们进行分析, 如果能检测到足够的这种点, 同时它们的区分度很高, 并转载 2017-05-24 17:20:40 · 1676 阅读 · 0 评论 -
CvArr、Mat、CvMat、IplImage、BYTE;QPixmap和QImage
原文地址: http://blog.youkuaiyun.com/wuxiaoyao12/article/details/7305848他们之间转换过程如下图所示 其中:CVArr->CvMat->IplImage 三者的继承关系1. IplImage pImg= IplImage(imgMat);2. CvMat cvMat = imgMat;3. IplImage* img = cvCreat转载 2017-04-13 13:00:32 · 1125 阅读 · 0 评论 -
opencv(15)---图像膨胀腐蚀
基本概念概述膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作膨胀腐蚀是基于高亮部分(白色)操作的, 膨胀是対高亮部分进行膨胀, 类似“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域被蚕食”膨胀腐蚀的应用和功能: 消除噪声 分割独立元素或连接相邻元素 寻找图像中的明显极大值、极小值区域 求图像的梯度其他相关: 开运算、闭运算 顶帽、黑帽 形态学梯度转载 2017-05-12 09:40:12 · 744 阅读 · 0 评论 -
opencv(10)---对比度亮度调整与通道分离与合并
对比度亮度调整原理g(x)=a*f(x)+b;其中,a用于控制对比度,b用于控制亮度代码#include "mainwindow.h"#include <QApplication>#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;#define WIN_NAME "输出转载 2017-05-03 20:47:04 · 457 阅读 · 0 评论 -
opencv(9)---图像基本操作
代码#include "mainwindow.h"#include <QApplication>#include <iostream>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;int main(int argc, char *argv[]){ QApplication a(argc,转载 2017-05-03 12:43:48 · 1053 阅读 · 0 评论 -
opencv(7)----实例应用2
鼠标截图程序主要功能鼠标左键按下拖动显示轨迹,鼠标左键弹起显示截图并保存截图到本地代码实现mainwindow.cppMat img=imread("D:\\1\\1.png");Mat temp;temp=img.clone();bool flag=false;//鼠标消息回调函数void OnMouse(int event, int x, int y, int flag, void* p转载 2017-04-20 16:14:51 · 307 阅读 · 0 评论 -
opencv(6)---鼠标与滑动条操作
鼠标操作一 函数定义指定鼠标操作消息回调函数,setMouseCallback(),原型如下CV_EXPORTS void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0);winname—–窗口名onMouse—–鼠标事件时被调用的函数指针,原型形式: void Fun(int e转载 2017-04-19 20:56:15 · 631 阅读 · 0 评论 -
opencv(5)---绘图函数
常用的绘图函数 一 line函数定义/** @brief Draws a line segment connecting two points.The function line draws the line segment between pt1 and pt2 points in the image. The line isclipped by the image boundaries.转载 2017-04-19 17:47:28 · 1294 阅读 · 0 评论 -
opencv---文件操作总结
文章地址 http://blog.youkuaiyun.com/ei__nino/article/details/7301132 http://blog.youkuaiyun.com/xgbing/article/details/7772953文件读写QDataStreamhttp://blog.youkuaiyun.com/u010847519/article/details/68065599#include "mainwind转载 2017-04-30 19:28:30 · 1072 阅读 · 0 评论 -
opencv---小知识记录
结束进程结束进程在ThreadDialog中构建了两个进程,threadA和threadB。 在关闭ThreadDialog后,这两个进程都需要结束 代码如下:void ThreadDialog::closeEvent(QCloseEvent *event){ threadA.terminate(); threadB.terminate(); threadA.wait()原创 2017-04-30 16:50:18 · 320 阅读 · 0 评论 -
opencv(16)---图像边缘检测
边缘检测概述作用边缘检测可以提取图像重要轮廓信息, 减少图像内容, 可以用于分割图像、做特征提取等一般步骤滤波—-(滤出噪声対检测边缘的影响) 增强—-(可以将像素邻域强度变化凸显出来—梯度算子) 检测—-(阈值方法确定边缘)边缘检测算子Canny算子 Sobel算子 Scharr算子 Laplacian算子 Roberts 算子、Prewitt算子… …Canny边缘检测Can转载 2017-05-12 10:50:00 · 660 阅读 · 0 评论 -
opencv(8)---访问图像像素
预备知识1. 图像在内存中的存储形式图像矩阵的大小取决于所采用的通道数 1)灰度矩阵的存储方式2)彩色图像的存储方式 注意: opencv的通道顺序是BGR,而不是RGB下面进行验证 代码1 : Mat mat(200,300,CV_8UC3,Scalar(255,0,0)); imshow("Blue---Scalar(255,0,0)",mat);运行结果: 代码2:转载 2017-04-21 15:48:12 · 498 阅读 · 0 评论 -
opencv(28)---GrabCut & FloodFill图像分割
GrabCut图像分割算法基本概念OpenCV中的GrabCut算法是Graphcut算法的改进, Graphcut是一种直接基于图割算法的图像分割技术, 仅仅需要确认前景和背景输入, 该算法就可以完成前景和背景的最优分割, 算法依据《“GrabCut” - Interactive Foreground Extraction using Iterated Graph Cuts》这篇文章来实现的。该算转载 2017-05-24 14:17:26 · 3900 阅读 · 1 评论 -
opencv(11)---ROI与mask图像
感兴趣区域ROI基本概念ROI—(region of interest)—感兴趣区域 1 形状 一般为矩形区域 2 作用 能够确定分析重点,减少处理时间,增加精度 3 定义方法 使用Rect表示矩形区域或用Range设定行列范围作用1.交通灯检测 只分析图片正上方的一部分区域 2.人脸识别 将处理范围缩小 3.车牌识别 减少误拍,提高处理的速度和精度代码1转载 2017-05-04 20:05:42 · 3395 阅读 · 0 评论 -
opencv(27)---分水岭算法及图像修补
分水岭算法基本概念1.任何一副灰度图像都可以被看成拓扑平面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。我们向每一个山谷中灌不同颜色的水。随着水的位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水汇合,我们需要在水汇合的地方构建起堤坝。不停的灌水,不停的构建堤坝知直到所有的山峰都被水淹没,我们构建好的堤坝就是对图像的分割。2.在真实图像中,由于噪声点或者其它干扰因素的转载 2017-05-23 23:33:54 · 918 阅读 · 0 评论 -
opencv(3)---图片/视频处理应用
一 批量处理图片一. 有序图片的读取对有序的解释 原先图片的名字格式为 1(1).bmp 1(2).bmp 1(3).bmp 1(4).bmp… 或者 1.bmp 2.bmp 3.bmp 4.bmp….1.实现的功能 根据图片名的规律对文件名进行格式化,统一读入处理 2.代码#include "mainwindow.h"#include <opencv2/ope转载 2017-04-16 22:23:46 · 483 阅读 · 0 评论 -
opencv(2)---摄像头/视频读取_写入
VideoCapture类用于处理摄像头/视频读取_写入操作。一 基本概念VideoCapture1.VideoCapture有三种构造方法 /** @brief @note In C API, when you finished working with video, release CvCapture structure with cvReleaseCapture(), or u转载 2017-04-16 13:46:25 · 3920 阅读 · 0 评论 -
opencv(17)---霍夫变换以及应用
基本概念霍夫变换(Hough Transform)是图像处理中的一种特征提取技术, 该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换的结果。霍夫变换在OpenCV中主要分两种: 霍夫线变换—检测直线(线段) 霍夫圆变换—检测圆用到的函数: HoughLines()—标准霍夫变换、多尺度霍夫变换 HoughLinesP()—累计概率霍夫变换 H转载 2017-05-12 20:59:14 · 2249 阅读 · 0 评论 -
Opencv(1)---图像读取、显示、保存
一 图像处理基本概念1. 图像处理的一般过程 2. 图像的基本操作 3.图像的基本属性1).empty() 判断文件读取是否正确2).rows 获取图像行数(高度)3).cols 获取图像列数(长度)4).channels() 获取图像通道数5).depth() 获取图像位深度实例1Mat img = imread(“1.jpg”);If(img.empty()) //异常处理{转载 2017-04-15 13:59:22 · 1323 阅读 · 0 评论 -
opencv(26)---轮廓特征属性及应用之颜色空间
HSV颜色空间HSV颜色空间与人眼所看色彩较接近, 故常用于颜色检测与识别。其中H(色调)、S(饱和度)、V(亮度)H—不同的颜色(红色/绿色/蓝色)—范围: 0~360S—颜色深浅(浅红/深红)—范围: 0.0~1.0V—颜色亮暗(暗红/亮红)—范围: 0.0~1.0OpenCV默认的HSV范围分别是: H: 0~180, S: 0~255, V: 0~255颜色空间转换—cvtC转载 2017-05-23 15:25:39 · 2205 阅读 · 0 评论 -
opencv---任务1
实现功能:1.选择所需要的图片 2.将选取的图片显示出来 3.将图片进行简单处理 4.将处理后的图片保存在特定的文件夹,如果文件夹存在,直接保存;如果文件夹不存在,需要创建文件夹; 5.将图片信息保存在一个txt文件中,同时需要确定txt文件所在的文件夹是否存在。如果,文件夹存在,不需要创建,如果文件夹不存在,需要创建。代码mainwindow.h#ifndef MAINWINDOW_H#原创 2017-04-22 15:55:54 · 458 阅读 · 0 评论