社区
机器视觉
帖子详情
opencv采用霍夫直线检测后怎么获得直线上所有像素点坐标?
Spatacus
2017-03-08 03:51:30
图像经过霍夫直线检测出直线后,想要获得检测出直线上所有像素点的坐标值,除了遍历以外还有其他方法么?
...全文
2986
6
打赏
收藏
opencv采用霍夫直线检测后怎么获得直线上所有像素点坐标?
图像经过霍夫直线检测出直线后,想要获得检测出直线上所有像素点的坐标值,除了遍历以外还有其他方法么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
happyGJC
2019-07-03
打赏
举报
回复
我用的matlab 直线检测后 图像二值化处理 用bwboundaries函数
weixin_43699255
2019-05-28
打赏
举报
回复
同学你有遍历出来吗,?霍夫直线检测后直线上的像素点、?我们讨论一下可以,qq2807839521
Mr_Zhouzl
2017-03-17
打赏
举报
回复
只能缩小遍历范围,其它的好像没有
shinka
2017-03-10
打赏
举报
回复
根据霍夫算法逻辑,回溯拟合直线的点好像没有直接的办法。至于遍历,参考另一个函数cvHoughLines2或许有帮助。
NoEdUl
2017-03-09
打赏
举报
回复
不想遍历存所有点的话,那就留着直线信息,要用到的时候临时算吧。
shiter
2017-03-09
打赏
举报
回复
传说中的懒加载?哈哈,乱说的。。。
霍夫
变换的
直线
检测
带有windows界面的
霍夫
变换的
直线
检测
OpenCV
霍夫
圆检测
OpenCV
霍夫
圆检测,检测出图像中的圆,输出圆的半径和圆心信息,并根据半径的大小进行筛选(VS2010+
OpenCv
2.4.7)
C# Hough
直线
算法
基于C#的运用
霍夫
(Hough)变换对图像中的
直线
进行检测的算法
opencv
之
霍夫
变换-
直线
实例下载
详细讲解了将平面
坐标
转换到极
坐标
,在极
坐标
系寻找
直线
,以及相关API讲解和使用。 此工程是Demo,使用VS2012开发,欢迎下载学习。
第十一节 图像处理之
霍夫
检测
直线
import cv2 as cv import numpy as np #
直线
检测
#使用
霍夫
直线
变换做
直线
检测
,前提条件:边缘检测已经完成 #标准
霍夫
线变换 def line_detection(image): gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY) edges = cv.Canny(gray, 50, 150) #apertureSize参数默认其实就是3 cv.imshow("edges", edges) #cv.HoughLines参数设置:参数1,灰度图像;参数二,以像素为单位的距离精度(一般都是1,进度高,但是速度会慢一点) #参数三,以弧度为单位的角度精度(一般是1rad);参数四,阈值,大于阈值threshold的线段才可以被检测通过并返回到结果中 #该函数返回值为rho与theta lines = cv.HoughLines(edges, 1, np.pi/180, 200) for line in lines: rho, theta = line[0] #line[0]存储的是点到
直线
的极径和极角,其中极角是弧度表示的。 a = np.cos(theta) #theta是弧度 b = np.sin(theta) x0 = a * rho #代表x = r * cos(theta) y0 = b * rho #代表y = r * sin(theta) x1 = int(x0 + 1000 * (-b)) #计算
直线
起点横
坐标
y1 = int(y0 + 1000 * a) #计算起始起点纵
坐标
x2 = int(x0 - 1000 * (-b)) #计算
直线
终点横
坐标
y2 = int(y0 - 1000 * a) #计算
直线
终点纵
坐标
注:这里的数值1000给出了画出的线段长度范围大小,数值越小,画出的线段越短,数值越大,画出的线段越长 cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2) #点的
坐标
必须是元组,不能是列表。 cv.imshow("image-lines", image) #统计概率
霍夫
线变换 def line_detect_possible_demo(image): gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY) edges = cv.Canny(gray, 50, 150, apertureSize=3) # apertureSize参数默认其实就是3 lines = cv.HoughLinesP(edges, 1, np.pi / 180, 60, minLineLength=60, maxLineGap=5) for line in lines: x1, y1, x2, y2 = line[0] cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2) cv.imshow("line_detect_possible_demo",image) src = cv.imread("E:/
opencv
/picture/track.jpg") print(src.shape) cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE) cv.imshow('input_image', src) line_detection(src) src = cv.imread("E:/
opencv
/picture/track.jpg") #调用上一个函数后,会把传入的src数组改变,所以调用下一个函数时,要重新读取图片 line_detect_possible_demo(src) cv.waitKey(0) cv.destroyAllWindows()
霍夫
检测
直线
原理: 关于hough变换,核心以及难点就是关于就是有原始空间到参数空间的变换上。以
直线
检测
为例,假设有一条
直线
L,原点到该
直线
的垂直距离为p,垂线与x轴夹角为θθ,那么这条
直线
是唯一的,且
直线
的方程为 ρ=xcosθ+ysinθρ=xcosθ+ysinθ, 如下图所
机器视觉
4,499
社区成员
15,349
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章