2017年3月16日

摘要: 1、介绍 OpenCV 读写视频之前,先介绍一下编解码器(codec) 。如果是图像文件, 我们可以根据文件扩展名得知图像的格式。但是此经验并不能推广到视频文件中。 有些 OpenCV 用户会碰到奇怪的问题, 都是 avi 视频文件, 有的能用 OpenCV打开,有的不能。 视频的格式主要由压缩算法 阅读全文
posted @ 2017-03-16 16:07 gary_123 阅读(730) 评论(0) 推荐(0) 编辑
摘要: 1、读写图像文件 将图像文件读入内存,可以使用 imread()函数;将 Mat 对象以图像文件格式写入内存,可以使用 imwrite()函数。 2、读图像文件 imread()函数返回的是 Mat 对象, 如果读取文件失败, 则会返回一个空矩阵,即 Mat::data 的值是 NULL。执行 im 阅读全文
posted @ 2017-03-16 15:19 gary_123 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 在 OpenCV 2 中虽然引入了方便的 Mat 类,出于兼容性的考虑,OpenCV 依然是支持 C 语言接口的 IplImage 和 CvMat 结构。如果你要与以前的代码兼容,将会涉及 Mat 与 IplImage 和 CvMat 的转换。 1、 Mat 转为 IplImage 和 CvMat 阅读全文
posted @ 2017-03-16 14:54 gary_123 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 从前面的例程中, 可以看到 Mat 类重载了<<操作符, 可以方便得使用流操作来输出矩阵的内容。默认情况下输出的格式是类似 Matlab 中矩阵的输出格式。除了默认格式,Mat 也支持其他的输出格式。代码如下: 首先创建一个矩阵,并用随机数填充。填充的范围由 randu()函数的第二个参数和第三个参 阅读全文
posted @ 2017-03-16 14:33 gary_123 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 使用 Mat 类,内存管理变得简单,不再像使用 IplImage 那样需要自己申请和释放内存。虽然不了解 Mat 的内存管理机制,也无碍于 Mat 类的使用,但是如果清楚了解 Mat 的内存管理,会更清楚一些函数到底操作了哪些数据。 Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方 阅读全文
posted @ 2017-03-16 14:16 gary_123 阅读(623) 评论(0) 推荐(0) 编辑
摘要: Mat_类是对 Mat 类的一个包装,其定义如下: template<typename _Tp> class Mat_ : public Mat { public: //只定义了几个方法 //没有定义新的属性 }; 这是一个非常轻量级的包装, 既然已经有 Mat 类, 为何还要定义一个 Mat_?下 阅读全文
posted @ 2017-03-16 11:08 gary_123 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 利用C++中的运算符重载,Opencv2中引入了Mat运算表达式。这一新特点使得使用c++进行编程时,就如同写Matlab脚本。 例如: 如果矩阵A和B大小相同,则可以使用如下表达式: C=A+B+1; 其执行结果是A和B的对应元素相加,然后再加1,并将生成的矩阵赋给C变量。 下面给出 Mat 表达 阅读全文
posted @ 2017-03-16 10:58 gary_123 阅读(233) 评论(0) 推荐(0) 编辑

导航