Computer >> Máy Tính >  >> Lập trình >> C ++

Khu vực ưa thích (ROI) hoạt động như thế nào trong OpenCV sử dụng C ++?

Để tách một phần cụ thể khỏi hình ảnh, trước tiên chúng ta phải xác định khu vực đó. Sau đó, chúng ta sẽ sao chép khu vực đó từ hình ảnh chính sang một ma trận khác. Đây là cách ROI inOpenCV hoạt động.

Trong ví dụ này, hai ma trận đã được khai báo ở đầu. Sau đó, một hình ảnh có tên 'image_name.jpg' đã được tải vào 'image1' ma trận. Dòng tiếp theo 'image2 =image1 (Rect (100, 100, 120, 120));' đòi hỏi sự chú ý đặc biệt. Dòng này cắt bỏ vùng xác định của hình ảnh và lưu trữ nó trong ma trận 'image2'.

Khu vực ưa thích (ROI) hoạt động như thế nào trong OpenCV sử dụng C ++?

Hình cho thấy những gì chúng tôi đã làm ở đây với mã 'Rect (100,100,120,120)'. Dạng cơ bản của dòng mã này là 'Rect (x, y, x 1 , y 1 ) '. Ở đây x và y xác định điểm bắt đầu của hình chữ nhật và x 1 và y 1 đại diện cho điểm cuối của hình chữ nhật. Bằng cách thay đổi các giá trị này, chúng ta có thể thay đổi kích thước của hình chữ nhật.

Ví dụ

Chương trình sau đây thể hiện hoạt động của Khu vực quan tâm trong 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;
}

Đầu ra Khu vực ưa thích (ROI) hoạt động như thế nào trong OpenCV sử dụng C ++?