
openCV
DX_dove
致力于计算机视觉的开发。
展开
-
openCV—converTo()用法
convertTo的用法 src.convertTo(dst, type, scale, shift)img参数为图像数据来源,其类型为Mat。 注意也不是所有格式的Mat型数据都能被使用保存为图片,目前OpenCV主要只支持单通道和3通道的图像,并且此时要求其深度为8bit和16bit无符号(即CV_16U),所以其他一些数据类型是不支持的,比如说float型等。 如果Mat类型数据的深度和转载 2016-11-16 16:20:59 · 4861 阅读 · 0 评论 -
Ubuntu下程序的编译和链接过程和openCV的makefile文件
简述在windows下编程,可能一个F5就能让代码跑起来,那是因为IDE(比如VS2103等)已经帮你做好了后台的编译和链接过程。当在Ubuntu下让代码跑起来,就要自己去理解代码的编译和链接过程。 下面说说什么是编译,什么是链接: 编译就是将源文件通过Complier,生成中间文件,在windows下,中间文件就是.obj 文件,在Ubuntu下,就是.o文件,即 Object...原创 2017-04-20 16:31:06 · 7461 阅读 · 5 评论 -
openCV编程思想总结(1)
开始最近发现自己写代码最难得就是开头,而且就算开头了,写到一半会发现自己的代码思想十分简单,运行效率低下,然后看别人写的代码,就会有种顿悟的感觉,然后自己的代码就相形见绌。所以总结写别人的代码中的精妙之处,所谓君子性非异也,善假于物也。openCV矩阵操作举例 分析下面的代码:Mat tsmResp(1,img_roi.rows, CV_32FC1, Scalar::all(1));Mat原创 2017-04-22 17:30:35 · 554 阅读 · 0 评论 -
openCV编程总结(2)-车道线检测之Bezier曲线3次拟合
最近做车道线检测,要检测弯道的曲线,于是采用Bezier3次曲线拟合的方式去拟合弯道曲线。 首先,要知道什么Bezier 3次曲线:对于二次抛物线,使用3个点就可以确定这条抛物线,而且抛物线的参数方程最高次为2,这种拟合抛物线就叫Bezier 的2次曲线拟合,对于3次曲线拟合,需要参数方程的最高次为3,也就是会有4个点来确定曲线,所以叫Bezier的3次曲线拟合。总的来说,由n个点确定的直线,就叫原创 2017-04-23 11:39:47 · 11781 阅读 · 7 评论 -
图像处理之二维高斯滤波详解
高斯(Guassian)模糊 图像滤波,见博客链接:http://www.cnblogs.com/zxj015/archive/2013/05/12/3074612.html转载 2017-04-24 20:48:01 · 4375 阅读 · 0 评论 -
OpenCV编译遇到的一个常见错误-./bin: error while loading shared libraries: libopencv_highgui.so.3.2: cannot open
首先给出错误截图; 下面转载一个很好的解决方案。操作正确,是可以解决的。 在ubuntu 下用Qt写OpenCV的程序运行出现error while loading shared libraries: libopencv_highgui.so.2.4 错误,是opencv的库路径没有设置好。参考:http://wenku.baidu.com/link?url=3GwCKjVbDJn4o8jp转载 2017-08-17 21:41:34 · 29545 阅读 · 10 评论 -
Ubuntu下在openCV3.2中配置opencv_contrib,然后使用SURF算子
最近用openCV3.2,发现无法使用SURF做特征点的检测。百度了一下,发现了是这样解释的。 “图像识别中的特征点检测中,需要用到Surf和Sift算法,但是这两个算法在OpenCV 3.2的Release版本中并不存在,因为他们是存放在opencv_contrib目录下面的未稳定功能模块”。 安装好openCV_contrib用了我一下午时间,才让代码在openCVC3.2的环境下编译通过,原创 2017-10-02 20:54:17 · 1293 阅读 · 0 评论 -
C++中一种典型的语法错误:c++中临时变量不能作为非const的引用参数
最近编译代码,出现了一种很奇怪的错误,按正常思维来说是没有问题的。 看错误信息(我编译的是oepnCV的代码) 错误对应的代码块: 错误原因分析: 就拿f(a + b)来说,a+b的值会存在一个临时变量中,当把这个临时变量传给f时,由于f的声明中,参数是int&,不是常量引用,因为c++编译器的一个关于语义的限制。 如果一个参数是以非const引用传入,c++编译器就有理由认为程序员会在函原创 2017-10-15 11:59:07 · 584 阅读 · 0 评论 -
PatchMatch核心算法(一)
最近patchmatch算法,这是一个很神奇的算法,利用概率的思想进行快匹配。 有些文章也讲过Patchmatch算法,写的不错,我这里就用最好理解的语言记录下自己的理解吧。patchmatch 算法可以分为3步。下面用图的方式展示出来; 第一步:初始化 翻译为:初始化,讲A图中每一个像素,随机的赋予一个便宜量,在B图中找到一个像素与之对应。 图中为选取了全图的3个像素作为展示。原创 2018-01-17 11:25:02 · 22766 阅读 · 8 评论 -
linux下配置openCV3.2
参考链接:http://blog.youkuaiyun.com/u013831198/article/details/70215925转载 2018-01-09 21:40:30 · 902 阅读 · 0 评论 -
Ubuntu14.04下:openCV3.2在安装CUDA8.0后一直安装失败
系统没有安装cuda8.0的时候,按照教程安装openCV3.2很正常,但是在安装CUDA之后,在安装openCV3.2,在执行make -j4在执行这条命令的时候,会报各种错误,我看了下主要是因为CUDA的影响,如果我们只是想用opencv,而不用cuda去加速,可以考虑讲cuda在配置的时候禁止掉。具体方法如下:打开opencv文件下面的CMakelis.txt文件,讲里面有关...原创 2018-04-15 16:48:04 · 787 阅读 · 0 评论 -
python读取文件夹中的图片
下面记录一下Python读取文件夹下图片的两种方法:import osimagelist = os.listdir('./images/')#读取images文件夹下所有文件的名字import globimagelist= sorted(glob.glob('./images/' + 'frame_*.png'))#读取带有相同关键字的图片名字,比上一中方法好...原创 2018-06-22 20:34:58 · 28580 阅读 · 0 评论 -
Ubuntu下一种编译错误(未定义的函数)
刚入门Linux,真是有苦说不出,在Linux下编译代码,真是和IDE的集成开发环境各种不适应,最近遇到了一个很常见的错误。看截图: 原因:这个错误是由于findHomography()的库文件没有添加,这个函数在-lopencv_calib3d中,而且在代码中,加入一行#include <opencv2/calib3d/calib3d.hpp>,makefile文件中加链接库-lopencv原创 2017-04-01 20:45:54 · 1492 阅读 · 0 评论 -
关于waitKey()函数的用法
首先分享一段代码,和在Linux下的运行方法://#include <opencv2/calib3d/calib3d.hpp>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>//#include <opencv2/featur原创 2017-04-01 11:34:22 · 11020 阅读 · 3 评论 -
openCV的.ptr智能指针的简单使用
cv::Mat image = cv::Mat(400, 600, CV_8UC1); //宽400,长600 uchar * data00 = image.ptr<uchar>(0); uchar * data10 = image.ptr<uchar>(1); uchar * data01 = image.ptr<uchar>(0)[1];解释:定义了一个Mat变量imag转载 2017-04-10 10:38:55 · 5909 阅读 · 3 评论 -
openCV-相关概念理解和应用
图像掩模 在OPENCV中,掩模可以用于图像处理的叠加,比如将一个logo标志图标放置在一副图片上,可以用addweight()函数,也可以用mask掩模的方式; 下面分析一段添加掩模来处理图像的代码:#include "opencv2/features2d/features2d.hpp"#include "opencv2/highgui/highgui.hpp"#include <ope原创 2016-11-13 15:03:08 · 919 阅读 · 0 评论 -
openCV-迭代器iterator使用注意
在使用迭代器的时候,会遇到const和vector,iterator的结合。vector前面加constvector<int> a(10,9);const vector<int>::iterator iter=a.begin();//这种情况下,表示iter是一个常量++iter//这句话就是错的,其原因是iter是一个常量,因此是不能改变的。换句话说,iter只能指向vv的地一个元素,不转载 2016-11-16 20:18:04 · 4192 阅读 · 1 评论 -
openCV(2)-creatTrackbar()函数及回调函数
在openCV 中没有按钮,所以我们会经常用到滑动条的功能,用到滑动条,就会遇到这两个东西。creatTrackbar()函数和回调函数的概念。creatTrackbar()int createTrackerbar(const string& trackerbarname, //创建滑动条的名字const string winname, //所在窗口的名字int* value, //一个指原创 2016-11-17 16:31:37 · 4439 阅读 · 0 评论 -
openCV(3)-随机数产生用法
看代码就差不多会了#include "opencv2/core/core.hpp"#include "opencv2/features2d/features2d.hpp"#include "opencv2/highgui/highgui.hpp"#include <opencv2/nonfree/nonfree.hpp>#include<opencv2/legacy/legacy.hpp>原创 2016-11-17 17:09:13 · 731 阅读 · 0 评论 -
openCV(1)-Mat初始化
这次来记一下自己对Mat类的理解,供交流首先,使用Mat就不需要为其手动分配内存大小,最后也不需要手动释放它。但是我们在使用openCV函数的时候,还是要手动分配其输入数据。第二点,Mat本质是由两部分数据组成的类,矩阵头(header)和指针Pointer,矩阵头主要是包含矩阵的大小,存储方式,存储地址等信息,指针中存储了指向存储图像像素值矩阵的指针。一个常用的Mat类的构造函数,但是要知道原创 2016-11-15 20:50:59 · 24287 阅读 · 0 评论 -
openCV-直方图以及均衡化理解
直方图的均衡化 下面是对单通道灰度图的均衡化过程。对于彩色的图片来说,直方图均衡化一般不能直接对R、G、B三个分量分别进行上述的操作,而要将RGB转换成HSV来对V分量进行直方图均衡化的操作。 直方图均衡化算法分为三个步骤,第一步是统计直方图每个灰度级出现的次数,第二步是累计归一化的直方图,第三步是计算新的像素值。 第一步: for(i=0;i<height;i++) {转载 2016-11-22 17:13:09 · 1164 阅读 · 0 评论 -
openCV—霍夫变换原理(直白易懂)
霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。最基本的霍夫变换是从黑白图像中检测直线(线段)。我们先看这样一个问题:设已知一黑白图像上画了一条直线,要求出这条直线所在的位置。我们知道,直线的方程可以用y=k*x+b 来表示,其中k和b是参数,分别是斜率和截距。过某一点(x0,y0)的所有直线的参数都会满足方程y0=转载 2016-11-23 17:27:03 · 1346 阅读 · 0 评论 -
openCV矩阵基本操作
一、矩阵基础操作: Mat image(240, 320, CV8UC3); 第一个参数是rows,该矩阵的行数;第二个参数是cols,该矩阵的列数;第三个参数是该矩阵元素的类型。这句话表示创建一个大小为240×320的矩阵,里面的元素为8位unsigned型,通道数(channel)有3个。image.create(480, 640, CV8UC3); 分配(或重新分配)image矩阵,把大转载 2016-12-08 16:23:45 · 789 阅读 · 0 评论 -
(openCV)Canny算子加霍夫变换检测直线
canny算子 在边缘检测中,最常用的就是Canny算子,当然还有Sobel,Laplacian,Scharr等算子,我这里研究的是Canny算子。 在Canny算子中,进行了以下步骤: 第一步:消除噪声,采用的是用一个(比如size=5)的孔径的高斯核对图像灰度矩阵的每一点做进行加权求和。 第二步:计算梯度幅值和方向 第三步:非极大值抑制,也就是排除非边缘像素。仅仅保留一些细线条(就是候原创 2016-12-15 19:39:05 · 3572 阅读 · 4 评论 -
openCV—可调节进度视频播放
直接给代码:#include <opencv2/opencv.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/core/core.hpp>#include <iostream>using namespace std;using namespac原创 2016-12-17 21:36:45 · 1345 阅读 · 0 评论 -
openCV读取文件夹下多张图片的方法
第一种#include "opencv2/core/core.hpp"#include "opencv2/features2d/features2d.hpp"#include "opencv2/highgui/highgui.hpp"#include <opencv2/nonfree/nonfree.hpp>#include<opencv2/legacy/legacy.hpp>#incl原创 2016-12-31 16:21:58 · 9306 阅读 · 0 评论 -
Ubuntu下快速安装opencv2//opencv3
Ubuntu下安装opencv其实非常简单,之前下安装包,多线程编译,再make,而且opencv3有个包一直下不下来,其实用下面几种方法安装,可谓是方便实用。 1.conda安装,这要求你电脑安装Anoconda,不过一般用python开发的程序员,应该都装了这个。 然后直接输入:conda install -c https://conda.anaconda.org/menpo op...原创 2018-08-08 09:51:43 · 2847 阅读 · 0 评论