python opencv 把一张黑图画任意一条直线,把图划分为两部分

import cv2
import numpy as np
import json

# 创建一张全黑的图像
img = np.zeros((500, 500), dtype=np.uint8)

# 定义直线的两个端点
point1 = (50, 50)
point2 = (450, 450)

# 画直线
cv2.line(img, point1, point2, (255, 255, 255), 1)

# 定义一个多边形,其边界由直线和图像的边缘组成
poly = np.array([[(0,0), point1, point2, (img.shape[1],0)]], dtype=np.int32)

# 填充多边形
cv2.fillPoly(img, poly, 255)

# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 将直线的信息保存为JSON格式
line_info = {'point1': point1, 'point2': point2}
with open('line.json', 'w') as f:
    json.dump(line_info, f)

如果你想要在一条直线上生成30个均匀分布的点,你可以使用numpy的linspace函数。以下是一个例子:

import numpy as np
import json

# 定义直线的两个端点
point1 = np.array([50, 50])
point2 = np.array([450, 450])

# 生成30个均匀分布的t值
t = np.linspace(0, 1, 30)

# 计算对应的x和y值
points = (1 - t)[:, None] * point1 + t[:, None] * point2

# 将点的信息保存为JSON格式
points_info = points.tolist()
with open('points.json', 'w') as f:
    json.dump(points_info, f)

你可能感兴趣的:(python基础,numpy,json,opencv)