2012-05-09 105 views
0
//Open the image 
    Mat img_rgb = imread("sudoku2.png", CV_LOAD_IMAGE_GRAYSCALE); 
    if (img_rgb.empty()) 
    { 
      cout<<"Cannot open the image"<<endl; 
      return; 
    } 
    Mat img_bw = img_rgb > 128; 
    imwrite("image_bw.jpg", img_bw); 

現在,我想img_bw的所有像素,並保存到一個矩陣M( INT [img_bw.rows] [img_bw.cols])。如何在C++中執行此操作。獲取圖像的矩陣中的OpenCV

回答

0

什麼格式?

cv :: Mat中的原始字節數據可從.ptr()函數獲得,即img_bw.ptr()。

opencv的也有一個XML和JSON讀寫功能矩陣,只需使用< <運營商 - 見opencv tutorial on xml and yaml i/o

編輯:在C++中,你可以用.AT操作存取像素。

對於CV_32F圖像,使用img_data.at<uchar>(x,y)作爲無符號字符(CV_8U)像素,使用img_data.at<float>(x,y)

+0

我的意思是如何獲得一個像素在隨機位置:D。對不起,我表達不好。 – logger