基本绘图 — OpenCV& Python

import numpy as np
import cv2

canvas = np.zeros((400, 600, 3), dtype=np.uint8) + 255
cv2.line(canvas, (300, 0), (300, 399), (0, 0, 0), 2)
cv2.line(canvas, (300, 149), (599, 149), (0, 0, 0), 2)
cv2.circle(canvas, (200, 300), 75, (0, 0, 255), 5)
cv2.rectangle(canvas, (20, 240), (100, 360), (255, 0, 0), thickness=3)

triangles = np.array([
    [(200, 240), (145, 333), (255, 333)],
    [(60, 180), (20, 237), (100, 237)]
])
cv2.fillPoly(canvas, triangles, (0, 255, 0))

phi = 4 * np.pi / 5
rotations = [
    [[np.cos(i * phi), -np.sin(i * phi)] , [i * np.sin(phi), np.cos(i * phi)]] for i in range(1,5)
]
pentagram = np.array([[[[0, -1]] + [np.dot(m, (0, -1)) for m in rotations]]], dtype=np.float)
pentagram = np.round(pentagram * 80 + np.array([160, 120])).astype((np.int))

cv2.polylines(canvas, pentagram, True, (0, 255, 255), 9)

for x in range(302, 600):
    color_pixel = np.array([[[round(180*float(x-302) / 298), 255, 255]]], dtype=np.uint8)
    line_color = [int(c) for c in cv2.cvtColor(color_pixel, cv2.COLOR_HSV2BGR)[0][0]]
    cv2.line(canvas, (x, 0), (x, 147), line_color)

np.random.seed(42)
n_pts = 30
pts_x = np.random.randint(310, 590, n_pts)
pts_y = np.random.randint(160, 390, n_pts)
pts = zip(pts_x, pts_y)

for pt in pts:
    pt_color = [int(c) for c in np.random.randint(0, 255, 3)]
    cv2.circle(canvas, pt, 3, pt_color, 5)
cv2.putText(canvas,
            'Python-OpenCV Drawing Example',
            (5, 15),
            cv2.FONT_HERSHEY_SIMPLEX,
            0.5,
            (0, 0, 0),
            1)
cv2.imshow('Example of basic drawing functions', canvas)
cv2.waitKey()
基本绘图 — OpenCV& Python_第1张图片
Example of basic drawing fucntions.jpg

你可能感兴趣的:(基本绘图 — OpenCV& Python)