0
PythonでOpenCVを使用してmp4ビデオファイルからオブジェクトを検出しようとしています。私はビデオ内のオブジェクトを検出することができます。PythonでOpenCVを使用してmp4ビデオから検出されたオブジェクトの位置のタイムスタンプを検出します
ビデオファイルでオブジェクトが検出された位置のタイムスタンプを取得し、テキストファイルに書きたいと思います。私はこのようなプロパティの識別子を使用して)VideoCaptureの方法は、(getを使用してみました
import cv2
my_cascade = cv2.CascadeClassifier('toy.xml')
def detect(gray, frame):
toys= my_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in toys:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
#Logic to write time stamp to file goes here
return frame
video_capture = cv2.VideoCapture('home.mp4')
cv2.startWindowThread()
while True:
_, frame = video_capture.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
canvas = detect(gray, frame)
cv2.imshow('Video', canvas)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video_capture.release()
cv2.destroyAllWindows()
:ここ
は、これまでの私のコードです
video_capture.get(CV_CAP_PROP_POS_MSEC)
が、エラー名 'CV_CAP_PROP_POS_MSEC' を取得します定義されていません
この方法またはprがないようです実装されたオペレーター識別子。
私が欲しいものを実装するためにcv2に他の方法がありますか?
助けてください。
これは、それがビデオで検出されたオブジェクトの毎回の位置のタイムスタンプを印刷する
を解決しました。 はここで働いコードです:
import cv2
my_cascade = cv2.CascadeClassifier('toy.xml')
def detect(gray, frame):
toys= my_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in toys:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
print("Toy Detected at: "+str(video_capture.get(cv2.CAP_PROP_POS_MSEC)))
return frame
video_capture = cv2.VideoCapture('home.mp4')
cv2.startWindowThread()
while True:
_, frame = video_capture.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
canvas = detect(gray, frame)
cv2.imshow('Video', canvas)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video_capture.release()
cv2.destroyAllWindows()
はい、私はそれを変更しましたが、まだエラーが発生します。更新された質問。 – Ram
これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューから](/レビュー/低品質の投稿/ 18175262) – WOUNDEDStevenJones
ありがとうございます@Chris Hill。 print(print_capture.get(cv2.CAP_PROP_POS_MSEC))の回りに中カッコを入れる必要がありました。これは動作します! – Ram