您好,欢迎光临本网站![请登录][注册会员]  
文件名称: opencv3_学习笔记.pdf
  所属分类: 机器学习
  开发工具:
  文件大小: 4mb
  下载次数: 0
  上传时间: 2019-08-17
  提 供 者: qq_43******
 详细说明:上传自己学习opencv时寻找的opencv3的学习笔记,里面的内容很不错,与大家一起分享typedef vcc Vcc31 typedef vcc Vcc 4 typedef Vcc Voc2f Typedef vec Vec3f typedef Veckfloat, 4> Vec4r typedef Vec Vec6f typedef Vec Vec2d typedef Vec'double, 3> Vec3d typedef Vec Vec4d typedef Vec Vecbd 分区第一章-基本操作的第3页 像素遍历 2017年3月25日13:06 1使用矩阵变量的at()方法来实现对一个像素点数据的读 取和赋值 uchar value= grayly.at< uchar>(i,j);//读岀第i行第j列像素值 gray Im.at< uchar>(i,j)=128;/将第i行第j列像素值设置为128 2利用at()方法实现图片像素的遍历 finc lude iostream> #include"opencv2/opencv hpp using name space std using name space cv int main (int argc, char* argv[ Mat grayim( 600, 800, CV SUC1) Mat colorim(600, 800, CV 8UC3) //遍历所有像素,并设置像素值 for( in grayim, rows for( int j=0; j< grayim cols; ++j) grayim. at(uchar>(i, j)=(1+j)%255 //遍历所有像素,并设置像素值 for( int i=0: i< colorim rows;++i for( int j=0;j< colorim cols; ++j) 3b pixel pixel[o]=1%255;//Blue pixel[l]=j%255;//Green pixel[2]=0;//Red colorim.at(Vec3b>(i, j)=pixel //显示结果 Imshow( grayim, gray lm imshow( colorim", colorim waitRo(o) rcturn o 3一个简单的二值化处理代码 Mat P= imread( dog. jpg imshow( 2, p) (int i=0:i(P for (int j=0;j< p cols: ++j) Vec3b value=P at(Vec3 b>(i, j) for (int h=0;h< 3: h++) 分区第一章-基本操作的第4页 f (valuckh>128) value h=255 else value[h= 0 P at(Vec3b>(i, j)=value imshow(1,p) waitKey(20170322) 4使用迭代器遍历矩阵 finc lude iostream> #include opencv2/opencv hpp using name space std using namespace cv int. ma ain (int argc, char* argv [l Mat gravim(600, 800, CV 8UC1) Mat colorim(600, 800, CV 8UC3) /遍历所有像素,并设置像素值 MatIterator grayit, grayed for( gravit= grayim begino, grayed grayim endO: grayit grayed; ++grayit) * gravit= rando‰255 //遍历所有像素,并设置像素值 MatIterator colorit. colorend for( colorit= colorim beginO, colored colorim endO: colorit ! colored; ++colorit) (colorit)[o]= rand(%255;//Blue (colorit)[l= rand(%255://Green (colorit)[2= rand(2%255;//Red //显示结果 imshow(grayim", gray im imshow( colorim witkEy(o) rcturn o 5使用指针来遍历 tinc lude iostream #inc" opencv2/opencv hpp using namespace std 分区第一章-基本操作的第5页 using namc spacc Cv int main (int argc, char* argy L]) Mat grayim(600, 800, CV 8UC1) Mat colorim(600, 800, CV 8UC3 //遍历所有像素,并设置像素值 for( int i=0; i< gray im rows: ++i) //取第i行首像素指针 uchar k p= grayim ptr(i) //对第i行的每个像素(byte)操作 for( int j=0; j< grayim cols; ++j) p[Jj]=(i+j)%255 /遍历所有像素,并设置像素值 for( int i=0; i< colorim rows: ++1) //获取第i行首像素指针 3b* p- colorim ptr(i) for( int j=0; j< colorim cols:++j) p[i][0]=i%255;//Blue p[j[1]=1%255;/ Green p[j[2]=0;/Red //显示结果 imshow(colorim- &7 1mshow( grayim ay lm colorim) witkEy(o) return o 分区第一章-基本操作的第6页 选中图像局部区域 2017年3月25日19:27 1选中图像局部区城 注意,Mat类提供了很多选择局部区域的方法,但是它们 都是指向同一片数据区的,因此就算把局部区域赋值给新 的Mat对象,其实还是指向同一个数据区。 2单行、单列、对角线选中 提取矩阵的一·行或者一·列可以使用函数row()或col。函数的声明如 Mat Mat:: row (int i) const Mat Mat:: col(int j)const 参数ⅰ和j分别是行标和列标。例如取出A矩阵的第i行可以使用如 下代码: Mat line=A row(i) 例如取出A矩阵的第i行,将这一行的所有元素都乘以2,然后赋值给 第j,可以这样写: A row(i=A row(i)*2 取对角线则 MatMat: diag (int d)const 参数d=0时,表示取主对角线;当参数d>0是,表示取主对角线下方的次对角线, 如d1时,表示取主对角线下方,且紧贴主多角线的元素;当参数d0时,表示取 主对角线上方的次对角线。 A diag(d) 3多行、多列选中 用 range( start;end)方法,注意包含star但不包含end //创建一个单位阵 Mat A= Mat:: eye(10, 10, CV 32S) //提取第1到3列(不包括3) Mat B= A(Range:: all(, Range(1, 3)) //提取B的第5至9行(不包括9) //其实等价于C=A( Range(5,9), Range(l,3) Mat C=B(Range(5, 9), Range:: all() a()表示所有行或者列 分区第一章-基本操作的第7页 4提取已知对象的感兴趣的区域 (1)可以利用上面多行多列选中的方式 Mat roi= img(Range(10, 100), Range(10, 100)) //使用构造函数 (2)也可以使用roi方法 //创建宽度为320,高度为240的3通道图像 Mat img(Size(320, 240), CV 8LC3) //roi是表示img中Rect(10,10,100,100)区域的对象 Mat roi (img, Rect(10, 10, 100, 100)) Mat roi(img, Range(10, 100), Range(10, 100)) (3)使用括号运算符 Mat roi2- img(Rcct(10, 10, 100, 100)) 分区第一章-基本操作的第8页 Mat表达式 2017年4月11日 1:59 1什么是MAT表达式 其实MAT就是定义了一个矩阵类型的对象 那么当然可以进行矩阵相关的各类运算 下面给出Mat表达式所支持的运算。下面的列表中使用A和B表示Mat类型的对 象,使用s表示 Scalar对象, alpha表示 double值 ●加法,减法,取负:A+B,A-B,A+s,A-s,s+A,s-A,-A ●缩放取值范围:A* alpha ●矩阵对应元素的乘法和除法:A.mul(B),A/B, alpha/A ●矩阵乘法:A*B(注意此处是矩阵乘法,而不是矩阵对应元素相乘) 矩阵转置:A.tO ●矩阵求逆和求伪逆:A.inⅴ( 矩阵比较运算: A cmpp B, A cmpp alpha, alpha cmpp a。此处 cpop可以 是>,>=,三,!=,<=,<。如果条件成立,则结果矩阼(8U类型矩阼)的对应 元素被置为255;否则置0 ●矩阵位逻辑运算: a logico b, a logico s, s logico a,A,此处 logico可以是&,|和^。 ●矩阵对应元素的最大值和最小值:min(A,B),min(A, alpha),max(A,B) max(A, alpha)。 ●矩阵中元素的绝对值:abs(A) ●叉积和点积:A. cross(B),A.dot(B) 2例程 #include iostream> #inc lude"opencv 2/opencv hpp using namespace std using name space Cv int main(int argc, char* argv[l Mat A= Mat:: eye(4, 4, CV 32SC1) Mat b=a sk 3+l Mat C=B diag(0)+B col(1) cout <(来访问矩阵元素了 直接使用M(j)来访问元素 MatM(600,800,CV8UC1); for( int i=0: i< M rows: ++1) //获取指针时需要指定类型 uchar p=M ptr(i) for( int j=0; j< M cols: ++j) double dl=(double)((i+j)%255) //用atO读写像素时,需要指定类型 M at() //但编译时不会提醒错误 //运行结果不正确,d2不等于d1 double d2=M at(i, j) 对比如下 //在变量声明时指定矩阵元素类型 Mat &) M for( int i =0; i< MI rows; ++i) //不需指定元素类型,语句简洁 uchar p=MI ptr(i) for( int j=0; j< M1 cols; ++j double d1=(double)((i+j)%255) /直接使用 Matlab风格的矩阵元素读写,简沾 M1(i,j)=d1; doublc d2=M1 (i, j) 分区第一章-基本操作的第10页
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: opencv3_学习笔记.pdf
 输入关键字,在本站1000多万海量源码库中尽情搜索: