ubuntu 21.10(arm64) + Raspberry Pi 4環境でmediapipeを動かす
December 19, 2021
Categories: ubuntu raspberrypi mediapipe
事前準備
- Ubuntu 21.10(arm64) + Raspberry Pi 4(model B)でmediapipe 0.8.9をビルド
- ubuntu 21.10(arm64) + Raspberry Pi 4環境におけるMIPI CSI-2接続カメラの設定
ライブラリのビルド&インストールとカメラ設定が完了しているのであれば、 後はプログラムを動かすだけ。
今回はCUI環境をターゲットにしているので、画像の表示はせず位置情報を標準出力に出すようにする。 カメラの設定はRaspberry Piカメラの性能に合わせて行う。
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
#!/usr/bin/python3
import cv2
import mediapipe as mp
import time
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils
count = 0
start = time.time()
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
cap.set(cv2.CAP_PROP_FPS, 60)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*"YUYV"))
print("{}x{}({}fps)".format(cap.get(cv2.CAP_PROP_FRAME_WIDTH),
cap.get(cv2.CAP_PROP_FRAME_HEIGHT),
cap.get(cv2.CAP_PROP_FPS)))
with mp_face_detection.FaceDetection(
model_selection=0, min_detection_confidence=0.5) as face_detection:
while cap.isOpened():
success, image = cap.read()
if not success:
print("Ignoring empty camera frame.")
continue
image.flags.writeable = False
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
results = face_detection.process(image)
if results.detections:
for detection in results.detections:
print(detection)
count += 1
if count % 60 == 0:
current = time.time()
print("rate: {}".format(float(count) / (current - start)))
cap.release()
うまく顔認識できれば、顔の位置データが標準出力に出力されてくる。 複数の顔を認識した場合は、認識した分だけ位置データが出力される。