【发布时间】:2021-04-06 06:12:10
【问题描述】:
我的图像上有几个 ROI。对于每个 ROI,如果它包含一个黑色像素,我想将整个 ROI 着色为黑色。到目前为止,这是我的代码:
int j = 0;
// this loop sets the ROI rows
while (j < 10) {
// this loop sets the ROI columns
for (int i=0; i<width-1; i+=mini_box_width){
if (width-i >= mini_box_width){
// define the Rect, i iterating horizontally
Rect minibox = Rect(x+i, y, mini_box_height, mini_box_width);
// Mat minibox_image = frameRGB(minibox);
// Mat dst;
// inRange(minibox_image, Scalar(255,255,255), Scalar(255,255,255), dst);
// plot ROIs
rectangle(frameRGB, minibox, GREEN);
// save minibox Rect values in vector
miniROIs.push_back(minibox);
}
}
// iterate vertically
y += mini_box_height;
j++;
}
我想它与 inRange 函数有关,如果图像在我指定的范围内,它可以制作一个遮罩,但我如何将它应用于原始图像上 ROI 中的像素?
例如,看这张图片:
图像被分割成几个 ROI。对于图像中的每个 ROI,如果找到黑色像素,我想在原始图像上将该 ROI 中的所有像素涂黑。它应该是这样的:
【问题讨论】:
标签: c++ image opencv image-processing computer-vision