gpt4 book ai didi

c++ - 从二值图像中提取轮廓

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:37 34 4
gpt4 key购买 nike

我正在 C++ 项目中处理来自 CASIA 数据库和 opencv 的二进制图像。我正在寻找一种仅提取轮廓(包含轮廓的边界框)的方法。原始图像是 240x320,我的目标是只获得新图像中的轮廓(比如 100x50 尺寸)。我的第一个想法是获取行和列上“白色”像素的最小和最大位置,并在新图像中获取该矩形内的像素,但我认为这根本没有效率。如果您有任何建议,我将非常乐意听到。左边是输入,右边是输出。

Input-Output

最佳答案

您可以使用内置的 OpenCV 功能来 find contours从你的二进制图像:

例如

// using namespace cv;
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours( your_binary_mat, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE );

请注意,这将寻找外部轮廓(忽略上图中不适用的内部轮廓)并检索点的简化近似值。

访问轮廓后,您可以使用 boundingRect()minAreaRect() (无论您是否需要旋转边界框)。

关于c++ - 从二值图像中提取轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59174487/

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