前言
案例 Fu Xianjun. All Rights Reserved.
随着当今世界的发展,计算机视觉技术的应用越来越广泛。伴随着硬件设备的不断升级,构造复杂的计算机视觉应用变得越来越容易了。OpenCV像是一个黑盒,让我们专注于视觉应用的开发,而不必过多的关注基础图象处理的具体细节。
提示:以下是本篇文章正文内容,下面案例可供参考
一、目标检测是什么?
计算机视觉中的目标检测是一个涉及广泛而又发展迅速的领域,所以opencv中某个特定技术很容易发展过时,之前的人脸检测器(Haar classifier)就是这样,但人脸检测又有巨大的需求,因此需要一个不错的基线技术供使用,而且人脸检测是建立在最经常使用的分类器boosting上,因此更加通用。事实上,一些公司使用了opencv中的“人脸”检测器来检测“基本刚性的”物体(脸,汽车,自行车,人体)。通过成千上万的物体的各个角度的训练图像,训练出新的分类器,这个技术被用来设计目前最优的检测算法。因此,对于此类识别任务,Haar分类器是一个有用的工具。
二、使用步骤
原图展示:
1.引入库
import cv2
import numpy as np
2.读入数据
OPEN_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
}
3.操作步骤
#实例化OpencCV的tracker
trackers = cv2.MultiTracker_create()
vs = cv2.VideoCapture("los_angeles.mp4")
while True:
#取当前帧
frame = vs.read()
# (true, data)
frame = frame[1]
# 到头了就结束
if frame is None:
break
# resize每一帧
(h,w) = frame.shape[:2]
width=600
r = width/float(w)
dim = (width, int(h*r))
frame = cv2.resize(frame, dim, interpolation=cv2.INTER_AREA)
#追踪结果
(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)
key = cv2.waitKey(100) & 0xFF
if key ==ord("s"):
box = cv2.selectROI("Frame", frame, fromCenter=False,
showCrosshair=True)
#创建一个新的追踪器
tracker = OPEN_OBJECT_TRACKERS["csrt"]()
trackers.add(tracker, frame, box)
#退出
elif key == 27:
break
4.显示结果
#关闭视频
vs.release()
cv2.destroyAllWindows()
5.结果展示
三、总结
这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了OpenCV 几何变换的使用,而数字图像处理提供了大量能使我们快速便捷地处理数据的函数和方法。
版权声明:本文为CSDN博主「清风袭面」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_46338507/article/details/118108528
暂无评论