簡體   English   中英

使用計算機視覺捕獲圖像時,如何在3個通道中獲得感興趣的區域?

[英]How do I get the region of interest in 3 channels when capturing images with computer vision?

我正在學習計算機視覺。 我在這樣的單聲道中獲得了ROI。(請參閱我計算樣本平均像素顏色。)

std::string path = "C:\\image\\Lenna.png";
cv::Mat mImage = cv::imread(path);
cv::Mat mImage_mono;
cv::cvtColor(mImage, mImage_mono, CV_RGB2GRAY);
int width = mImage_mono.cols;
int height = mImage_mono.rows;
unsigend char * PImage = mImage_mono.data
const int kernel_size = 100;
const int kernel_size_half = 100/2;
int sum
int avg
sum = 0;

for (int row = height / 2 - kernel_size_half; row < height / 2 + kernel_size_half; row++) {
        for (int col = width / 2 - kernel_size_half; col < width / 2 + kernel_size_half; col++)
        {
            int index = row * width + col;
            sum+= pImage[index];
        }
    }
    avg = sum / (kernel_size * kernel_size);

我想在3個通道(R,G,B)(如單聲道)中獲得ROI(我想使用“ for”代碼),而我只想要在ROI中進行人臉檢測之類的操作。 在3個通道中,我必須考慮到數組。 我知道數組需要數據排序(B,G,R)。 所以我認為我必須在寬度和高度上乘以3,但是我不能正常工作。 如何不使用功能“ cv :: cvSetImageROI”在多渠道中獲得ROI?

是否要按顏色通道拆分圖像並獲得每個通道的ROI?

cv::Rect r(0, 0, roi_width, roi_height);
cv::Mat bgr[3];
cv::Mat b_roi;
cv::split(image, bgr);
b_roi = bgr[0](r);  // get the ROI of blue channel

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM