[英]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.