C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++を使用してOpenCVでバイナリイメージを作成するにはどうすればよいですか?


バイナリイメージは、白黒の2色を表す単なるデジタルイメージです。画像処理の観点から、バイナリ画像には、0と1の2つの可能な値を持つピクセルが含まれています。ピクセルの値が0の場合、それは純粋な黒色を表します。ピクセルの値が1の場合、それは純粋な白色を意味します。

グレースケール画像では、それぞれに256の異なる可能な値があります。しかし、バイナリイメージでは、可能な値は2つだけです。バイナリイメージには、さまざまなタイプのアプリケーションがあります。たとえば、形態学的変換には2値画像が必要であり、背景からのオブジェクト形状の抽出には2値画像が必要です。OpenCVを使用すると、画像を2値画像に自由に変換できます。

次の例は、「original_image」マトリックスにロードされた画像をグレースケール画像に変換し、それを「grayscale_image」マトリックスに保存しています-

cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);

次の行は、グレースケール画像をバイナリ画像に変換し、変換された画像を「binary_image」行列に保存しています。

threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);

ここで、「grayscale_image」はソースマトリックス、「binary_image」はデスティネーションマトリックスです。その後、100と255の2つの値があります。これらの2つの値は、しきい値の範囲を表します。この行のしきい値範囲は、変換されるグレースケールピクセル値を表します。

次のプログラムは、画像をロードしてバイナリ画像に変換します。

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
   Mat original_image;//declaring a matrix to load the original image//
   Mat grayscale_image;//declaring a matrix to store grayscale image//
   Mat binary_image;//declaring a matrix to store the binary image
   namedWindow("Original Image");//declaring window to show binary image//
   namedWindow("Show Binary");//declaring window to show original image//
   original_image = imread("teddy.jpg");//loading image into matrix//
   cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);//Converting BGR to Grayscale image and storing it into converted matrix//
   threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);//converting grayscale image stored in converted matrix into binary image//
   imshow("Original Image", original_image);//showing Original Image//
   imshow("Show Binary", binary_image);//showing Binary Image//
   waitKey(0);
   return 0;
}

出力

C ++を使用してOpenCVでバイナリイメージを作成するにはどうすればよいですか?


  1. C ++を使用してOpenCVで画像をロードして表示するにはどうすればよいですか?

    このトピックでは、C++でOpenCVを使用して画像を読み込んで表示する方法を決定します。 OpenCVで画像を読み込んで表示するには、次の機能が必要です。 マット: マットは機能ではありません。これはデータ構造であり、変数の一種です。 C ++のint、char、string変数タイプと同様に、MatはOpenCVの変数であり、その中に画像をロードするためのマトリックスデータ構造を作成します。このプログラムでは、「MatmyImage;」と書きました。 これは、myImageという名前の行列変数を宣言していることを意味します。 namedWindow(): メモリを割り当て、画像を

  2. Java OpenCVライブラリを使用してミラーイメージを作成するにはどうすればよいですか?

    鏡像を作成するには ImageIO.read()メソッドを使用して必要な画像を読み取ります。 画像の高さと幅を取得します。 結果を保存するために空のバッファリングされた画像を作成します ネストされたforループを使用すると、画像の各ピクセルをトラバースします。 画像の幅を右から左に繰り返します。 getRGB()メソッドを使用してピクセル値を取得します。 setRGB()メソッドを使用して、新しい幅の値を置き換えて、ピクセル値を結果の画像オブジェクトに設定します。 例 import java.io.File; import java.io.IOEx