小编Dam*_*nka的帖子

查找具有最大表面积(不包括交叉区域)的边界框轮廓

我有一组来自对象检测系统的边界框。它们的格式如下:

[[x,y], [x,y], [x,y], [x,y]]
Run Code Online (Sandbox Code Playgroud)

我想找到最大的边界框,该边界框既不与任何其他提供的框相交,也​​不位于排除的框内。

我正在使用 python,但欢迎使用任何编程语言进行回复:)

视觉示例

在此输入图像描述

我如何尝试但未能解决这个问题。

方法一。

迭代每个点并找到 x 和 y 的最小值和最大值。

然后使用这些坐标裁剪为多边形。

问题是示例图像上的算法会删除图像的顶部部分,但没有必要这样做,因为我们“错过”了左上角和右上角的框。

方法二。

尝试选择一次仅裁剪一侧,因为通常在我的数据集中要排除的内容都在一侧。例如删除顶部 100px

所以我像以前一样计算了 x 和 y 的最小值和最大值。然后计算每个可能切割的面积 - 左、右、上、下,并选择面积最小的一个。

当图片两侧(如左右两侧)都有方框时,这种方法很快就会失败

python opencv image image-processing python-imaging-library

6
推荐指数
1
解决办法
1832
查看次数

是否不允许访问与使用设计选择不同的类型的数组元素?

我正在尝试访问数组的元素。我确信我尝试使用的类型足以索引整个数组,而 64 位索引是多余的。

我在 C 和 C++ 方面的经验很少,我知道在那里是可能的。

我不确定几点,想问一下:

  • 是设计选择吗?
  • usize尝试访问数组元素时,C 和 C++ 是否将类型转换为?
  • 我可以说服/强制 Rust 使用另一种类型来访问数组元素吗?
  • 访问类型较小的元素是否更快?(例如是<的速度 ?)usizeu8

不工作 Rust 代码

fn main() {
    let some_array = [10; 255];
    let some_index: u8 = 255;

    println!("{}", some_array[some_index])
}
Run Code Online (Sandbox Code Playgroud)

工作 C 代码

int main() {
    char array[255] = {0};
    char index = 12;

    printf("Element: %d", array[index]);
}
Run Code Online (Sandbox Code Playgroud)

c c++ arrays types rust

1
推荐指数
1
解决办法
108
查看次数