# -*- coding:utf-8 -*-
'''
test.py
'''
import cv2
import random
import argparse
clicked = False
g_rectangle = [0, 0, 0, 0]
g_startPoint = [0, 0]
def onMouse(event, x, y, flags, param):
global clicked
global g_rectangle
global g_startPoint
if event == cv2.EVENT_MOUSEMOVE:
if clicked == True:
g_rectangle[0] = min(g_startPoint[0], x)
g_rectangle[1] = min(g_startPoint[1], y)
g_rectangle[2] = max(g_startPoint[0], x)
g_rectangle[3] = max(g_startPoint[1], y)
#左键按下事件
if event == cv2.EVENT_LBUTTONDOWN:
g_startPoint[0] = x
g_startPoint[1] = y
clicked = True
#左键弹起事件
if event == cv2.EVENT_LBUTTONUP:
clicked = False
def startRoi(args):
cameraCapture = cv2.VideoCapture(args.address)
cv2.namedWindow("MyWindow", 0)
cv2.resizeWindow("MyWindow", 1280, 720) # 设置长和宽
cv2.setMouseCallback("MyWindow", onMouse)
#按"Esc"退出
print("Press Esc if you want to exit ...")
while cv2.waitKey(30) != 27:
global frame
success, frame = cameraCapture.read()
#画矩形,边框随机颜色
cv2.rectangle(frame, (g_rectangle[0], g_rectangle[1]), (g_rectangle[2], g_rectangle[3]), (random.uniform(0, 255), random.uniform(0, 255), random.uniform(0, 255)), 3)
cv2.imshow("MyWindow", frame)
cv2.destroyWindow("MyWindow")
cameraCapture.release()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--address", default="",required=True, help="the rtsp address.")
args = parser.parse_args()
startRoi(args)
运行:
python ./test.py --address [rtsp地址]