C ++を使用してOpenCVで単一チャネル画像のピクセル値を読み取る方法は?
デジタル画像はピクセルでできています。 OpenCVを使用すると、ピクセルの値を簡単に読み取ることができます。ただし、ピクセル値を取得する場合は、単一のチャネルを個別に処理する必要があります。
ここでは、「cimage」という名前のマトリックスに画像をロードし、「cvtColor(cimage、img、COLOR_BGR2GRAY);」を使用して画像を変換します。 ' 'img'という名前のマトリックスに保存します。
次のプログラムは、画像のピクセル値を読み取り、コンソールウィンドウに値を表示します。
例
#include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { int x;//Declaring an integer variable to hold values of pixels// Mat cimage = imread("colors.jpg");//loading an image// Mat img;//Declaring an empty matrix to store converted image// cvtColor(cimage, img, COLOR_BGR2GRAY);//Converting loaded image to grayscale image// for (int i = 0; i < img.rows; i++)//loop for rows// { for (int j = 0; j < img.cols; j++)//loop for columns// { x = (int)img.at<uchar>(i, j);//storing value of (i,j) pixel in variable// cout << "Value of pixel" << "(" << i << "," << j << ")" << "=" << x << endl;//showing the values in console window// } } imshow("Show", img);//showing the image// waitKey();//wait for keystroke from keyboard// return 0; }
出力
-
C ++を使用してOpenCVでバイナリイメージを作成するにはどうすればよいですか?
バイナリイメージは、白黒の2色を表す単なるデジタルイメージです。画像処理の観点から、バイナリ画像には、0と1の2つの可能な値を持つピクセルが含まれています。ピクセルの値が0の場合、それは純粋な黒色を表します。ピクセルの値が1の場合、それは純粋な白色を意味します。 グレースケール画像では、それぞれに256の異なる可能な値があります。しかし、バイナリイメージでは、可能な値は2つだけです。バイナリイメージには、さまざまなタイプのアプリケーションがあります。たとえば、形態学的変換には2値画像が必要であり、背景からのオブジェクト形状の抽出には2値画像が必要です。OpenCVを使用すると、画像を2値画像
-
C ++を使用してOpenCVの画像のチャンネル数を計算するにはどうすればよいですか?
このトピックでは、画像のチャンネル数を確認する方法を理解します。プログラムを実行すると、チャンネル番号がコンソールウィンドウに表示されます。 チャネルの番号を取得するために、channels()という名前のOpenCVのクラスを使用しました。 クラスchannels()のオブジェクトとして画像マトリックスを渡すと、チャネルに整数値が与えられます。 次のプログラムは、チャネルの数をカウントし、コンソールウィンドウに表示します。 例 #include<iostream> #include<opencv2/highgui/highgui.hpp> using namesp