成都创新互联网站制作重庆分公司

opencv光流法的应用:车流方向计算(一)-创新互联

在这里插入图片描述

成都创新互联公司于2013年开始,先为开平等服务建站,开平等地企业,进行企业商务咨询服务。为开平企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

在开源视频网站随便找一个测试视频,计算光流, 由于flow是二维的向量,可以通过mean操作得出当前光流的方向。还可以使用FFMPEG倒放一下视频,看看计算的光流方向是否相反ffmpeg -i Car.mp4 -vf reverse -af areverse car.mp4

代码 带有可视化的代码
# python 背景建模 opencv createBackgroundSubtractorMOG2 https://blog.csdn.net/ResumeProject/article/details/126195061
# opencv光流(密集光流+稀疏光流) cv.calcOpticalFlowPyrLK & cv2.calcOpticalFlowFarneback python与c++实现   https://blog.csdn.net/ResumeProject/article/details/128507520
# opencv c++ Mat CUDA的编译与使用 https://blog.csdn.net/ResumeProject/article/details/128540197




# 略修改与注释
import numpy as np
import cv2
cap = cv2.VideoCapture(cv2.samples.findFile("Car.mp4"))

cv2.namedWindow('original frame', 0)
cv2.resizeWindow('original frame', 600, 500)
cv2.namedWindow('optical vis', 0)
cv2.resizeWindow('optical vis', 600, 500)

ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
hsv = np.zeros_like(frame1)
hsv[..., 1] = 255
while(1):
    ret, frame2 = cap.read()
    if not ret:
        print('No frames grabbed!')
        break
    next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
    flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0)# 计算光流(只需要前后帧和一些参数即可)
    # 由于flow是二维的向量,可以通过mean操作得出,当前光流的方向
    print(np.mean(flow[:,:,1]))

    mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])# 转为极坐标
    # 用hsv矩阵 (480, 640, 3) 保存
    hsv[..., 0] = ang*180/np.pi/2
    hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX)



    bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)# 转为彩色图像
    cv2.imshow("original frame", frame2)
    cv2.imshow('optical vis', bgr)
    k = cv2.waitKey(30) & 0xff
    k = cv2.waitKey(30) & 0xff

    prvs = next
cv2.destroyAllWindows()
倒放效果
  • 拷贝需要的exe到视频路径下
    在这里插入图片描述
  • 倒放视频
    在这里插入图片描述
  • 效果展示
    在这里插入图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文题目:opencv光流法的应用:车流方向计算(一)-创新互联
本文地址:http://cxhlcq.com/article/hijjo.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部