gpt4 book ai didi

image-processing - 将CvFindContours()从8连接更改为4连接的邻居

转载 作者:行者123 更新时间:2023-12-02 17:55:12 26 4
gpt4 key购买 nike

OpenCV cvFindContour()方法遵循8个连接的邻居规则获取连接的组件。有什么方法可以将其更改为4个连通的邻居规则-检查连通性时将不考虑角单元。

显然,Mathematica使用简单的CornerNeighbors->False shown here on SO做到了这一点。
在OpenCV中可以这样做吗?即使我们实际上要更改cv * .h文件中的函数定义(这很麻烦),也可以使用任何指针吗?

最佳答案

恐怕这是不可能的,您可以考虑建议对opencv进行代码更改,并添加一个允许这样做的标志。当前在此文件中:

http://code.opencv.org/projects/opencv/repository/entry/trunk/opencv/modules/imgproc/src/contours.cpp

有一个名为icvCodeDeltas的数组,它确定所有邻居。您可以检查它的使用位置并添加一个

static const CvPoint icvCodeDeltas4[4] =  { {1, 0}, {0, -1}, {-1, 0}, {0, 1} };

例如在指定CV_NEIGHBOURS_CROSS时使用。然后要求opencv-community添加它,开源的工作方式。也许快速,肮脏,您应该羞愧的修复将是这样的:

virtual CvPoint icvCodeDeltas[8];
icvCodeDeltas = { {1, 0}, {0, -1}, {-1, 0}, {0, 1}, {1, 0}, {0, -1}, {-1, 0}, {0, 1} };

但是我没有进行测试,我也不知道这是否可以避免“static”和“const”,所以要小心;)

关于image-processing - 将CvFindContours()从8连接更改为4连接的邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951483/

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