标签:std names ace 可能性 编译 像素 name 访问 include
在读取矩阵元素以及获取矩阵某行的地址时,需要指定数据类型。 如果使用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); }
标签:std names ace 可能性 编译 像素 name 访问 include
原文地址:http://www.cnblogs.com/yunfung/p/7615962.html