帮我用Python写一个在图片上画一条线,然后计算某个目标框的中心点是否与该条线相交的demo
时间: 2024-04-10 13:30:41 浏览: 51
当然可以!以下是一个示例代码,使用Python的OpenCV库来在图片上画一条线并计算目标框中心点是否与该线相交:
```python
import cv2
# 读取图片
image = cv2.imread('image.jpg')
# 画一条线
start_point = (100, 100) # 线的起点坐标
end_point = (200, 200) # 线的终点坐标
color = (0, 255, 0) # 线的颜色,这里使用绿色
thickness = 2 # 线的粗细
cv2.line(image, start_point, end_point, color, thickness)
# 计算目标框中心点是否与线相交
target_box = [(150, 150), (250, 250)] # 目标框的左上角和右下角坐标
target_center = ((target_box[0][0] + target_box[1][0]) // 2, (target_box[0][1] + target_box[1][1]) // 2) # 计算目标框中心点坐标
intersection = cv2.pointPolygonTest([start_point, end_point], target_center, False) >= 0 # 判断是否相交
# 显示结果
cv2.rectangle(image, target_box[0], target_box[1], (255, 0, 0), thickness=2) # 在图片上画出目标框
cv2.circle(image, target_center, 3, (255, 0, 0), thickness=2) # 在图片上画出目标框中心点
cv2.putText(image, f'Intersection: {intersection}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) # 在图片上显示是否相交的文字
# 显示图片
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请确保将代码中的 `image.jpg` 替换为你自己的图片路径,然后运行代码即可看到结果。如果目标框中心点与线相交,结果图片中会显示文字 `Intersection: True`,否则显示 `Intersection: False`。
阅读全文