2012-07-09 63 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指針類型。