python opencv 识别角度,如何使用python opencv测量同一图像中两条直线之间的角度?...

本文介绍如何使用Hough变换检测车道边界线,并在图像融合中找到不直线。作者面临的问题是如何在不知直线坐标的情况下计算两条线间的夹角。通过分享坐标计算代码和示例图片,读者将了解解决这个问题的方法和步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用hough变换检测出一条不直的车道边界线,并分别提取了该线。然后与另一个有直线的图像混合。现在我需要计算这两条直线之间的夹角,但是我不知道这两条直线的坐标。所以我试着用代码给出垂直线的坐标,但它不能明确地识别这些坐标。有没有办法测量这些线之间的夹角?这是我的坐标计算代码和两条直线的混合图像import cv2 as cv

import numpy as np

src = cv.imread("blended2.png", cv.IMREAD_COLOR)

if len(src.shape) != 2:

gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)

else:

gray = src

gray = cv.bitwise_not(gray)

bw = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY, 15, -2)

horizontal = np.copy(bw)

vertical = np.copy(bw)

cols = horizontal.shape[1]

horizontal_size = int(cols / 30)

horizontalStructure = cv.getStructuringElement(cv.MORPH_RECT, (horizontal_size, 1))

horizontal = cv.erode(horizontal, horizontalStructure)

horizontal = cv.dilate(horizontal, horizontalStructure)

cv.imwrite("img_horizontal8.png", horizontal)

h_transpose = np.transpose(np.nonzero(horizontal))

print("h_transpose")

print(h_transpose[:100])

rows = vertical.shape[0]

verticalsize = int(rows / 30)

verticalStructure = cv.getStructuringElement(cv.MORPH_RECT, (1, verticalsize))

vertical = cv.erode(vertical, verticalStructure)

vertical = cv.dilate(vertical, verticalStructure)

cv.imwrite("img_vertical8.png", vertical)

v_transpose = np.transpose(np.nonzero(vertical))

print("v_transpose")

print(v_transpose[:100])

img = src.copy()

# edges = cv.Canny(vertical,50,150,apertureSize = 3)

minLineLength = 100

maxLineGap = 200

lines = cv.HoughLinesP(vertical,1,np.pi/180,100,minLineLength,maxLineGap)

for line in lines:

for x1,y1,x2,y2 in line:

cv.line(img,(x1,y1),(x2,y2),(0,255,0),2)

cv.imshow('houghlinesP_vert', img)

cv.waitKey(0)

Fsumj.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值