opencv
走在乡间的路上
Thinking a little more.Act a little more!
展开
-
查找轮廓总结
轮廓到底是什么东西?一个轮廓一般对应一系列的点,也就是图像中的一条曲线,以序列的形式存储,序列的每一个元素是曲线中一个点的位置。findContours()从二值图像中查找轮廓,图像可以是从canny()函数得到,或者是threshold函数得到。首先有轮廓树的概念,c代表的是轮廓,h代表的是孔,opencv的findcontours(),可以区分内部和外部边界。包含的概念在很多应用中原创 2016-03-28 18:24:40 · 1071 阅读 · 0 评论 -
Opencv 仿射变换原理代码解析
仿射变换原理仿射变换是线性变换,有一张图可以很好地展示放射变换的效果其实仿射变换是透视变换的一种特例,但是透视变换的自由度更高,3*3的矩阵表示,透视变换的自由度是8,而放射变换可以用2*3的矩阵表示,【A B】 A是2*2的旋转部分+缩放因子S,而B是平移部分+缩放因子,是一个5个自由度的参数矩阵。典型的放射变换包括平移,缩放和旋转。其中Opencv中的旋转由于是绕某个图像坐标...原创 2019-05-22 09:19:33 · 2765 阅读 · 0 评论 -
Opencv LineMod源码阅读
linemod 算法来自:Gradient Response Maps for Real-Time Detection of Textureless Objects,Dominant Orientation Templates for Real-Time Detection of Texture-Less Objects computeResponseMaps 的函数接口 ...原创 2019-05-22 09:20:28 · 3842 阅读 · 2 评论 -
Opencv 指针指针用法问题
Opencv中Ptr这个类是一个智能指针原本的用法://method 1 delete problemlinemod::ColorGradient cmodelity;cmodelity = linemod::ColorGradient(30, 15, 60);std::vector< Ptr<linemod::Modality> > modalities;/...原创 2019-04-26 15:14:34 · 984 阅读 · 0 评论 -
Opencv + CUDA + 拓展代码 编译的记录
编译过Opencv3.0.0+CUDA 7.5+拓展库,随后编译了Opencv3.4+CUDA 9.2,编译源码首先要确定CUDA的版本以及opencv的版本是否对应,编译会出现unsupported gpu atch 'computer 2.0'的问题,字面理解意思似乎是不支持2.0的gpu架构了解到设定CUDA_GENERATION 是 Kepler就OK了,CMAKE文件不怎么理解...原创 2019-03-17 11:10:04 · 863 阅读 · 0 评论 -
opencv findContour的 方法比较记录
opencv找轮廓方法比较原创 2017-03-26 11:13:40 · 1049 阅读 · 0 评论 -
中值滤波四个角有一些像素是零的原因
中值滤波会在图像的四周不补上几圈零,如果是5*5的模板就会补上两圈零。然后再给图像加上滤波模板,刚刚有三个位置的中值是0原创 2017-01-09 12:05:09 · 1260 阅读 · 1 评论 -
摄像机标定
用opencv和matlab做了几次标定,对标定的结果自己做一些总结用opencv做标定的话,由于是自动识别棋盘格中的角点,会有识别不出角点的情况。如果是使用5*5的棋盘网格,opencv很难是被出来,使用更大的棋盘格7*7就好了很多。最终是否进行亚像素级别的检测也会对内参的数值有一定的影响。matlab做标定的时候手动点击棋盘格,一般识别不出来的情况就可以避免。现在我使用20副图片做原创 2016-08-11 09:40:09 · 377 阅读 · 0 评论 -
OpenCV2:Mat属性type,depth,step
点击打开链接在OpenCV2中Mat类无疑使占据着核心地位的,前段时间初学OpenCV2时对Mat类有了个初步的了解,见OpenCV2:Mat初学。这几天试着用OpenCV2实现了图像缩小的两种算法:基于等间隔采样和基于局部均值的图像缩小,发现对Mat中的数据布局和一些属性的认知还是懵懵懂懂,本文对Mat的一些重要属性和数据布局做一个总结。 Mat的作用转载 2016-08-19 14:39:07 · 252 阅读 · 0 评论 -
消除相机透镜畸变
一般的针孔相机模型如下:三维坐标点经过透视投影变换,转换到一个图像平面坐标点。而相机透镜还存在一定的畸变,包括横向畸变和切向畸变。 因此,针孔相机模型又被扩展为以下模型:首先,世界坐标被转换为相机坐标,由X,Y,Z到x,y,z;然后,归一化,z=1处,x,y的投影坐标x`,y`;接下来,对投影坐标,进行畸变处理;转载 2016-08-17 10:06:11 · 2100 阅读 · 0 评论 -
opencv中的几种常见的图像数据类型
1 opencv中的几种常见的图像类型opencv中,几种常见的图像类型有:IplImage,Mat,CvMat,CvArr CvArr :老版本的结构了。是一个抽象基类,在函数原型中,常见到CvArr(CvArr*),这就允许吧CvMar* 或者IplImage* 传递到程序或函数参数中了。CvMat :矩阵结构,IplImage :是较老版本的一种类型了转载 2016-07-13 09:45:19 · 10783 阅读 · 0 评论 -
opencv Mat 转 iplImage*
转自:http://blog.sina.com.cn/s/blog_7462bf390101c88a.html在Opencv2.X以上的处理中,大部分处理都是以Mat为主,而对于习惯了1.X的我来说,有时候会带来不便,希望能采用1.X的形式来处理。 经过试验,介绍两种简单的Mat与IplImage*类型间的转换:示例代码是需要mat转换为img:转载 2016-05-15 16:52:32 · 386 阅读 · 0 评论 -
m_pImageBuffer转换到opencv的一种笨方法
刚刚看opencv一段时间,这中方法可以将相机采集到的m_pImageBuffer(24位的buffer)转换成opencv C++ 版本的Mat再进一步进行处理图像。本来我通过Mat的data指针获得这个buffer的数据,发现数据使用ImageWatch是有问题,是一些重复的有规律的图像,具体原因还不清楚。(也希望能有前辈指教一下)。后来在这位博主的博文下,知道可以用旧版本的openc原创 2016-03-29 23:46:06 · 1009 阅读 · 0 评论 -
Opencv 长宽字节对齐访问
在图像处理像素访问如果没有考虑字节对齐,会出现计算出的图像的数据是不正确的,出现“歪斜”现象。图像使用拉布拉斯算子进行锐化,结果是不正确的。//主程序Mat image = imread("2.jpg");//源图像Mat biggerImg_CUBIC(Row_B, Col_B, CV_8UC3);resize(image, biggerImg_CUBIC, bigger...原创 2019-08-24 09:13:02 · 462 阅读 · 0 评论