質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
dlib

dlibは、機械学習のC++の画像処理ライブラリの一つ。性能の高い顔の器官検出が簡単にでき、Pythonバインドもあります。オープンソースで無料で使用でき、機械学習以外の様々な機能も搭載されています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4182閲覧

dlibの顔向き推定について

masayuki.west

総合スコア13

dlib

dlibは、機械学習のC++の画像処理ライブラリの一つ。性能の高い顔の器官検出が簡単にでき、Pythonバインドもあります。オープンソースで無料で使用でき、機械学習以外の様々な機能も搭載されています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/09/21 13:28

顔向き推定

dlibを用いて顔を認識することは出来るのですが、
そこから顔向き(Pitch,Yaw,Roll)に変換することができないです。

githubから顔向きについてのプログラムを実践したのですが、数値があてにならない状態です。
下記のプログラムのどこがまずいのでしょうか?
どなた教えていただけないでしょうか?

該当のソースコード

Python

1K = [6.5308391993466671e+002, 0.0, 3.1950000000000000e+002, 2 0.0, 6.5308391993466671e+002, 2.3950000000000000e+002, 3 0.0, 0.0, 1.0] 4D = [7.0834633684407095e-002, 6.9140193737175351e-002, 0.0, 0.0, -1.3073460323689292e+000] 5 6 7cam_matrix = np.array(K).reshape(3, 3).astype(np.float32) 8dist_coeffs = np.array(D).reshape(5, 1).astype(np.float32) 9 10object_pts = np.float32([[6.825897, 6.760612, 4.402142], 11 [1.330353, 7.122144, 6.903745], 12 [-1.330353, 7.122144, 6.903745], 13 [-6.825897, 6.760612, 4.402142], 14 [5.311432, 5.485328, 3.987654], 15 [1.789930, 5.393625, 4.413414], 16 [-1.789930, 5.393625, 4.413414], 17 [-5.311432, 5.485328, 3.987654], 18 [2.005628, 1.409845, 6.165652], 19 [-2.005628, 1.409845, 6.165652], 20 [2.774015, -2.080775, 5.048531], 21 [-2.774015, -2.080775, 5.048531], 22 [0.000000, -3.116408, 6.097667], 23 [0.000000, -7.415691, 4.070434]]) 24 25reprojectsrc = np.float32([[10.0, 10.0, 10.0], 26 [10.0, 10.0, -10.0], 27 [10.0, -10.0, -10.0], 28 [10.0, -10.0, 10.0], 29 [-10.0, 10.0, 10.0], 30 [-10.0, 10.0, -10.0], 31 [-10.0, -10.0, -10.0], 32 [-10.0, -10.0, 10.0]]) 33 34line_pairs = [[0, 1], [1, 2], [2, 3], [3, 0], 35 [4, 5], [5, 6], [6, 7], [7, 4], 36 [0, 4], [1, 5], [2, 6], [3, 7]] 37 38 39def get_head_pose(shape): 40 # 2D image points. If you change the image, you need to change vector 41 42 43 image_pts = np.float32([shape[17], shape[21], shape[22], shape[26], shape[36], 44 shape[39], shape[42], shape[45], shape[31], shape[35], 45 shape[48], shape[54], shape[57], shape[8]]) 46 47 _, rotation_vec, translation_vec = cv2.solvePnP(object_pts, image_pts, cam_matrix, dist_coeffs) 48 49 reprojectdst, _ = cv2.projectPoints(reprojectsrc, rotation_vec, translation_vec, cam_matrix, 50 dist_coeffs) 51 52 reprojectdst = tuple(map(tuple, reprojectdst.reshape(8, 2))) 53 54 # calc euler angle 55 rotation_mat, _ = cv2.Rodrigues(rotation_vec) 56 pose_mat = cv2.hconcat((rotation_mat, translation_vec)) 57 _, _, _, _, _, _, euler_angle = cv2.decomposeProjectionMatrix(pose_mat) 58 59 return reprojectdst, euler_angle 60 61

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下をまず確認してみてください。

  • カメラ行列 K 及び歪み係数 d は、カメラキャリブレーションを行い、精度よく求められていることは確認できていますか?

  • cv2.solvePnP() に渡している画像座標上の点 image_pts と世界座標上の点 object_pts の対応関係はあっていますか?

投稿2018/09/21 14:27

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masayuki.west

2018/09/22 09:03

回答ありがとうございます。 歪み係数dとカメラキャリブレーションの調整方法は理解出来るのですが、 世界座標上の点はどのように調整したらよろしいでしょうか? 初めてOpenCVを触るので申し訳ございません。
tiitoi

2018/09/22 09:11

状況がよくわからないのですが、画像座標上の点に対応する世界座標上の点 object_pts は質問者さんが設定したのではないですか? コードの内容は、画像座標上の点とそれが対応する世界座標上の点の対応関係を用意して、solvePnP() でその対応関係を満たすような変換行列を求めてます。
masayuki.west

2018/09/22 12:55

すみません、ようやく理解することができました。 誠にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問