あなたが尋ねることは確かに可能ですが、それがどのように行われるかは多くのことに依存します。C ++を使用する場合、SOでは通常、C ++インターフェイスを使用することを期待しています。つまり、cv::Mat
オブジェクトがあり、次のような画像をロードします。(名前空間cvを使用)
#include <opencv2/core/core.hpp>
Mat mat_gray = imread(path, CV_LOAD_IMAGE_GRAYSCALE);
またはによって
Mat mat = imread(path); // and assuming it was originally a color image...
Mat mat_gray;
cvtColor(mat, mat_gray, CV_BGR2GRAY); //...convert it to grayscale.
ここで、ピクセル値に1つずつアクセスしたい場合は、を使用します_Tp& mat.at<_Tp>(int x,int y);
。あれは:
for(int x=0; x<mat_gray.rows; ++x)
for(int y=0; y<mat_gray.cols; ++y)
mat_gray.at<uchar>(x,y); // if mat.type == CV_8U
ここでタイプを検索できます。mat.typeがCV_8U以外の場合は、ucharの代わりに使用する必要があります。
純粋なCインターフェースについては、この回答を確認できます。ただし、C ++を使用する場合は、必ずC++インターフェイスを使用する必要があります。