【问题标题】:Detect wall corner with openCV - Hard使用 openCV 检测墙角 - 硬
【发布时间】:2021-12-02 16:09:11
【问题描述】:
我有这张图片(对不起尺寸):
编辑:这只是我房间的一个简单的墙角,没什么特别的......
我正在尝试检测确切的角落,但到目前为止未能做到。
我尝试使用灰色和双边、掩码和精明,当然还有一些 openCV 角点算法的组合,如 Harris、EigenValsAndVecs、MinEigenVal 等等......
到目前为止,我找到了很多点,或者没有。
请问有什么办法吗?
谢谢
【问题讨论】:
标签:
python
opencv
image-processing
opencv-python
corner-detection
【解决方案1】:
这看起来相当简单。首先计算梯度幅度,这将找到三个基本一致的区域之间的线(下图中的b),然后应用类似 Harris 角点检测器(或任何其他变体也可以)来找到直线之间的交点(下图中的c)。我对高斯梯度幅度和 Harris 检测器中的平滑都使用了 sigma 4。
我在 MATLAB 中快速完成了这个测试,因为它是开放的,但您可以访问我使用的相同 DIPlib 算法(披露:我是 DIPlib 的作者)。它看起来像这样:
import diplib as dip
a = dip.ImageRead('corner.jpg') # you can use OpenCV or PIL or whatever else for reading too
b = dip.GradientMagnitude(a, sigmas=4)
c = dip.HarrisCornerDetector(b, sigmas=4)