opencv mat 修改_【OpenCV计算机视觉编程攻略】全书总结

016c326718a8d484194996b540f847e2.png

fac085b1a962ecebb3ce8da61c2d0cae.png

第1章 图像编程入门

1.1 简介

1.2 安装OpenCV库

1.3 装载、显示和存储图像

  • imread——读图像
  • namedWindow——定义窗口
  • imshow——显示图像
  • flip——翻转图像
  • waitKey——等待按键
  • imwrite——存储图像
  • setMouseCallback——响应鼠标在图像上的点击操作
  • circle、ellipse、line、rectangle——在图像上绘画对应形状
  • putText——在图像上写入文本

1.4 深入了解cv::Mat

  • Mat::create——重新分配一个新图像
  • Mat::copyTo——把图像复制给另外一个图像
  • Mat::convertTo——转换图像数据类型

1.5 定义兴趣区域

  • 方法一:

c++ cv::Mat imageROI(image, cv::Rect(image.cols-logo.cols, //ROI坐标 image.rows-logo.rows, logo.cols,logo.rows)); //ROI大小 logo.copyTO(imageROI); //插入标志

  • 所谓ROI其实就是Mat类的一种构造函数产生的对原图像内存的新的引用,使用Rect来定义ROI区域时,前两个参数为ROI区域的左上角坐标,后两个参数表示ROI的行列大小。
  • 方法二:

c++ cv::Mat imageROI(image, cv::Range(image.rows-logo.rows, logo.rows) //ROI行范围 cv::Range(image.rows-logo.rows, logo.rows)); //ROI列范围 logo.copyTO(imageROI); //插入标志

  • 第二种方法是给出行列坐标的起始和终止范围
  • 图像掩码 OpenCV中有些操作可以定义掩码,掩码必须为8位图像,如果掩码中某个位置的值不为0,则在这个位置上的操作就会起作用;如果掩码中的某些像素位置的值为0,那么对图像中的相应位置的操作将不起作用;OpenCV中大多数基于像素的操作都可以使用掩码。

第2章 操作像素

2.1 简介

2.2 访问像素值

  • Mat::at(row,col)[n]——对8-bit图像而言,单通道图像时,T=uchar,[n]不需要;当为三通道时,T=cv::Vec3b,[n]可以是0、1、2。

2.3 用指针扫描图像

  • Mat::ptr(row)——T为图像数据类型,此方法是把图像看成三维立体的来访问,row对应的不是单纯的行,更准确的说是三维立体的层。
  • 低层次指针算法访问行:

c++ uchar *data = image.data; data += image.step; //从一行移到下一行

2.4 用迭代器扫描图像

  • cv::MatIterator_ it
  • cv::Mat_::iterator it

c++ cv::Mat_<cv::Vec3b>::iterator it_begin = image.begin<cv::Vec3b>(); //获得起始位置 cv::Mat_<cv::Vec3b>::iterator it_end = image.end<cv::Vec3b>(); //获得结束位置

2.5 编写高效的图像扫描循环

  • cv::getTickCount——返回从最近一次电脑开机到当前的时钟周期数
  • cv::getTickFrequency——返回每秒的时钟周期数,获得某个函数(或代码段)的运行时间的方法如下:

c++ const int64 start = cv::getTickCount(); function(); //调用的函数 double duration = (cv::getTickCount()-start) / //经过的时间(s) cv::getTickFrequency()

结果表明:Mat::at<typename T>(row,col)[n]方法应该在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值