OPENCV学习笔记2-8_Mat_类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OPENCV学习笔记2-8_Mat_类相关的知识,希望对你有一定的参考价值。
在读取矩阵元素以及获取矩阵某行的地址时,需要指定数据类型。 如果使用Mat_类,就可以在变量声明时确定元素的类型,访问元素时不再需要指定元素类型,这样使代码简洁,又减少了出错的可能性。
#include <iostream> #include "opencv2/opencv.hpp" #include <stdio.h> using namespace std; using namespace cv; int main( int argc, char* argv[] ) { Mat M( 600, 800, CV_8UC1 ); /* for ( int i = 0; i < M.rows; ++i ) { //获取指针时,需要指定类型 uchar * p = M.ptr<uchar>( i ); for ( int j = 0; j < M.cols; ++j ) { double d1 = (double) ( (i + j) % 255); //用at()读写像素时,需要指定类型 M.at<uchar>( i, j ) = d1; //代码错误,应使用at<uchar>(),但编译时不会提醒错误 double d2 = M.at<double>( i, j ); } } */ //在变量声明时指定矩阵元素类型 Mat_<uchar> M1 = (Mat_<uchar>&)M; for ( int i = 0; i < M1.rows; ++i ) { uchar * p = M1.ptr( i ); for ( int j = 0; j < M1.cols; ++j ) { double d1 = (double) ( (i + j) % 255); M1( i, j ) = d1; double d2 = M1( i, j ); } } cout <<"M = "<< M <<endl; return(0); }
以上是关于OPENCV学习笔记2-8_Mat_类的主要内容,如果未能解决你的问题,请参考以下文章