opencv python 假设有x1, y1, x2, y2 = v_line[0]、x3, y3, x4, y4 = h_line[0] 如何判断两直线之间夹角在85度到90度之间
时间: 2024-05-13 08:17:54 浏览: 116
角度计算.rar_acresygs_brickbad_lyinghi1_priceyfo_根据两点间的经纬度计算夹角
可以通过向量的点乘运算来判断两条直线之间的夹角,具体步骤如下:
1. 计算两条线段的向量:
```
vec1 = [x2 - x1, y2 - y1]
vec2 = [x4 - x3, y4 - y3]
```
2. 计算两个向量的长度:
```
len1 = math.sqrt(vec1[0]**2 + vec1[1]**2)
len2 = math.sqrt(vec2[0]**2 + vec2[1]**2)
```
3. 计算两个向量的点积:
```
dot_product = vec1[0] * vec2[0] + vec1[1] * vec2[1]
```
4. 计算两个向量的夹角(弧度):
```
cos_theta = dot_product / (len1 * len2)
theta = math.acos(cos_theta)
```
5. 判断夹角是否在85度到90度之间:
```
if 85 < math.degrees(theta) < 90:
print("夹角在85度到90度之间")
else:
print("夹角不在85度到90度之间")
```
完整代码示例:
```python
import math
# 假设有两条线段 v_line 和 h_line
v_line = [100, 100, 100, 200]
h_line = [50, 150, 150, 150]
# 计算两条线段的向量
vec1 = [v_line[2] - v_line[0], v_line[3] - v_line[1]]
vec2 = [h_line[2] - h_line[0], h_line[3] - h_line[1]]
# 计算两个向量的长度
len1 = math.sqrt(vec1[0]**2 + vec1[1]**2)
len2 = math.sqrt(vec2[0]**2 + vec2[1]**2)
# 计算两个向量的点积
dot_product = vec1[0] * vec2[0] + vec1[1] * vec2[1]
# 计算两个向量的夹角(弧度)
cos_theta = dot_product / (len1 * len2)
theta = math.acos(cos_theta)
# 判断夹角是否在85度到90度之间
if 85 < math.degrees(theta) < 90:
print("夹角在85度到90度之间")
else:
print("夹角不在85度到90度之间")
```
阅读全文