前提・実現したいこと
Dlibを使って唇の座標検出を行っています。
30秒ほどのmp4動画から自動検出させています。
検出した4点の座標(上唇中央、上唇左端、上唇右端、下唇中央)を
上唇中央と下唇中央、上唇左端と上唇右端をつなぎ、
動画上に十字の線をプロットしたいです。
動画上に図をプロットすることが可能なのか、
可能であればその方法をご教授いただきたいです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージはありません
該当のソースコード
Python
1import matplotlib.pyplot as plt 2import math 3import numpy as np 4import sys 5import dlib 6import cv2 7import time 8import copy 9import csv 10 11fps=2.5 12size=(640,360) 13 14#動画 15try: 16 mp4file=sys.argv[1] 17 if mp4file.isdigit() == True: 18 mp4file = int(mp4file) 19 20 21except: 22 mp4file="test.mp4" 23 24 25#識別機 26try: 27 predictor_path=sys.argv[2] 28 29 30except: 31 predictor_path="predictor.dat" 32 33 34 35#指定すればレートのサイズを変更できる 36try: 37 resize_rate=sys.argv[3] 38 resize_rate=int(resize_rate) 39 40 41except: 42 resize_rate=1 43 44 45 46#顔にマスクをつけることができる 47try: 48 privacy_mask=sys.argv[4] 49 privacy_mask=int(privacy_mask) 50 51 52except: 53 privacy_mask=0 54 55 56 predictor=dlib.shape_predictor(predictor_path) 57 print(predictor) 58 59 video_input=cv2.VideoCapture(mp4file) 60 print(video_input) 61 62 63while(video_input.isOpened() == True): 64 ret,frame = video_input.read() 65 d=dlib.rectangle(0,0,640,360) 66 67 shape=predictor(frame,d) 68 69 70 71 print("{},{},{},{},{},{},{},{}".format(int(shape.part(0).x),int(shape.part(0).y),int(shape.part(1).x),int(shape.part(1).y),int(shape.part(2).x),int(shape.part(2).y),int(shape.part(3).x),int(shape.part(3).y))) 72 73 74 75 cv2.imshow('face landmark detector', frame) 76 77 c = cv2.waitKey(50) & 0xFF 78 79 if c==27: # ESC 80 break 81 82 83 list = [str(shape.part(0).x),str(shape.part(0).y),str(shape.part(1).x),str(shape.part(1).y),str(shape.part(2).x),str(shape.part(2).y),str(shape.part(3).x),str(shape.part(3).y)] 84 with open('some.csv','a') as f: 85 writer = csv.writer(f,lineterminator='\n') 86 writer.writerow(list) 87 plt.plot(list) 88 plt.show() 89 90video_input.release() 91cv2.destroyAllWindows() 92
試したこと
matplotlibに関するサイトを見て試したところ、
動画とは別に、plotしたウィンドウが出てきてしまった。
補足情報(FW/ツールのバージョンなど)
Ubuntu,Python,Dlib
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/26 11:08
2019/12/26 11:11
2019/12/26 11:33