
opencv学习
文章平均质量分 62
qq_26460507
主要研究方向为图像处理和无线通信。
展开
-
opencv之cvContourArea计算整个或部分轮廓的面积
double cvContourArea( const CvArr* contour, CvSlice slice=CV_WHOLE_SEQ );contour:轮廓(顶点的序列或数组)。slice:感兴趣区轮廓部分的起点和终点,默认计算整个轮廓的面积。函数cvContourArea计算整个或部分轮廓的面积。在计算部分轮廓的情况时,由轮廓弧线和连接两端点的弦围成的区域总面积转载 2017-02-16 16:11:41 · 2109 阅读 · 0 评论 -
opencv之矩阵运算Mat
转载自:http://blog.sina.com.cn/s/blog_afe2af380101bqhz.htmlMat I(img,Rect(10,10,100,100));//用一块地方初始化。Mat I=img(Range:all(),Range(1,3));//所有行,1~3列Mat I=img.clone();//完全复制img.copyTo(I);//传递矩阵头Mat转载 2017-02-14 20:06:07 · 410 阅读 · 0 评论 -
opencv之imwrite函数使用
转载自:http://www.cnblogs.com/tornadomeet/archive/2012/12/26/2834336.html 首先来看看imwrite()函数的具体用法。 bool imwrite(const string& filename, InputArray img, const vector& params=vector() ) 该函数是把转载 2017-02-14 21:13:59 · 4951 阅读 · 0 评论 -
opencv之split和merge分离通道和合并多通道的用法
转载自:http://blog.youkuaiyun.com/shanshangyouzhiyangm/article/details/53198522为了更好的观察一些图像材料的特征,有时需要对RGB三个颜色通道的分量进行分别显示和调整。通过OpenCV的split和merge方法可以很方便的达到目的。分离颜色通道(一)split函数详解作用:将一个多通道数组(阵列)分离成几转载 2017-02-23 14:13:52 · 1196 阅读 · 0 评论 -
opencv学习之GaussianBlur()源码解析
这一节来真正进入opencv的源码分析中,本次分析的函数是GaussianBlur(),即高斯滤波函数。在前前面博文《opencv源码解析之滤波前言2》: 中已经阐述了这个函数的用法,即: 其函数声明为: void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX,转载 2017-03-03 23:10:53 · 5064 阅读 · 0 评论 -
opencv学习之常用函数
Matlab中对imread载入的图像矩阵求取均值时,步骤相对opencv较麻烦一些。例如:研究图像显著性检测算法FT中,需要计算图像LAB空间均值,以下是matlab和opencv的实现方式。matlab:img=imread("图像");cform = makecform('srgb2lab', 'AdaptedWhitePoint', whitepoint('d65'));/原创 2017-03-18 22:32:17 · 1205 阅读 · 0 评论 -
opencv学习之Mat数据类型
Mat::~MatMat的析构函数。C++: Mat::~Mat()析构函数调用Mat::release()。Mat::operator =提供矩阵赋值操作。C++: Mat& Mat::operator=(const Mat& m)C++: Mat& Mat::operator=(const MatExpr_Base& expr)C转载 2017-03-18 23:04:03 · 316 阅读 · 0 评论 -
opencv学习之快速对图像的像素进行操作 opencv 实战
OpenCV 如何对图像的像素进行操作转载自:http://blog.youkuaiyun.com/zwlq1314521/article/details/45038271对图像的像素进行操作,我们可以实现空间增强,反色,大部分图像特效系列都是基于像素操作等目的。先来看一下内存空间中图像矩阵,也就是Mat的矩阵数值部分是怎么存储的:如果图像是一幅灰度图像,他就像这样,从左到右,转载 2017-03-18 23:05:48 · 713 阅读 · 0 评论 -
opencv学习之图像滤波
滤波实际上是信号处理里的一个概念,而图像本身也可以看成是一个二维的信号。其中像素点灰度值的高低代表信号的强弱。高频:图像中灰度变化剧烈的点。低频:图像中平坦的,灰度变化不大的点。根据图像的高频与低频的特征,我们可以设计相应的高通与低通滤波器,高通滤波可以检测图像中尖锐、变化明显的地方;低通滤波可以让图像变得光滑,滤除图像中的噪声。下面我们来看一下OpenCV中的一些转载 2017-03-18 23:07:19 · 294 阅读 · 0 评论 -
opencv学习之矩阵数据类型转换convertTo
函数[cpp] view plain copy void convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const; 参数m – 目标矩阵。如果m在运算前没有合适的尺寸或类型,将被重新分配。rtype –转载 2017-02-26 22:35:52 · 654 阅读 · 0 评论 -
opencv学习之图像凸包
图像凸包是表达图像一维属性(比如长宽、面积等)信息的一种方式。所以,计算图像凸包对一些图像前期、后期处理都有一定的帮助看到别人的一篇代码如下clc; clear all; close all; I = imread('c://ce.jpg'); I = rgb2gray(I); bw = im2bw(I, graythresh(I)); fi转载 2017-03-06 17:25:18 · 1252 阅读 · 0 评论 -
opencv学习之Adaboost算法进行人脸识别
#include #include #include #include using namespace cv;int main(int argc, char** argv){ CascadeClassifier stFaceCascade; IplImage *pstImage = NULL; std::vector faceRects; if(转载 2017-03-06 20:38:46 · 2060 阅读 · 0 评论 -
运动目标检测视频Dataset
1、N. Goyette, P.-M. Jodoin, F. Porikli, J. Konrad, and P. Ishwar, changedetection.net: A new change detection benchmark dataset, in Proc. IEEE Workshop on Change Detection (CDW-2012) at CVPR-201原创 2017-04-08 11:20:07 · 2990 阅读 · 1 评论 -
opencv中算法编程常用矩阵的点乘,dot,mul
1、Mat矩阵点乘——A*BOpencv重载了运算符“*”,姑且称之为Mat矩阵“点乘”,其中一个重载声明为:[cpp] view plain copy print?CV_EXPORTS MatExpr operator * (const Mat& a, const Mat& b); 点乘说明:1转载 2017-03-23 09:59:29 · 1491 阅读 · 0 评论 -
在VS中配置OPENCV的一劳永逸的方法
用VS使用OpenCV的时候,又不想全局配置,每次都要配置简直烦死了。鉴于此,给大家介绍一种简便一点的方法。配置环境的前提是:成功安装了OpenCV合适的版本。我这里用的是OpenCV2.4.9,这个版本解压后,找到一个叫build的目录,这个是已经编译好的。我们假设build目录结构如图1:图1 、 build目录结构转载 2017-04-01 12:31:36 · 753 阅读 · 0 评论 -
opencv学习之mean函数
1、求取mat类型均值Mat salb;double thr=mean(salb)[0];或者 Scalar thr = mean(salb);取 thr[0]值因为mean返回的值是Scalar,就是vector类型的数组。所以当要Scalar的元素,要用[n]方式访问。而 meanStdDev计算的均值和标准差都以Mat形式返回,这里返回的是1X1的矩阵。所以访问结果,原创 2017-03-26 22:07:52 · 7249 阅读 · 0 评论 -
opencv之copyTo()函数
转载自:http://blog.youkuaiyun.com/qq_20823641/article/details/51452939这样,复制一个图像的ROI到另外一个图像的指定区域就简单多了。如opencv中给出的例子Rect r(1, 1, 10, 20); // 指定src 的 ROI子图像区域Mat dstroi =dst(Rect(0,10,r.width,r转载 2017-02-14 15:14:44 · 680 阅读 · 0 评论 -
opencv之Mat数据类型和ImlImage数据类型以及CvMat数据类型得转换
转载自:http://blog.sina.com.cn/s/blog_8924265b0101fblj.htmlIplImage* oldC0 = cvCreateImage(cvSize(320,240),16,1);Mat newC = cvarrToMat(oldC0);IplImage oldC1 = newC;CvMat oldC2 = newC;这是为了把经典的Op转载 2017-02-14 14:55:31 · 394 阅读 · 0 评论 -
opencv之cvCopy()和cvCloneImage()的区别
Opencv中cvCopy()和cvCloneImage()的区别:1 cvCopy的原型是:void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL ); 在使用这个函数之前,你必须用cvCreateImage()一类的函数先开一段内存,然后传递给dst。cvCopy会把src中的数据复制到ds转载 2017-02-22 22:01:41 · 575 阅读 · 0 评论 -
opencv之构建图和最大流/最小割的gcgraph.h源码解读
opencv中gcgraph.h源码(也许有些许改动),需要用的同学,可以添加.h头文件,直接复制粘下面的代码[cpp] view plain copy#include using namespace std; #define MIN(a,b) (((a) typedef unsigned char转载 2017-02-17 09:20:14 · 1651 阅读 · 0 评论 -
opencv之分水岭算法 watershed 函数源码注解
为了研究分水岭算法,阅读了OpenCV 2.4.9 中watershed函数的源码实现部分,代码位于 opencv\sources\modules\imgproc\src\segmentation.cpp 文件中。先贴出加了注解的代码,以后补充对分水岭算法的解释。#include "precomp.hpp"/****************************************转载 2017-02-17 09:22:07 · 783 阅读 · 0 评论 -
opencv之GrabCut函数使用和源码解读
图像分割之(四)OpenCV的GrabCut函数使用和源码解读zouxy09@qq.comhttp://blog.youkuaiyun.com/zouxy09 上一文对GrabCut做了一个了解。OpenCV中的GrabCut算法是依据《"GrabCut" - Interactive Foreground Extraction using Iterated Graph Cuts转载 2017-02-17 09:47:23 · 1561 阅读 · 1 评论 -
Opencv分水岭算法——watershed自动图像分割用法
转载自:http://m.blog.youkuaiyun.com/article/details?id=52498440分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特征。 其他图像分割方法,如阈值,边缘检测等都不会考虑像素转载 2017-02-09 15:55:07 · 1601 阅读 · 1 评论 -
opencv之改变图像尺寸
OpenCV改变图像大小的操作 转载OpenCV改变图像大小的操作有两类:resize与图像金字塔,但是这两类操作差别还是比较大的。一、resize函数原型void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpola转载 2017-02-09 19:28:11 · 1459 阅读 · 0 评论 -
opencv之图像二值化处理threshold
转载自:http://www.itnose.net/detail/6060285.htmlthreshold 方法是通过遍历灰度图中点,将图像信息二值化,处理过后的图片只有二种色值。其函数原型如下:double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int t转载 2017-02-10 13:56:03 · 1082 阅读 · 0 评论 -
opencv之轮廓最小外接矩形和最小外接圆
转载自:http://blog.youkuaiyun.com/dcrmg/article/details/52260699OpenCV中求点集的最小外结矩使用方法minAreaRect,求点集的最小外接圆使用方法minEnclosingCircle。minAreaRect方法原型:RotatedRect minAreaRect( InputArray points );转载 2017-02-11 11:20:51 · 6739 阅读 · 0 评论 -
opencv之CvMat,Mat和IplImage之间的转化和拷贝
1、CvMat之间的复制//注意:深拷贝 - 单独分配空间,两者相互独立 CvMat* a; CvMat* b = cvCloneMat(a); //copy a to b 2、Mat之间的复制//注意:浅拷贝 - 不复制数据只创建矩阵头,数据共享(更改a,b,c的任意一个都会对另外2个产生同样的作用)Mat a;Mat b = a; //a "转载 2017-02-20 15:08:46 · 500 阅读 · 0 评论 -
opencv之kmeans聚类算法
K-means算法算是个著名的聚类算法了,不仅容易实现,并且效果也不错,训练过程不需人工干预,实乃模式识别等领域的居家必备良品啊,今天就拿这个算法练练手。总结来说,这个算法的步骤如下:1.随机选取样本中的K个点作为聚类中心2.计算所有样本到各个聚类中心的距离,将每个样本规划在最近的聚类中3.计算每个聚类中所有样本的中心,并将新的中心代替原来的中心4.检查新老聚类中心转载 2017-02-10 17:59:29 · 1152 阅读 · 0 评论 -
opencv之查找轮廓---cvFindContours && cvDrawCountours 用法及例子
int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,int header_size=sizeof(CvContour), int mode=CV_RETR_LIST,int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,转载 2017-02-21 13:49:54 · 923 阅读 · 0 评论 -
opencv之分水岭算法2——基于标记点的分水岭算法
转载自:http://blog.youkuaiyun.com/iracer/article/details/492258233.基于标记点的分水岭算法应用基于标记点的分水岭算法应用步骤● 封装分水岭算法类● 获取标记图像 获取前景像素,并用255标记前景 获取背景像素,并用128标记背景,未知像素,使用0标转载 2017-02-13 13:41:34 · 992 阅读 · 0 评论 -
opencv之GMM高斯混合模型源码解析
转载自:http://blog.youkuaiyun.com/thefutureisour/article/details/8480985之前看到过C版本的,感觉写的很长,没有仔细看,但是C++版本的写的还是很不错的。我仔细看了一下,并对内容进行了仔细的注释,如果有人没有看懂,欢迎留言讨论。先看一眼头文件,在background_segm.hpp中[cpp] view pl转载 2017-02-21 21:54:53 · 3524 阅读 · 0 评论 -
opencv之canny源码解析
转载自:http://blog.youkuaiyun.com/u010429424/article/details/518663611986年,John F.Canny 完善了边缘检测理论,Canny算法以此命名。 Canny 算法的步骤: 1. 使用滤波器卷积降噪 2. 使用Sobel导数计算梯度幅值和方向 3. 非极大值抑制 +转载 2017-02-21 21:57:52 · 788 阅读 · 0 评论 -
opencv之分水岭算法watershed源码注释
转载自:http://blog.youkuaiyun.com/u011375993/article/details/46793655为了研究分水岭算法,阅读了OpenCV 2.4.9 中watershed函数的源码实现部分,代码位于 opencv\sources\modules\imgproc\src\segmentation.cpp 文件中。先贴出加了注解的代码,以后补充对分水岭算法的解释。转载 2017-02-13 22:59:39 · 830 阅读 · 0 评论 -
opencv之形态学重建
在形态学梯度图像的基础上,利用形态学的开闭重建运算对梯度图像进行重建,在保留重要区域伦敦的同时去除细节和噪声。 分水岭变换存在过分割现象,原因在于检测的局部极值过多,造成极值过多的原因在于图像中的非规则灰度扰动和噪声。对于好的分水岭图像分割方法,不仅能消除过分割现象,而且应保证分割后的区域伦敦边缘具有较准确的定位能力。方法1:利用形态学开闭重建运算对原始图像的形态学梯度图像进行滤波转载 2017-02-22 15:09:37 · 5045 阅读 · 1 评论 -
图像处理之Gabor滤波提取纹理特征
Gabor变换属于加窗傅立叶变换,Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。Gabor 滤波器的频率和方向类似于人类的视觉系统,所以常用于纹理识别。在空间域,二维Gabor滤波器是一个高斯核函数和正弦平面波的乘积,具体的:复数:实部:虚部:公式中:λ:正弦函数波长;θ:Gabor核函数的方向 ψ:相位偏移σ:转载 2017-04-19 18:27:36 · 13345 阅读 · 1 评论