OpenCV讲堂 利用timeit 计算帧率 from timeit import time

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

cap = cv2.VideoCapture("DJI_0008.MOV")

#cap = cv2.VideoCapture(0)

  

# Define the codec and create VideoWriter object

#fourcc = cv2.cv.FOURCC(*'XVID')

fourcc = cv2.VideoWriter_fourcc(*'XVID')

out = cv2.VideoWriter('output1.avi', fourcc, 20, (1920, 1080))

  

num=0

  

while cap.isOpened():

  # get a frame

  rval, frame = cap.read()

  # save a frame

  if rval==True:

   # frame = cv2.flip(frame,0)

    # Start time

    start = time.time()

    rclasses, rscores, rbboxes=process_image(frame) #换成自己调用的函数

    # End time

    end = time.time()

    # Time elapsed

    seconds = end - start

    print( "Time taken : {0} seconds".format(seconds))

    # Calculate frames per second

    fps = 1 / seconds;

    print( "Estimated frames per second : {0}".format(fps));

    #bboxes_draw_on_img(frame,rclasses,rscores,rbboxes)

    #print(rclasses)

    out.write(frame)

    num=num+1

    print(num)

    #fps = cap.get(cv2.CAP_PROP_FPS)

    #print("Frames per second using video.get(cv2.CAP_PROP_FPS) : {0}".format(fps))

  else:

    break

  # show a frame

  cv2.imshow("capture", frame)

  if cv2.waitKey(1) & 0xFF == ord('q'):

    break

cap.release()

out.release()

cv2.destroyAllWindows()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、问题的提出 做运动分析检测,需要有一定的素材视频,但是素材视频的编码OpenCV不能识别,无法对指定的视频做实验,怎么素材视频通用化使得OpenCV能正常识别? 二、解决的方法 (1)素材视频总是有配套的播放器来播放,那么使用这个播放器查看总帧数,和总播放时长,计算帧率为25,表示一秒钟播放25帧图像。 (2)用这个配套的播放器对素材视频进行逐帧步进抓图,这个操作很辛苦,一秒钟25帧,那么抓25帧是一秒,素材视频30秒就要抓750帧,很辛苦。 (3)帧抓完后,发现一帧图1.4M,以位图格式保存,那么30秒就要达到1G的存储空间,怎么办?没办法,不知道怎么去获取解码器和安装解码器,就只能这么忍受。察看到逐帧步进抓图的存储是按序列编排文件名,那么要修改好使得每个文件名都是以规则“文件名”+“帧序列”的形式存在。 (4)编写根据帧序列图生成帧率25的视频的代码 三、问题的解决: (1)解决一个字符串合并的问题: 由于字符串参数有个赋值格式化设置函数叫做Format,要实现多类型参数的字符串化,可以参照如下示例: float f = 0.0; char sz[128]; int n = 1; CString str; str.Format("%f%s%d",f,sz,n); (2)采用MJPG的编码格式依次将这些图像序列写入到视频中保存起来,采用MJPG的编码格式是因为操作系统自带了Media player播放器,这种编码格式属于无压缩的,Media player可以识别播放。 (3)实现方式是使用MFC对话框窗体的按钮事件来进行视频的逐帧写图,由于帧数多,那么在写入器循环做写这个动作的时候,整个程序是假死在那里直到写入器的写入操作终结。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值