gpt4 book ai didi

c++ - 多区域 mask OpenCV

转载 作者:行者123 更新时间:2023-11-28 02:36:44 26 4
gpt4 key购买 nike

我想在 OpenCV 中创建一个包含一些完整矩形区域(比如 1 到 10 个区域)的 mask 。将其视为显示图像上感兴趣特征位置的 mask 。我知道每个区域角点的像素坐标。

现在,我首先将 Mat 初始化为 0,然后遍历每个元素。使用“if”逻辑,如果每个像素属于该区域,我将每个像素设置为 255,例如:

for (int i = 0; i<mymask.cols, i++) {
for (int j = 0; j<mymask.rows, j++) {
if ( ((i > x_lowbound1) && (i < x_highbound1) &&
(j > y_lowbound1) && (j < y_highbound1)) ||
((i > x_lowbound2) && (i < x_highbound2) &&
(j > y_lowbound2) && (j < y_highbound2))) {
mymask.at<uchar>(i,j) = 255;
}
}
}

但这很笨拙,我认为效率很低。在这种情况下,我用 255“填充”了 2 个矩形区域。但是除了使用 switch-case 并重复代码 n 次之外,没有可行的方法来更改我填充的区域数。

有没有人想出更智能的东西?我宁愿不使用第 3 方的东西(除了 OpenCV ;))而且我正在使用 VisualStudio 2012。

最佳答案

使用cv::rectangle() :

//bounds are inclusive in this code!
cv::Rect region(x_lowbound1, y_lowbound1,
x_highbound1 - x_lowbound1 + 1, y_highbound1 - y_lowbound1 + 1)
cv::rectangle(mymask, region, cv::Scalar(255), CV_FILLED);

关于c++ - 多区域 mask OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com