Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Vùng quan tâm (ROI) trong OpenCV C++

ROI (Region of Interest) cho phép cắt một vùng hình chữ nhật từ ảnh gốc để xử lý riêng.

Trong OpenCV C++, dùng Mat roi = img(Rect(x, y, width, height)). Vùng này chia sẻ dữ liệu với ảnh gốc (shallow copy).

Ví dụ

#include 
using namespace cv;

int main() {
    Mat img = imread("image.jpg");
    if (img.empty()) return -1;

    // Cắt vùng: x=100, y=100, width=200, height=150
    Rect roiRect(100, 100, 200, 150);
    Mat roi = img(roiRect);

    // Vẽ hình chữ nhật lên ảnh gốc để minh họa
    rectangle(img, roiRect, Scalar(0,255,0), 2);

    imshow("Original", img);
    imshow("ROI", roi);
    waitKey(0);
    return 0;
}

Lưu ý quan trọng

  • roi tham chiếu dữ liệu của img. Thay đổi roi sẽ thay đổi img.
  • Để tách bản sao độc lập: Mat roiClone = img(roiRect).clone().
  • Kiểm tra ranh: roiRect & Rect(0,0,img.cols,img.rows).

Kết quả

Hiển thị 2 cửa sổ: ảnh gốc có khung xanh, và vùng ROI cắt ra.