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

C ++を使用するOpenCVで関心領域(ROI)はどのように機能しますか?


画像から特定の部分を分離するには、最初にその領域を特定する必要があります。次に、その領域をメイン画像から別のマトリックスにコピーする必要があります。これが、OpenCVのROIの仕組みです。

この例では、最初に2つの行列が宣言されています。その後、'image_name.jpg'という名前の画像 'image1'に読み込まれました マトリックス。次の行'image2=image1(Rect(100、100、120、120));' 特別な注意が必要です。この行は、画像の定義された領域を切り取って、「image2」マトリックスに保存しています。

C ++を使用するOpenCVで関心領域(ROI)はどのように機能しますか?

この図は、「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で関心領域(ROI)はどのように機能しますか?



  1. C ++を使用してOpenCVでバイナリイメージを反転する方法は?

    バイナリイメージを反転するとは、ピクセル値を反転することを意味します。視覚的な観点から、バイナリイメージを反転すると、白のピクセルは黒に変換され、黒のピクセルは白に変換されます。 この関数の基本的な形式は-です。 cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY); 次の行は、グレースケール画像をバイナリ画像に変換し、変換された画像を「binary_image」行列に保存しています。 threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY); ここで、

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

    バイナリイメージは、白黒の2色を表す単なるデジタルイメージです。画像処理の観点から、バイナリ画像には、0と1の2つの可能な値を持つピクセルが含まれています。ピクセルの値が0の場合、それは純粋な黒色を表します。ピクセルの値が1の場合、それは純粋な白色を意味します。 グレースケール画像では、それぞれに256の異なる可能な値があります。しかし、バイナリイメージでは、可能な値は2つだけです。バイナリイメージには、さまざまなタイプのアプリケーションがあります。たとえば、形態学的変換には2値画像が必要であり、背景からのオブジェクト形状の抽出には2値画像が必要です。OpenCVを使用すると、画像を2値画像