C ++を使用するOpenCVで関心領域(ROI)はどのように機能しますか?
画像から特定の部分を分離するには、最初にその領域を特定する必要があります。次に、その領域をメイン画像から別のマトリックスにコピーする必要があります。これが、OpenCVのROIの仕組みです。
この例では、最初に2つの行列が宣言されています。その後、'image_name.jpg'という名前の画像 'image1'に読み込まれました マトリックス。次の行'image2=image1(Rect(100、100、120、120));' 特別な注意が必要です。この行は、画像の定義された領域を切り取って、「image2」マトリックスに保存しています。
この図は、「Rect(100,100,120,120)」コードを使用してここで行ったことを示しています。このコード行の基本的な形式は'Rect(x、y、x 1 、y 1 )'。ここで、xとyは長方形の開始点を定義し、x 1 およびy1 長方形の端点を表します。これらの値を変更することで、長方形のサイズを変更できます。
例
次のプログラムは、OpenCVの関心領域の動作を示しています。
#include #include #include using namespace std; using namespace cv; int main() { Mat image1; //Declaring a matrix named 'image1'// Mat image2; //Declaring a matrix named 'image2'// image1 = imread("RGB.png"); //Loading an image name 'image_name.png into image1 matrix// image2 = image1(Rect(100, 100, 120, 120)); //imposing a rectangle on image1// namedWindow("Image_Window1"); //Declaring an window to show actual image// namedWindow("Image_Window2"); //Declaring an window to show ROI// imshow("Image_Window1", image1); //Showing actual image// imshow("Image_Window2", image2); waitKey(0); return 0; }
出力
-
C ++を使用してOpenCVでバイナリイメージを反転する方法は?
バイナリイメージを反転するとは、ピクセル値を反転することを意味します。視覚的な観点から、バイナリイメージを反転すると、白のピクセルは黒に変換され、黒のピクセルは白に変換されます。 この関数の基本的な形式は-です。 cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY); 次の行は、グレースケール画像をバイナリ画像に変換し、変換された画像を「binary_image」行列に保存しています。 threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY); ここで、
-
C ++を使用してOpenCVでバイナリイメージを作成するにはどうすればよいですか?
バイナリイメージは、白黒の2色を表す単なるデジタルイメージです。画像処理の観点から、バイナリ画像には、0と1の2つの可能な値を持つピクセルが含まれています。ピクセルの値が0の場合、それは純粋な黒色を表します。ピクセルの値が1の場合、それは純粋な白色を意味します。 グレースケール画像では、それぞれに256の異なる可能な値があります。しかし、バイナリイメージでは、可能な値は2つだけです。バイナリイメージには、さまざまなタイプのアプリケーションがあります。たとえば、形態学的変換には2値画像が必要であり、背景からのオブジェクト形状の抽出には2値画像が必要です。OpenCVを使用すると、画像を2値画像