1.背景
阅读官方文档,学习openCV的过程中,有这样一道题,比较简单,记录一下。
练习题
- 在最后一个示例中,我们绘制了填充矩形。您修改代码以绘制一个未填充的矩形。
ps:手册中,官方提供了一个绘制填充矩形的demo,是练习题的背景。
关于cv.rectangle 如下
2. 代码部分
import numpy as np
import cv2 as cv
drawing = False # 如果按下鼠标,则为真
mode = True # 如果为真,绘制矩形。按 c 键可以切换到曲线
ix, iy = -1, -1
# 鼠标回调函数
def draw_circle(event, x, y, flags, param):
global ix, iy, drawing, mode
if event == cv.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y
elif event == cv.EVENT_LBUTTONUP:
drawing = False
if mode == True:
cv.rectangle(img, (ix, iy), (x, y), (255, 0, 0), 4, cv.LINE_AA, 0)
else:
cv.circle(img, (x, y), 5, (0, 0, 255), -1)
img = np.zeros((512, 512, 3), np.uint8)
cv.namedWindow('image')
cv.setMouseCallback('image', draw_circle)
while (1):
cv.imshow('image', img)
in_key = cv.waitKey(1)
if in_key == ord('q'):
break
elif in_key == ord('c'):
mode = not mode
cv.destroyAllWindows()
3. 演示效果
简单粗暴的做法,如果需要绘制出轨迹,用copyto那个思路应该能做,有兴趣的朋友可以做下。
如果您有更简洁的办法,欢迎您留言指导!