
opencv
文章平均质量分 73
cv_yuippe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
opencv抠图
代码如下:// opencv_drawroi.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;using namespace cv;CvPoint prev_pt = {-1, -1};Mat img;Mat inpainted;Mat inpainted_mask;原创 2013-10-25 21:03:38 · 8763 阅读 · 3 评论 -
画最小轮廓
这里用到了void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point())参数:contours:存放轮廓hierarchy:存放轮廓之间的拓扑关系。 hierarchy[原创 2013-10-30 11:29:25 · 1440 阅读 · 0 评论 -
框出动态特定物体
完成三个部分:场景背景、动态物体、提取车辆。代码如下:// opencv_try.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;using namespace cv;Mat paintRect(Mat &src, Rect &rect) {原创 2013-10-29 15:06:37 · 1490 阅读 · 0 评论 -
floodfill算法
【OpenCV】漫水填充漫水填充:也就是用一定颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果;漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。种子填充算法种子填充算法是从多边形区域内部的一点开始,由此出发找到区域内转载 2013-10-25 17:46:15 · 3488 阅读 · 0 评论 -
Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV
重编译的好处:可以调试的时候看OpenCV的源代码。重编译要得到的东西:Debug版本和Release版本的dll,lib,头文件。(dll添加到环境变量里,运行时用,自己编译的dll调试时可以跟踪到Opencv的源码内;lib和头文件配置到编译器里)PS:如果只是使用Opencv而不需要跟踪源码,则使用Opencv自带的库文件即可。跳到5配置Opencv开发环境,对应的文件都在..\op转载 2013-10-25 13:28:21 · 1049 阅读 · 0 评论 -
傅立叶变换与逆变换 上
在opencv官网上有傅立叶变换的实例,但其没写怎么变换回来,所以这里将其逆表示出来代码如下:// opencv_dft.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[原创 2013-09-28 21:58:17 · 1549 阅读 · 0 评论 -
色调反向投影找特定的内容
这里的注意的是色调H,其在这里的取值范围为0到180,因为Note this is only done for 8-bit formats. So if you want fullprecision, you can always switch to a 32f format prior to the colorspace conversion, which will yield the full原创 2013-09-17 13:38:22 · 960 阅读 · 0 评论 -
Mat
登录 注册豆瓣 读书 电影 音乐 同城 小组 阅读 豆瓣FM 更多搜索你感兴趣的内容和人...豆瓣社区首页 发现小组 发现小站 线上活动lirpa的日记lirpa的主页 广播 相册 喜欢 发豆邮转载 2013-09-16 19:16:07 · 1214 阅读 · 0 评论 -
通过灰度直方图进行简单的阈值分割
用到calcHist函数,返回hist,用minMaxloc来找到hist中数目最大的灰度级,表明其背景大概在这个区域,并以此作为阈值,进行分割。其代码如下:// opencv_6.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;using namespace cv;class原创 2013-09-16 14:02:10 · 11033 阅读 · 2 评论 -
反向灰度投影找出特定内容
直接代码如下:// opencv_8.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;using namespace cv;class Histogram1D{private: int histSize[1]; float hranges[2]; const float原创 2013-09-16 15:25:17 · 856 阅读 · 0 评论 -
opencv中的svm
在运用svm来实现过程中,先介绍数学上的几个概念:线性空间:线性空间是这样一种集合,其中任意两元素相加可构成此集合内的另一个元素,任意元素与任意数相乘后得到此集合内的另一元素。欧式空间:支持向量机:是一个类分类器,正式的定义是一个能够将不同类样本在样本空间分隔的超平面。换句话说,就是给定一些标记好的训练样本,svm算法输出一个最优化的分隔超平面。怎么找到距离原创 2013-10-31 15:54:06 · 883 阅读 · 0 评论 -
将视频分解成帧保存
// opencv_1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ const string strFilePath = "C:\\Users\原创 2013-10-31 10:54:43 · 5890 阅读 · 1 评论 -
lbp算子
A more formal description of the LBP operator can be given as:, with as central pixel with intensity ; and being the intensity of the the neighbor pixel. is the sign function define转载 2013-11-28 14:24:02 · 1656 阅读 · 0 评论 -
code for cv
D Computer Vision: Past, Present, and FutureTalk3D Computer Visionhttp://www.youtube.com/watch?v=kyIzMr917RcSteven Seitz, University of Washington, Google Tech Talk, 2011转载 2014-04-08 18:19:49 · 2831 阅读 · 0 评论 -
Markov随机场
当把数字图像中每个像素灰度与yi原创 2014-04-08 14:40:40 · 1533 阅读 · 0 评论 -
opencv矩阵的操作
矩阵和图象的基本操作函数Description说明cvAddElementwise addition of two arrays两个数组对应元素的和cvAddSElementwise addition of an array and a scalar一个数组和一个标量对应元素的和转载 2014-03-26 20:49:08 · 618 阅读 · 0 评论 -
Camshift跟踪(下)
想通过camShift中的RotatedRect成员center来勾勒出目标的运动轨迹。即将质心存入vector中,在需要显示时,用line来展现出来。以下为代码:// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;原创 2014-03-21 21:06:45 · 1025 阅读 · 0 评论 -
Camshift跟踪(上)
这里有几个函数:mixChannels()Mat rgba( 3, 4, CV_8UC4, Scalar(1,2,3,4) ); Mat bgr( rgba.rows, rgba.cols, CV_8UC3 ); Mat alpha( rgba.rows, rgba.cols, CV_8UC1 ); // forming an array of mat原创 2014-03-21 16:45:30 · 1086 阅读 · 0 评论 -
OpenCV中简单矩阵运算
OpenCV 2.4 Cheat Sheet (C++)系列——Simple Matrix Operations1。矩阵的点运算add(), subtract(), multiply(), divide(), absdiff(), bitwise_and(), bitwise_or(), bitwise_xor(),max(),min(), compare()对应:加,减转载 2014-03-30 11:37:59 · 932 阅读 · 0 评论 -
dft转换与反转
这次介绍下opencv中DFT的使用,对应的例程是(EXAMPLE) dft。在图像处理领域,通过DFT可以将图像转换到频域,实现高通和低通滤波;还可以利用矩阵的卷积运算等同于其在频域的乘法运算从而优化算法降低运算量, 即先将图像转换到频域,然后做完乘法运算后,再转换到图像域,opencv中的模板匹配就利用了这一特性降低运算量。下面是dft例程的源码[cpp] vi转载 2014-03-12 14:58:29 · 4468 阅读 · 1 评论 -
opencv中实现LBP
LBP的基本思想是以图像中某个像素为中心,对相邻像素进行阈值比较。如果中心像素的亮度大于等于它的相邻像素,把相邻像素标记为1,否则标记为0。我们可以用二进制数字来表示LBP图中的每个像素的LBP编码,比如下图中的中心像素,它的LBP编码为:00010011,其十进制值为19。用公式表示就是:其中(xc,yc)是中心像素,ic是灰度值,in是相邻像素的原创 2013-11-28 19:27:33 · 3296 阅读 · 0 评论 -
glcm灰度共生矩阵即特征值的提取
共生矩阵用两个位置的象素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性,是有关图象亮度变化的二阶统计特征。它是定义一组纹理特征的基础。一幅图象的灰度共生矩阵能反映出图象灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图象的局部模式和它们排列规则的基础。 设f(x,y)为一幅二维数字图象,其大小为M×N,灰度级别为Ng,则满原创 2013-12-03 15:53:47 · 8262 阅读 · 0 评论 -
傅立叶变换与逆变换 下
上篇为傅立叶变换与逆变换,这里将频谱的一些频率过滤掉。代码如下:// opencv_dft.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ Mat src;原创 2013-09-29 16:49:22 · 1560 阅读 · 0 评论 -
opencv直方图之查表法,均衡化
查表法中的表是一个一维,256的数组,其意思在于对于一个像素点的灰度值进行变换,即如果原像素的灰度值为i,则查表转化后假设负片效果,就是灰度值为255-i。在画出直方图后,想均衡化,增强对比度的话,可以这样,检测直方图中非零项的最低和最高,将最低设置成0,最高设置成255,其中间则按这种规律转化。以下为代码:// opencv_2.cpp : 定义控制台应用程序的入口点。//#i原创 2013-09-11 15:26:39 · 1245 阅读 · 0 评论 -
opencv之直方图caluHist函数
void calcHist( const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=false );原创 2013-08-17 16:16:56 · 1400 阅读 · 0 评论 -
opencv之Rgb图像转化到HSV、Lab空间,对各通道的操作
一:色彩模式:1、颜色模式HSV:色象 饱和度 明度,是基于视觉反映的颜色H.色象:360度,从0开始,表示纯红色,360度也表示纯红色 ,黑白无色象.S.饱和度:100%表示色彩纯度为满V.明度:表示明暗,100%表示很亮,为0时表示黑色2、颜色模式RGB:红 绿 蓝,是基于光色的颜色,也为加色模式,即两这重合变亮R.红色:Red,0~255阶,一共256阶色原创 2013-06-29 14:51:37 · 13024 阅读 · 0 评论 -
opencv二值化之otsu算法
OTSU算法也称最大类间差法,有时也称之为大津算法。它是按图像的灰度特性,将图像分成背景和前景两部分。背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。设灰度图像灰度级是L,则灰度范围为[0,L-1],OTSU算法计算图像的最佳阈值为:t = Max[w0(原创 2013-06-28 19:41:14 · 4356 阅读 · 0 评论 -
图像的二值化
1、CV_THRESH_BINARY 即大于阈值就设置成M,反之为0;2、CV_THRESH_BINARY_INV 是上面的相反;3、CV_THRESH_TRUNC 大于阈值就设置成M,反之保持不变;4、CV_THRESH_TOZERO_INV 大于阈值就设置成0,反之保持不变;原创 2013-06-25 21:41:04 · 1527 阅读 · 0 评论 -
图像灰度化
灰度化有二种方式:一:利用imread中的第二个参数设置成0,强制将其转化成灰度图像二:利用cvtcolour函数将其转化成灰度图像具体代码如下:// 2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include"opencv243.h"using namespace std;using namespace原创 2013-06-25 15:36:20 · 2151 阅读 · 0 评论 -
opencv之highgui中createTrackbar
int cvCreateTrackbar(const char* trackbar_name, //滑动条的名称const char* window_name, //窗口的名称,滑动条不会遮挡图像int* value, //当滑动条被拖到时,OpenCV会自动将当前位置所代表的值传给指针指向的整数int count, //滑动条所能达到的最大值CvTrackbarCallbac原创 2013-05-29 19:05:23 · 1660 阅读 · 0 评论 -
学习opencv之Eroding和Dilating
形态学操作(腐蚀与膨胀(Erosion 与 Dilation)):就是基于形状的一系列图像处理操作。通过将 结构元素 作用于输入图像来产生输出图像。目的有三:消除噪声分割(isolate)独立的图像元素,以及连接(join)相邻的元素寻找图像中的明显的极大值区域或极小值区域dilate:dilate(InputArray src, OutputArray d原创 2013-05-29 19:00:32 · 1591 阅读 · 0 评论 -
学习opencv之各种基本平滑处理
归一化块滤波器: 输出像素值是核窗口内像素值的均值 ( 所有像素加权系数相等) blur(src, dst, ksize, anchor, borderType) src: 输入图像 dst: 输出图像 Size( w,h ): 定义内核大小( w 像素宽度, h 像素高度)原创 2013-05-29 15:48:57 · 1722 阅读 · 0 评论 -
OpenCV2.4.3 CheatSheet学习
OpenCV向MATLAB靠拢,图像的操作方法变得不那么C了,更m了一些。比如,MATLAB中的常用函数imshow、imread、imwrite函数在OpenCV中已经有了同名的兄弟。此外,OpenCV 2.4.3中更加强调对矩阵的操作,以前的CvMat和CvArr目测现在正在被一个新成员Mat给后来居上了。在doc目录里出现了一个Cheat Sheet,好家伙,原来是OpenCV的作弊转载 2013-05-28 16:02:59 · 3586 阅读 · 0 评论 -
学习opencv之canny算法
canny对边缘检测质量进行分析时,有3个原则:1、信噪比准则2、定位精度准则3、单边缘响应准则canny边缘检测的基本思想是:首先对图像选择一定的Gauss滤波器进行平滑滤波,然后采用非极值抑制技术进行处理得到最后的边缘图像。具体步骤:1、用高斯滤波器平滑图像2、用一阶偏导的有限差分来计算梯度的幅值和方向3、对梯度幅值进行非极大值抑制4、用双阈值算法检原创 2013-05-21 18:36:35 · 1484 阅读 · 0 评论 -
opencv直方图(上)
// 3.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include"opencv243.h"using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ vector hist(256); Mat img=imread("C:\\User原创 2013-06-27 09:06:35 · 808 阅读 · 0 评论 -
opencv之绘图
代码如下:// b1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;using namespace cv;const int w = 300;void MyEllipse(Mat &img, double angle){ int thickness = 2; int lin原创 2013-08-25 13:52:13 · 692 阅读 · 0 评论 -
图像的分块两栏的情况
这里的原图为: 分块要求为: 原理为:从左到右,从上到下,进行填原创 2013-08-31 16:31:44 · 725 阅读 · 0 评论 -
学习opencv之Hough变换
对于笛卡尔坐标系来说:y=ax+b,如果坐标上一点(x0,y0),则对应参数坐标(a0,b0), 同理,如果在笛卡尔坐标系上一条直线(即有恒定的参数(a,b))上的点,在参数坐标上则会在(a,b)这点上相交。一般来说我们可以通过设置直线上点的阈值(或者说是个数)来定义多少条曲线交于一点,这样我们才认为检测到一条直线。hough线变换要做的就是追踪图像中的每个点对应曲线间的交点,如果交于原创 2013-05-23 21:38:56 · 1447 阅读 · 0 评论 -
opencv之图像搭桥法
这里演示的是水平和垂直搭桥:大致原理为:s(为白点的个数,并通过s是否为0来标记最初的白点io),当扫描到黑点时,在判断s是否在阈值类,如果在,则将这段白点用直线画黑线,反正不画。代码如下:// a4.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace cv;using namespace原创 2013-08-29 22:12:55 · 801 阅读 · 0 评论 -
Strategy pattern in algorithm design
书中代码如下://colordetector.h#if !define COLORDETECT#define COLORDETECT#include using namespace cv;class ColorDetector{public: ColorDetector() { minDist = 150; target[0] = target[1] = t原创 2013-08-28 18:46:55 · 671 阅读 · 0 评论