
opencv学习
文章平均质量分 61
微凉的墨-楠楠
一直是个学生党,努力活出我自己。
展开
-
《opencv入门教程》(迭代器遍历)
#include#includeusing namespace std;using namespace cv;int main(){ Mat grayim(600,800,CV_8UC1); Mat colorim(600, 800, CV_8UC3); MatIterator_ graybegin, grayend; MatIterator_ colorbegin, col原创 2015-07-08 20:27:00 · 1013 阅读 · 0 评论 -
第一章 笔记
1,读取图片,检查图片是否已经被正确读取:Mat image=imread("1.jpg");if(!image.data){cout}2.调用Mat的size()方法,可以获取该图像的尺寸。返回的是一个结构体。Mat image;coutcout3.在原地进行的图像变换:Mat image,r原创 2015-05-30 17:14:14 · 338 阅读 · 0 评论 -
彩色图像,二值图像,灰度图像,不要傻傻分不清~
(一)彩色图像每个像素通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,分量介于(0,255)。Scalar(0,0,0):黑色 Scalar(255,255,255):白色(二)二值图像(binary image)即图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。 threshold(InputArray src, OutputAr原创 2015-05-30 17:12:24 · 2506 阅读 · 0 评论 -
基于形态学运算的腐蚀,膨胀,开运算,闭运算
#include #include #include #include using namespace std; using namespace cv; int main(){ Mat image = imread("binary.bmp"); imshow("Image",image);原创 2015-05-30 17:16:30 · 564 阅读 · 0 评论 -
Mat与Iplimage之间的相互转换
(1)Mat->IplImage: Mat srcImage; IplImage imgTmp = srcImage; IplImage *img0 = cvCloneImage(&imgTmp);(2)IplImage->Mat: IplImage cpy; Mat back(cpy, t原创 2015-05-30 17:13:32 · 867 阅读 · 0 评论 -
《Opencv 入门教程》
很多初学者希望快速掌握opencv,但是会遇到很多困难,总结起来有两种:(1)c/c++编程基础不过关。提升编程能力,多练习编程。(2)不了解算法原理。提升理论知识。系统学习《数字图像处理》《计算机视觉》《模式识别》等opencv是一个计算机视觉库。1.1 编程的流程一个编程的基本流程:编辑,编译,连接。编辑即:编写代码。编译:将某种语言写成的源代码转换成目标文件(包含原创 2015-07-07 21:09:56 · 1453 阅读 · 0 评论 -
widthStep、width
widthStep表示存储一行像素需要的字节数。widthStep必须是4的倍数,如果8U图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空在那儿不用。也就是一个宽3高3的图像的imageData数据大小为4*3=12字节。转自:http://blog.sina.com.cn/s/blog_4b46937b0100原创 2015-09-11 22:03:09 · 908 阅读 · 0 评论 -
《Opencv入门》指针遍历
#include #include "opencv2/opencv.hpp" using namespace std;using namespace cv;int main(int argc, char* argv[]){ Mat grayim(600, 800, CV_8UC1); Mat colorim(600, 800, CV_8UC3); //遍历所有像素,并设置像原创 2015-07-08 20:31:03 · 921 阅读 · 0 评论 -
OpenCV坐标体系的初步认识
作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 欢迎转载或分享,但请务必声明文章出处。 (新浪微博:tornadomeet,欢迎交流!)前言 相信很多朋友在使用OpenCV的时候会遇到一个小问题,且有时候对这样的小问题没有引起足够的重视,或者通过表面想当然的去编程,所以调试代码时出现一些莫名其妙的问题,最后发现问题时时转载 2015-12-28 21:42:11 · 431 阅读 · 0 评论 -
MSER
区域特征提取:MSER Maximally Stable Extremal Regions是目前业界认为的性能最好的仿射不变区域,当使用不同灰度阈值对图像进行二值化时得到的最稳定的区域:特点:1.对灰度图像的仿射变化具有不变性;2.稳定性,区域的支持集相对灰度变化稳定;3,可以检测不同精细程度的区域;MSER提取过程:(1)使用一系列的灰度阈值对图像进行二值化处理;原创 2015-12-22 15:44:36 · 1094 阅读 · 0 评论 -
遍历图像像素点的方法
一:椒盐噪点的例子(随机遍历图像的某个像素点)void salt(Mat &image,int n){for(int k=0;k//rand():随机数产生函数int i=rand()%image.cols;int j=rand()%iimage.rows;if(image.channels()==1)//通过通道,判断是灰度图还是彩色图。若原创 2015-05-30 17:14:52 · 4893 阅读 · 0 评论 -
hough圆检测
#include #include #include #include #include #include #include #include //-----------------------------------【命名空间声明部分】--------------------------------------- // 描述:包含程序所使用的命名空间原创 2015-05-30 19:11:34 · 1784 阅读 · 0 评论 -
《opencv入门》
选择:单行或者单列:Mat Mat::row(int i) constMat Mat::col(int j) const取出A矩阵的第i行:Mat line=A.row(i);取出A矩阵的第i行,将这一行的所有元素都乘以2,然后赋给第j行;A.row(j)=A.row(i)*2;多行或者多列://创建一个单位阵Mat A=Mat::eye(1原创 2015-07-08 20:40:56 · 331 阅读 · 0 评论 -
《opencv入门》
Mat类简介:Mat是一个类,由两个数据部分组成,矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵的指针。为了解决矩阵数据的传递,OpenCV 使用了引用计数机制。其思路是让每个 Mat 对象有自己的矩阵头信息,但多个Mat 对象可以共享同一个矩阵数据。让矩阵指针指向同一地址而实现这一目的。 很多函数以及很多操作(如函数参数传值)只复制矩阵头信原创 2015-07-08 21:06:46 · 372 阅读 · 0 评论 -
《opencv2入门》感兴趣区域
Mat img(Size(320,240),CV_8UC3)方法一:Mat roi(img,Rect(10,10,100,100));方法二:Mat roi2=img(Rect(10,10,100,100))方法三:Mat roi3=img(Range(10,100),Range(10,100));方法四:Mat roi4(img,Range(10,100),Ran原创 2015-07-08 21:02:17 · 424 阅读 · 0 评论 -
《opencv入门》
矩阵的对角线元素可以使用 Mat 类的 diag()函数获取,该函数的定义如下: Mat Mat::diag(int d) const 参数 d=0 时,表示取主对角线;当参数 d>0 是,表示取主对角线下方的次对角线,如d=1 时,表示取主对角线下方,且紧贴主多角线的元素;当参数 d表示取主对角线上方的次对角线。 如同row()和col()函数, diag()函数也不进行内原创 2015-07-08 21:03:22 · 370 阅读 · 0 评论 -
《opencv入门》
imread("1.jpg",flag)flag=0;以单通道的形式引进图片flag>0;返回3通道的图片flag《Opencv入门》之后的便是视频的打开和读取。原创 2015-07-08 21:29:24 · 297 阅读 · 0 评论 -
《opencv 入门教程》
一幅图像可以看做是一个m*n的矩阵,矩阵的元素的值表示这个位置上的像素的亮度,一般像素值越大则表示该点越亮。灰度图像:2维矩阵,彩色图像:3维矩阵。图像数据在计算机内存中的存储顺序为以图像最左上角开始。Mat 类定义里关键属性:int flag;int dims;int rows,cols;uchar*data;构造Mat;Mat M(3,2,CV_8UC3,S原创 2015-07-07 21:21:23 · 870 阅读 · 0 评论 -
《opencv 入门》第三章笔记(用at进行遍历)
#include#includeusing namespace std;using namespace cv;int main(){ Mat image(600,800,CV_8UC1); Mat image2(600,800,CV_8UC3); for (int i = 0; i < image.rows; ++i) { /*uchar * p = image.ptr(原创 2015-07-08 18:44:53 · 1569 阅读 · 0 评论 -
hough变换 矩形检测
//#include "cv.h"//#include "highgui.h"#include#include#include#include#include #include #include #include #include #include #include #include using namespace std;using namespace c原创 2015-05-30 19:26:05 · 4514 阅读 · 3 评论 -
统计函数耗费时间,简单的图像运算,定义感兴趣区域 第二章
一:统计函数耗费时间先上代码吧~:double duration;duration=static_cast(getTickCount());colorReduce(image);//被测试的函数duration=static_cast(getTickCount())-duration;duration/=getTickFrequency();//运行原创 2015-05-30 17:15:53 · 459 阅读 · 0 评论 -
Mat中的depth、dims、channels、step、data、elemSize
参考网址:http://www.douban.com/note/265479171/Mat:用于表示一个单通道或者多通道的稠密数组相当于原先版本的:CvMat、CvMatND、IplImage矩阵(M)中的数据元素的地址计算公式:addr(Mi0,i1,,,,,,,,,im-1)=M.data+M.step[0]*i0+M.step[1]*i1+,,,,,,原创 2015-09-12 20:54:48 · 1077 阅读 · 0 评论