最近在学习《OpenCV2ComputerVisionApplicationProgrammingCookbook》总结了一下cv::Mat中数据的读取方式。如果想去掉cv则需要在主函数前加上using namespace cv;
1、直接读取mat中的数据
Mat method1(Mat&img)
{
//cout<<img.channels()<<endl;
for( size_t nrow = 0; nrow < img.rows;nrow++)
{
for(size_t ncol = 0; ncol < img.cols; ncol++)
{
img.at<Vec3b>(nrow,ncol).val[0]/=8;
img.at<Vec3b>(nrow,ncol).val[1]/=8;
img.at<Vec3b>(nrow,ncol).val[2]/=8;
}
}
return img;
}
2、采用指针的方式读取数据
Mat method2(Mat&img)
{
for( size_tnrow = 0; nrow < img.rows; nrow++)
{
uchar* data =img.ptr<uchar>(nrow);