Python实现跟踪、光流、前景检测


【内附详细说明文档】 本项目是使用python,利用opencv库实现的共8个视频处理算法,包括:目标跟踪算法Meanshift, Camshift;稀疏光流以及稠密光流的计算OpticalFlow, OpticalFlow_full,前景检测算法MOG, CNT, GMG, GSOC,LSBP 。 代码简洁易读,可做为python课设参考资料,或者供图像处理爱好者学习。
资源截图
代码片段和文件信息
import cv2
import argparse
from Tools import(
    onMouse

from Modules import(
    Meanshift
    OpticalFlow
    OpticalFlow_Full
    BackgroundSubtractor


# 传入参数
parser = argparse.ArgumentParser()
parser.add_argument(‘--module‘ type=int default = 6
            help =  “ 0: Meanshift       1: Camshift    2: OpticalFlow 
                      3: OpticalFlow_full         4: BackgroundSubtractorMOG 
                      5: BackgroundSubtractorCNT       6: BackgroundSubtractorGMG 
                      7: BackgroundSubtractorGSOC   8: BackgroundSubtractorLSBP“ )

parser.add_argument(‘--use_Video‘ default=True action=‘store_true‘)
parser.add_argument(‘--Video_path‘ type=str default = “D:\Downloads\BackgroundSplit-OpenCV-master\BackgroundSplit-OpenCV-master\Video\Camera Road 01.avi“)
args = parser.parse_args()

if __name__==‘__main__‘:
    if not args.use_Video:
        cap = cv2.VideoCapture(0)
    else:
        cap = cv2.VideoCapture(args.Video_path)

    if not cap.isOpened():
        print(“ERROR: Did‘t find this video!“)
        exit(1)

    if args.module == 0 or args.module == 1:
        # 物体跟踪需要进行窗口鼠标监视
        cv2.namedWindow(‘imshow‘)
        cv2.setMouseCallback(‘imshow‘ onMouse)
        if args.module == 1:
            is_camshift = True
        else:
            is_camshift = False
        trackModule = Meanshift(cap is_camshift)
        trackModule.run()

    elif args.module == 2:
        # 特征点参数
        feature_params = dict(maxCorners=100
                        qualityLevel=0.1
                        minDistance=5
                        blockSize=7)
        # 光流参数
        lk_params = dict(winSize=(11 11)
                     maxLevel=2
                     criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT 10 0.03))
        of = OpticalFlow(cap feature_params lk_params)
        of.run()

    elif args.module == 3:
        # 稠密光流参数
        lk_params = dict(pyr_scale = 0.3
                    levels = 4 winsize = 6
                    iterations = 3 poly_n = 5
                    poly_sigma = 1.2 flags = 0)
        of_full = OpticalFlow_Full(cap lk_params)
        of_full.run()

    elif 4 <= args.module <= 8:
        # 前景检测算法
        mog = BackgroundSubtractor(cap args.module)
        mog.run()

    else:
        print(“module index error!“)
        exit(1)




 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2520  2018-12-13 23:58  projectmain.py

     文件       6680  2018-12-13 23:38  projectModules.py

     文件    1419091  2018-12-14 00:02  projectpythonx项目说明文档.docx

     文件       2138  2018-12-13 23:09  projectTools.py

     目录          0  2019-02-28 15:34  project

----------- ---------  ---------- -----  ----

              1430429                    5


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)