BiTT開発
BiTT開発
2017.05.24

【ディレクターでもプログラミングを学ぼう】Pythonで顔画像の特徴点検出をしてみよう

Jack

こんにちは。ディレクターのJackです。

本職はディレクターです。ただ、とてもプログラミングが好きで、最近は趣味でゴリゴリやっております。
広く浅く、色々な言語を触っています。JavaScriptやPHP、PythonやRubyなどですかね。
自社受託開発問わず、実装するロジックのアルゴリズムを理解したり、選定技術の良し悪しを判断する事は、とても重要です。

目次

  1. ディレクターがプログラミングを学ぶメリット
    • エンジニアと共通言語で話すことができる
    • 開発工数の算出精度が向上する
  2. Pythonで顔画像の特徴点検出をする
    • 利用するテスト画像データ
    • ソースコードを確認してみる
    • 結果を確認してみる
  3. 終わりに

ディレクターがプログラミングを学ぶメリット

ディレクターがプログラミングを学ぶメリットを自分なりに整理してみます。
今までの経験を踏まえ、今回は2点ご紹介させていただきます。

エンジニアと共通言語で話すことができる

打ち合わせやブレストなどで、エンジニアが何言っているか分からない…という事は多々あるかと思います。
もちろん全てを理解する必要はありませんが、「なんとなくこういう事を言っているんだな…」レベルでも理解する事は、とても重要です。
「そんな事言ったって、分からないもんは分からん!」と諦めているあなた! エンジニアと共通言語で話すことができれば、ディレクションの幅が広がりますよ!

開発工数の算出精度が向上する

プログラミングを学び、技術用語などを理解すると、開発工数を根拠を持って算出する事ができます。
もちろん、担当のエンジニアと話しあって工数を算出する事は非常に重要ですが、全てをエンジニアに任せっきりではいけません。
プロジェクトを監督するディレクターは、クライアントへ根拠を持って工数を提示する事が重要になります。

Pythonで顔画像の特徴点検出をする

今回は、Pythonで顔画像の特徴点検出を行ってみたいと思います。

利用するテスト画像データ

今回利用する検出対象のテスト画像データを用意します。

取締役づやさん

zuya

新卒ライダーくん

rider

バックエンドエンジニア正訓(まさくに)さん

masakuni

ソースコードを確認してみる

# -*- coding: utf-8 -*-

import cv2
import numpy as np

def main():
    # step1: テスト画像データを読み込む
    img = cv2.imread("./xxxxx.jpg")
    keypoint = img

    # step2: 特徴点検出を行う
    gftt = cv2.FastFeatureDetector_create()
    keypoints = gftt.detect(img)

    # step3: 結果を表示する
    keypoint = cv2.drawKeypoints(img, keypoints, keypoint)
    cv2.imshow("keypoints", keypoint)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()

それぞれ、step1〜step3の処理を実行します。

  • step1では、テスト画像データを読み込みます
  • step2で特徴点検出処理を実行します。今回は、OpenCVのGFTTアルゴリズムを利用しています
  • step3では、特徴点が検出された画像情報を表示させる処理となっています

結果を確認してみる

取締役づやさんの検出結果

zuya-result

新卒ライダーくんの検出結果

rider-result

バックエンドエンジニア正訓(まさくに)さんの検出結果

masakuni-result

弊社取締役のづやさんは、特徴点検出がなかなかうまくいっておりません。顔に特徴がないという事でしょうか…。
新卒のライダーくんとバックエンドエンジニアの正訓さんは、良い感じで特徴点検出をする事ができました。

終わりに

いかがでしたか? 今回は、Pythonで顔画像の特徴点検出を行ってみました。

ひさしぶりのPythonでしたが、楽しいですね! 次回は、PHPで遊んでみる予定です!
それでは、次回をお楽しみに!