2012-07-09 64 views
0

我似乎无法得到这个工作。我试图获取图像的像素值,但首先需要更改图像的颜色,但由于我不能使用int或只是Mat,因为这些值不是整数,所以我必须使用<float>,并且由于该错误当我尝试在cmd上运行时弹出。为什么不能这样工作; opencv Mat_ <float>

int main(int argc, char **argv) 
{ 

    Mat img = imread(argv[1]); 
    ofstream myfile; 

    Mat_<float> MatBlue = img; 
     int rows1 = MatBlue.rows; 
     int cols1 = MatBlue.cols; 
     for(int x = 0; x < cols1; x++) { 
      for(int y = 0; y < rows1; y++) { 
       float val = MatBlue.at<cv::Vec3b>(y, x)[1]; 
       MatBlue.at<cv::Vec3b>(y, x)[0] = val + 1; 

      } 
     } 
} 

回答

1

要实现您的目标,即类型转换,请使用cv::Mat::convertTo

示例:img.convertTo(MatBlue, CV_32F)img.convertTo(MatBlue, CV_32F, 1.0/255.0)(使值在0和1之间归一化)。

您正在代码中混合char和float指针类型。