在我的项目中,我处理我不知道它们是否倾斜的图像。
我使用 C++ 和 OpenCV。我尝试使用霍夫变换来确定倾斜角度:是 90 度还是 180 度。但它没有给出结果。
示例链接 image (full resolution TIFF) here 强>。
下图是按比例缩小并转换为 PNG 的全分辨率图像:
最佳答案
如果我想用霍夫线方法攻击你的图像,我会先做一个 Canny 边缘检测,然后找到霍夫线,然后查看生成的线。所以它在 ImageMagick 中看起来像这样 - 您可以转换为 OpenCV:
convert input.jpg \
\( +clone -canny x10+10%+30% \
-background none -fill red \
-stroke red -strokewidth 2 \
-hough-lines 9x9+150 \
-write lines.mvg \
\) \
-composite hough.png
在 lines.mvg
文件中,我可以看到检测到的各个行:
# Hough line transform: 9x9+150
viewbox 0 0 349 500
line 0,-3.74454 349,8.44281 # 160
line 0,55.2914 349,67.4788 # 206
line 1,0 1,500 # 193
line 0,71.3012 349,83.4885 # 169
line 0,125.334 349,137.521 # 202
line 0,142.344 349,154.532 # 156
line 0,152.351 349,164.538 # 155
line 0,205.383 349,217.57 # 162
line 0,239.453 349,245.545 # 172
line 0,252.455 349,258.547 # 152
line 0,293.461 349,299.553 # 163
line 0,314.464 349,320.556 # 169
line 0,335.468 349,341.559 # 189
line 0,351.47 349,357.562 # 196
line 0,404.478 349,410.57 # 209
line 349.39,0 340.662,500 # 187
line 0,441.484 349,447.576 # 198
line 0,446.484 349,452.576 # 165
line 0,455.486 349,461.578 # 174
line 0,475.489 349,481.581 # 193
line 0,498.5 349,498.5 # 161
我将您的图像调整为 349 像素宽(以使其适合 Stack Overflow 并加快处理速度),因此您可以看到有很多行从图像左侧的 0 开始到图像左侧的 349 结束右边告诉你他们穿过图像,而不是上下移动。此外,您还可以看到线条的右端通常比左端低 16 个像素,因此图像旋转了 tan inverse (16/349) 度。
关于c++ - 如何检测 90 度或 180 度的倾斜度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28538385/