Python: OpenCVを使用して、アメ横を行き交う人々のエッジを検出する

何の役に立つかわかりませんが、アメ横を行き交う人々のエッジを検出しました。

  1. import cv2
  2. import numpy as np
  3.  
  4. cap = cv2.VideoCapture('./img.MOV')
  5. fps = cap.get(cv2.CAP_PROP_FPS)
  6. width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
  7. height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
  8. fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
  9. out = cv2.VideoWriter('output.m4v', fourcc, fps, (height, width))
  10.  
  11. while True:
  12. ret, frame = cap.read()
  13. if ret:
  14. frame270 = np.rot90(frame, 3)
  15. dst = cv2.Canny(frame270, 50, 200)
  16. bgr = cv2.cvtColor(dst, cv2.COLOR_GRAY2BGR)
  17. out.write(bgr)
  18. else:
  19. break
  20.  
  21. cap.release()
  22. out.release()

「bgr = cv2.cvtColor(dst, cv2.COLOR_GRAY2BGR)」がポイントです。これをしないと正常に動画を出力できません。

結果は以下の通りです。

cv2.bitwise_not(dst)として、白黒反転させた方がいい感じです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です