vars() 函数返回对象object的属性和属性值的字典对象。
cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
参数解释:
InputArray src 输入图片
OutputArray dst 输出图片
Size 输出图片尺寸
fx, fy 沿x轴,y轴的缩放系数
interpolation 插入方式
interpolation 选项所用的插值方法:
最近邻插值 INTER_NEAREST
双线性插值(默认设置)INTER_LINEAR
使用像素区域关系进行重采样 INTER_AREA
4x4像素邻域的双三次插值 INTER_CUBIC
8x8像素邻域的Lanczos插值 INTER_LANCZOS4
#例子
[int(i) for i in range(10)]
>>>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
selectROI(windowName, img, showCrosshair=None, fromCenter=None):
. 参数windowName:选择的区域被显示在的窗口的名字
. 参数img:要在什么图片上选择ROI
. 参数showCrosshair:是否在矩形框里画十字线.
. 参数fromCenter:是否是从矩形框的中心开始画
import argparse
import cv2
import time
# 第一步进行参数设置
ap = argparse.ArgumentParser()
ap.add_argument('-v', '--video', type=str, default='videos/soccer_01.mp4',
help='path to input video file')
ap.add_argument('-t', '--tracker', type=str,
default='kcf', help='Opencv object tracker type')
args = vars(ap.parse_args())
# opencv已经实现的追踪算法
# 第二步:构造cv2已有追踪算法的列表
OPENCV_OBJECT_TRACKERS = {
"csrt": cv2.TrackerCSRT_create,
"kcf": cv2.TrackerKCF_create,
"boosting": cv2.TrackerBoosting_create,
"mil": cv2.TrackerMIL_create,
"tld": cv2.TrackerTLD_create,
"medianflow": cv2.TrackerMedianFlow_create,
"mosse": cv2.TrackerMOSSE_create
}
# 第三步:实例化追踪器
# 实例化Opencv's multi-object tracker
trackers = cv2.MultiTracker_create()
# 第四步:使用cv2.VideoCapture读取视频
vs = cv2.VideoCapture(args['video'])
while True:
# 第五步:读入第一张图片
frame = vs.read()
frame = frame[1]
# 到头了就结束
if frame is None:
break
# 第六步:使用cv2.resize对图像进行长宽的放缩操作
h, w = frame.shape[:2]
width = 600
r = width / float(w)
dim = (width, int(r * h))
frame = cv2.resize(frame, dim, cv2.INTER_AREA)
# 第七步:使用trackers.apply获得矩形框
(success, boxes) = trackers.update(frame)
# 第八步:循环多组矩形框,进行画图操作
for box in boxes:
(x, y, w, h) = [int(v) for v in box]
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 第九步:进行图像展示
cv2.imshow('Frame', frame)
# 第十步:判断按键,如果是s的话,进行画出新的box
key = cv2.waitKey(100) & 0xff
if key == ord('s'):
# 第十一步:选择一个区域,按s键,并将tracker追踪器,frame和box传入到trackers中
box = cv2.selectROI('Frame', frame, fromCenter=False,
showCrosshair=True)
tracker = OPENCV_OBJECT_TRACKERS[args['tracker']]()
trackers.add(tracker, frame, box)
elif key == 27:
break
vs.release()
cv2.destroyAllWindows()