OpenCV
小伟锅
进阶的小白,大神梦!
展开
-
OpenCV的setTo函数及Mat mat=labels==1详解
opencv的setTo函数是将图像设置为某个值,比如有一个Mat src,想将他的值全部设置成0,则可以src.setTo(0) 另外,setTo还有更为高级的用法:1.对于一个已知的src,我们要将其中大于或者小于某个值的像素值设置为指定的值,则可以如下:src.setTo(0,src 2.src.setTo(颜色值,mat);这里的意思是,将mat矩阵中值为255位置与其相原创 2017-07-08 20:37:21 · 3260 阅读 · 0 评论 -
OpenCV之findContours函数及参数讲解
findContours函数为查找图像轮廓函数(在查找轮廓前需对图像进行预处理为二值化图像,否则无法查找轮廓),可通过drawContours函数将找到的轮廓画出来, findContours函数,这个函数的原型为:void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray原创 2017-07-17 19:59:20 · 1470 阅读 · 0 评论 -
OpenCV之Point、Scalar数据类及基本绘图
目的学习Point定义及用Point在图像中定义2D点学习Scalar定义及如何使用Scalar用OpenCV的函数line绘 直线用OpenCV的函数ellipse绘 椭圆用OpenCV的函数rectangle绘 矩形用OpenCV的函数circle绘 圆用OpenCV的函数fillPoly绘 填充的多边形 OpenCV 原理本节中,我门将大量使用Poin原创 2017-07-17 20:46:16 · 12425 阅读 · 0 评论 -
OpenCV之简单矩阵运算
1.矩阵的点运算add(), subtract(), multiply(), divide(), absdiff(), bitwise_and(), bitwise_or(), bitwise_xor(), max(),min(), compare()对应:加,减,点乘,点除,点绝对差,点位运算—与,点位运算—或,点位运算—异或,点最大,点最小,点比较。Example. Alph原创 2017-07-17 21:32:24 · 438 阅读 · 0 评论 -
OpenCV之Mat类详解
Mat - 基本图像容器目的 学习Mat矩阵,了解图像的存储和Mat矩阵的使用Mat 2001年OpenCV刚出来的时候,是基于C语言接口而建。为了在内存(memory)中存放图像,当时采用名为 IplImage 的C语言结构体。其中最大的不足要数手动内存管理,用户要为开辟和销毁内存负责。一旦代码开始变得越来越庞大,会越来越多地纠缠于这个问题。 C++出现了,原创 2017-07-18 20:24:25 · 500 阅读 · 0 评论 -
OpenCV之RotatedRect类、minAreaRect函数详解
一、RotatedRect类RotatedRect该类表示平面上的旋转矩形,该类对象有三个重要属性:矩形中心点(质心),边长(长和宽),旋转角度。三种构造函数和三种成员操作函数,RotatedRect类定义如下:class CV_EXPORTS RotatedRect { public: //构造函数 RotatedRect(); RotatedRect(const Point2原创 2017-07-19 11:37:13 · 18659 阅读 · 1 评论 -
OpenCV之颜色空间转换:cvtColor()函数
cvtColor()函数是OpenCV里的颜色空间转换函数,可以实现RGB颜色向HSV、HSI等颜色空间的转换,也可以转换为灰度空间。原型如下:void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )第一个参数为输入图像,第二个参数为输出图像,第三个参数为颜色空间转换的标识符,第四个参数为目标图像的通道数,原创 2017-07-19 16:17:38 · 1939 阅读 · 0 评论 -
OpenCV之通道和位深的理解(CV_8UC1,CV_8SC1,CV_32FC1)
矩阵数据类型: – CV_(S|U|F)CS = 符号整型 U = 无符号整型 F = 浮点型CV_8UC1 是指一个8位无符号整型单通道矩阵,CV_32FC2是指一个32位浮点型双通道矩阵CV_8UC1 CV_8SC1 CV_16U C1 CV_16SC1 CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2 CV_8UC3 CV_8SC3 C原创 2017-07-19 16:51:46 · 19811 阅读 · 0 评论 -
OpenCV之VideoCapture的使用——打开网络摄像头/图像序列
OpenCV中的VideoCapture不仅可以打开视频、usb摄像头,还可以做很多事,例如读取流媒体文件,网络摄像头,图像序列等。OpenCV如何读取usb摄像头可以参考本人的另外一篇,地址如下:点击打开链接 。本文介绍如何读取网络摄像头、图像序列,并给出代码。1、打开网络摄像头(1)先保存URL;(2)再使用VideoCapture的open方法:转载 2017-07-19 16:54:28 · 18600 阅读 · 4 评论 -
OpenCV之putText()函数详解
putText()函数属于imgproc组件,其功能为在图像中某一位置显示文字,OpenCV中函数定义如下:C++: void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool原创 2017-07-19 20:22:35 · 18144 阅读 · 0 评论 -
OpenCV之bitwise_and、bitwise_not等图像基本运算及掩膜
1.图像基本运算图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。总之,对于图像可以进行的基本运算非常的多,只是挑了些常用的操作详解。void add(InputArray src1, InputA原创 2017-08-16 23:52:14 · 145712 阅读 · 9 评论 -
OpenCV之图形学的腐蚀与膨胀
一、理论与概念讲解——从现象到本质1.1 形态学概述形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。而我们图像处理中指的形态学,往往表示的是数学形态学。下面一起来了解数学形态学的概念。数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的原创 2017-07-26 16:44:44 · 3235 阅读 · 1 评论 -
OpenCV之_CrtIsValidHeapPointer报错问题
这个错误有两种可能:一.释放的问题1,在不同的模块分配的内存,释放的时候会出现此问题,而此问题,只在Debug模式会提示,Release模式不会提示。但不提示并不代表没有错误,一定要解决之。内存不能跨模块分配和释放,模块分配的内存必须由该模块自己来释放,在哪个模块分配的内存,就在哪个模块释放。应该在DLL中再加一个方法,比如MemRelease,主程序调用这个方法来释放内存。2,就原创 2017-07-28 17:13:16 · 467 阅读 · 0 评论 -
OpenCV之环境变量及不同VS版本OpenCV库
花费了小一天的时间解决了一个关于OpenCV的很少见一旦遇到了却又不容易解决的问题!简述如下: CMake出来的OpenCV库都是对应着相应VS版本的,如果电脑中安装了多个版本的VS(例如vs2010和vs2012),在配置OpenCV开发环境的时候有一项是配置环境变量(即把opencv的动态链接库dll分配给系统环境供程序运行的时候调用),这样的话我们往往会为每种VS都配置环境变量,原创 2017-07-28 19:29:44 · 702 阅读 · 0 评论 -
OpenCV之轨迹条(TrackBar)的创建和使用
一、OpenCV中轨迹条(Trackbar)的创建和使用创建轨迹条——createTrackbar函数详解createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便。首先大家要记住,它往往会和一个回调函数配合起来使用。先看下他的函数原型:C++: int createTrackbar(conststrin原创 2017-07-28 20:03:22 · 5341 阅读 · 0 评论 -
OpenCV之亮度、对比度详解
一、亮度和对比度调整的理论依据首先我们给出算子的概念。一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像。下式给出了算子的一般形式: 或者今天我们所讲解的图像亮度和对比度的调整操作,其实属于图像处理变换中比较简单的一种—原创 2017-07-28 21:17:57 · 1869 阅读 · 0 评论 -
OpenCV之形态学(开运算、闭运算、形态学梯度、顶帽、黑帽)
本文转自: http://blog.csdn.net/poem_qianmo/article/details/23184547上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换。所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换,如开闭运算、形转载 2017-07-28 21:24:33 · 532 阅读 · 0 评论 -
Opencv+VS2010同时打开三路摄像头源代码及各类问题分析
本文使用Opencv2.4.9和VS2010进行的打开多路摄像头:在opencv2.1版本及之前版本支持最多同时打开2个摄像头,在之后的版本由于opencv对DirectShow进行了封装,可以同时打开多个摄像头。下面是同时打开三路摄像头的例子;#include "stdafx.h"#include using namespace cv;int _tmain(int arg原创 2016-11-28 21:15:08 · 1426 阅读 · 0 评论 -
Opencv中特征点提取和匹配介绍
特征点类:class KeyPoint{ Point2f pt; //坐标 float size; //特征点邻域直径 float angle; //特征点的方向,值为[零,三百六十),负值表示不使用 float response;原创 2017-03-05 15:35:42 · 944 阅读 · 0 评论 -
OpenCV遍历和输出Mat矩阵中数据方法总结
一、Mat中图像像素的访问方式1.ptr操作和指针-高效的方式这种方式基于.ptr的操作,也是比较推荐的遍历图像的方式。1234567891011121314151617181920212原创 2017-07-08 19:52:15 · 23287 阅读 · 2 评论 -
OpenCV读入图像及通道详解
使用OpenCV的imread()函数读入图像,往往需要区分图像是单通道图像还是多通道图像。 灰度图像通道数(channels)为1(占8位),彩色图像通道数(channels)为3(占24位),灰度图像只需要一个0-255的值来描述,imread(“image_path”,0)进行灰度图像读入,如果不是灰度图像则将其转化为灰度图像,灰度图像在内存中连续存储,在Mat存储如下图:原创 2017-07-08 19:06:13 · 24200 阅读 · 2 评论 -
OpenCV中CV_Assert函数和C++中assert()函数
目前 学习opencv查看源代码时发现CV_Assert(src.rows ++ 3 && src.cols ==3),其实CV_Assert()函数与C++标准库中的assert()函数功能基本相同。CV_Assert()作用:CV_Assert()若括号中的表达式值为false,则返回一个错误信息;若括号内表达式成立true,则程序继续执行。ssert 宏的原型定义在中, 其作转载 2017-07-07 20:56:25 · 1468 阅读 · 0 评论 -
OpenCV之RNG生成随机数类详解
OpenCV中主要是通过RNG类来生成随机数,默认定义RNG类对象的时候需要初始化一个种子(默认种子为0xFFFFFFFF,64位无符号值),对种子进行运算从而生成随机数,RNG类定义如下:如果将种子设定为默认种子的话,每次运行种子及其种子运算所得随机数不变,往往不利于程序需求,通常可将种子设置为当前时间,这样每次获得的种子及其运算所得随机数都不同。默认种子RNG类定义:RNG rng(0原创 2017-07-07 15:04:34 · 3773 阅读 · 0 评论 -
OpenCV3.2.0(CMake后)在VS2012下编译生成VS2012 SDK开发包
OpenCV3.2.0在成功CMake后会生成相应环境的工程文件(我生成的是VS2012版本的)用OpenCV VS2012工程编译生成自己的OpenCV库打开VS2012,打开E:\OpenCVProject目录,打开OpenCV工程选择CMakeTargets下ALL_BULID,根据需要选择编译Debug版本或Release版本。右键”原创 2017-07-06 19:49:32 · 792 阅读 · 0 评论 -
编译OpenCV3.2.0时,ffmpeg或ippicv下载不成功的解决方案
在自己编译OpenCV3.2.0时,因为种种原因可能会导致ffmpeg或ippicv下载不成功的问题,可以通过手动配置来解决这类问题,当然也可以直接配置之后再编译。在进行配置之前,首先前往GitHub下载相应的库。链接:opencv/opencv_3rdparty链接打开之后页面内容大致如上图所示,图中圈出了ffmpeg和iipicv的不同版本,具体用哪一版就各转载 2017-07-06 16:51:54 · 9099 阅读 · 4 评论 -
Opencv各个模块功能详细简介
本文转自:http://blog.csdn.net/zmdsjtu/article/details/549247273.2版本的模块说明:Opencv3.2模块首先打开opencv_modules.hpp文件,可以看到对于各个功能模块的定义如下: //功能模块和3.1一样…/* * ** File generated automatically, do not转载 2017-07-05 20:31:58 · 17860 阅读 · 0 评论 -
OpenCV各类滤波概述
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响后续图像处理和分析的准确性。消除图像中的噪声成分叫做图像的平滑化或滤波操作或模糊化,信号或图像的能量大部分冀中在幅度谱的低频和中频段,而在较高频段,有用的信息经常被噪声淹没,因此一个能降低高频成分幅度的滤波器能够减弱噪声的影响。滤波处理的要求:一是不能损坏图像的轮廓及原创 2017-07-04 16:00:21 · 759 阅读 · 1 评论 -
Opencv关于两图像感兴趣区域划分、拼合详解
1.cvSetImageROI基于给定的矩形设置图像的ROI(感兴趣区域,region of interesting)大多数OpenCV函数都支持ROI,并将它作为一个独立图像进行处理,所有像素坐标都是从ROI的左上角或者左下角(基于图像结构)开始计算的。void cvSetImageROI(IplImage* image,CvRect rect);image 图像头,原创 2017-06-13 15:59:26 · 4551 阅读 · 0 评论 -
Opencv中Mat中元素的值读取方法总结
1、利用 at 函数读取(1)单通道图像读取方式Mat img1 = imread(filename,IMREAD_GRAYSCALE); for( size_t nrow = 0; nrow { for(size_t ncol = 0; ncol { uchar val = mat_CV_转载 2017-06-13 15:39:11 · 38690 阅读 · 3 评论 -
Opencv中vector<Mat>数据存储问题
在定义数组Mat指针后,通过指针对Mat数组数据进行修改会遇到深浅拷贝问题 原因是:pushback会调用拷贝构造函数来拷贝数据,这就涉及到Mat的深拷贝和浅拷贝问题了: OpenCVMat之间赋值浅拷贝//注意:浅拷贝 - 不复制数据只创建矩阵头,数据共享(更改a,b,c的任意一个都会对另外2个产生同样的作用)Mat a;原创 2017-06-13 15:30:20 · 5472 阅读 · 6 评论 -
高效遍历Mat数组
本文转自:http://blog.csdn.net/kelvin_yan/article/details/41595373用指针来遍历图像方法:取出图像中第i行数据的指针:image.ptr(i),再访问各列元素。[cpp] view plain copyunsigned char * pData = BmpS转载 2017-06-10 10:50:23 · 1285 阅读 · 0 评论 -
【OpenCV】SIFT原理与源码分析
本文转自:http://blog.csdn.net/xiaowei_cqu,文中红色字体为本人标注方便理解!===================================================================================================================SIFT简介Scale Invariant Fea转载 2017-04-04 20:34:00 · 292 阅读 · 0 评论 -
【OpenCV】SIFT原理与源码分析:DoG尺度空间构造
本文转自:http://blog.csdn.net/xiaowei_cqu ===================================================================================================================《SIFT原理与源码分析》系列文章索引:http://blog.csdn.net/xi转载 2017-04-04 15:22:07 · 316 阅读 · 0 评论 -
位深度讲解,opencv8位单通道和32位单通道解析
在记录数字图像的颜色时,计算机实际是用每个像素需要的位深度来表示的,黑白二色的图像是数字图像中最简单的一种,它只有黑、白两种颜色,也就是说它的每个像素只有1位颜色,位深度是1,用2的一次幂来表示;考虑到位深度平均分给R、G、B和Alpha,而只有RGB可以互相组合成颜色。所以4为颜色的图,它的位深度是4,只有2的四次幂种颜色,即16种颜色(或灰度级)。8位颜色的图,位深度是8,用2的8次幂表示,含原创 2017-03-31 11:51:17 · 10679 阅读 · 0 评论 -
Opencv2.4.9各头文件功能说明
OpenCV(Open Source Computer Vision Library),一个遵循BSD协议的计算机视觉技术开源库,包含了几百个计算机视觉算法。目前最新版本应该是OpenCV3.0,alpha版和beta版都有了,我目前是用的2.4.9,3.0版本貌似有不少3D还有GPU相关的更新,很不错,关于3.0版本的后面再学习。OpenCV 2.x API还是一个完全C++ API,当然也有支转载 2017-03-23 20:47:04 · 1231 阅读 · 0 评论 -
OpenCV实现人脸检测并覆盖面具
#include "stdafx.h"#include #include #include #include using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ //输入用于面部识别的人脸级联的xml文件 string faceCascadeName = argv[1];原创 2017-08-21 17:18:41 · 2835 阅读 · 1 评论