我正在尝试使用OpenCV检测视频中的(摄影)闪光灯。
我检测到闪光灯发生的帧(平均亮度高于阈值),现在我想获得帧数。
我尝试使用CV_CAP_PROP_POS_FRAMES from the OpenCV docs但没有成功。
import numpy as np
import cv2
cap = cv2.VideoCapture('file.MOV')
while(cap.isOpened()):
ret, frame = cap.read()
BW = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv)
average = np.average(v) #computes the average brightness
if average > 200: #flash is detected
cv2.imshow('frame',BW)
frameid = cap.get(CV_CAP_PROP_POS_FRAMES) # <--- this line does not work
print(frameid)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
任何提示?
答案 0 :(得分:1)
你可以:
cap.get(cv2.CAP_PROP_POS_FRAMES)
(另请参阅here)或答案 1 :(得分:0)
来自opencv-doc:
查询VideoCapture类使用的后端不支持的属性时,返回值0
可能不支持。在这种情况下,你必须自己计算帧数。