特征相关

来源:互联网 发布:晨曦软件下载 编辑:程序博客网 时间:2024/05/01 12:46

opencv2.x新数据结构cv::Mat访问元素的方法

//from-http://blog.csdn.net/moc062066#include "opencv2/opencv.hpp"#include <iostream>using namespace std;using namespace cv; int main(int argc,char** argv){const char* filename = "google.png";//CV_8UC3//相应的CV_8SC3---Vec3s//相应的CV_16UC3---Vec3wMat mat_CV_8UC3 = imread(filename,IMREAD_COLOR);   for( size_t nrow = 0; nrow < mat_CV_8UC3.rows; nrow++)    {   for(size_t ncol = 0; ncol < mat_CV_8UC3.cols; ncol++)   {   Vec3i bgr = mat_CV_8UC3.at<Vec3b>(nrow,ncol);//用Vec3b也行   cout   << "("<<bgr.val[0]<<","   <<bgr.val[1]<<","   <<bgr.val[2]<<")";   }   cout << endl;    }        for( size_t nrow = 0; nrow < mat_CV_8UC3.rows; nrow++)    {    uchar* data = mat_CV_8UC3.ptr<uchar>(nrow);   for(size_t ncol = 0; ncol < mat_CV_8UC3.cols * mat_CV_8UC3.channels(); ncol++)   {cout << int( data[ncol] ) ;   }   cout << endl;    }   //------CV_8UC1----------start---   //Mat mat_CV_8UC1 = imread(filename,IMREAD_GRAYSCALE);   for( size_t nrow = 0; nrow < mat_CV_8UC1.rows; nrow++)   {   for(size_t ncol = 0; ncol < mat_CV_8UC1.cols; ncol++)   {   uchar val = mat_CV_8UC1.at<uchar>(nrow,ncol);   //   cout << (int(val) > 200 ? 1 :0) ;//cout<<int(val)<< endl ;   }   cout << endl ;   }   cout << endl;   for ( size_t row = 0 ; row < mat_CV_8UC1.rows ; ++row)    {uchar* ptr = mat_CV_8UC1.ptr<uchar>(row);for ( size_t col = 0 ; col < mat_CV_8UC1.cols ; ++col) {cout << ( int(ptr[col]) > 200 ? 1 :0) ;//cout<<int(val)<< endl ;}cout << "\n" ;}cout << endl;   MatIterator_<uchar> it = mat_CV_8UC1.begin<uchar>(), it_end = mat_CV_8UC1.end<uchar>();   for(int cnt = 1; it != it_end; ++it)    {      cout << ( int(*it) > 200 ? 1 : 0) ;      if( (cnt++ % mat_CV_8UC1.cols) ==0 )      cout << endl;        }   //------CV_8UC1----------end---         return 0;}


未完待续。。。


原创粉丝点击