你也可以试着先对原图像进行腐蚀处理,将粗线条变细。这样效果会好点
9条回答
-
采纳
点赞 评论 复制链接分享
-
采纳
这是r的推导公式,你可以试试提高精度看看是否有效,我没有试过。
点赞 评论 复制链接分享 -
采纳
r是像素吧,最小等于1,不能设成0.1的吧
点赞 评论 复制链接分享 -
采纳
大哥,没看到你的回复啊
点赞 评论 复制链接分享 -
采纳
提高极坐标空间的坐标精度,例如原本以r=1,theta=1°为步进,现在可以以r=0.1,theta=0.1.相当于把空间分割得更密了
点赞 评论 复制链接分享 -
采纳
那样的话,在转换空间之后,选择曲线交点的时候设置一个判断条件:
如果 选取了一点
则 附近的半径为 r 以内的点不再选取
或者更好一些的解决办法我猜想是:
如果 n 个点之间的间隔小于 ε
则将 n 个点的坐标取平均,得到一个点
点赞 评论 复制链接分享 -
采纳
不是这个意思,这个都能做,霍夫直线会把一条直线检测出两条直线,我只想要一条怎么做?HoughLinesP用不了~直线都检测不全
点赞 评论 复制链接分享 -
采纳
以及官网推荐使用cv2.HoughLinesP()
> Best thing is that, it directly returns the two endpoints of lines. In previous case, you got only the parameters of
> lines, and you had to find all the points. Here, everything is direct and simple.
import cv2 import numpy as np img = cv2.imread('dave.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray,50,150,apertureSize = 3) minLineLength = 100 maxLineGap = 10 lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap) for x1,y1,x2,y2 in lines[0]: cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2) cv2.imwrite('houghlines5.jpg',img)
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html
点赞 评论 复制链接分享 -
采纳
请问题主是调用的OpenCV还是自己写的转换?如果是调用的OpenCV,有一个maxLineGap参数:同一方向上两条线段判定为一条线段的最大允许间隔(断裂),超过了设定值,则把两条线段当成一条线段,值越大,允许线段上的断裂越大,越有可能检出潜在的直线段
https://blog.csdn.net/dcrmg/article/details/78880046
点赞 评论 复制链接分享
为你推荐
- opencv 中霍夫变换缩小需要检测的角度
- Python修改函数的源码
- 如何检测垫片缺陷的(划痕,磨损等)?
- 一段简单的C++代码有三个错误,求大神帮忙解决下
- c++
- opencv配置
- stdafax.h
- 1个回答