« マウスに反応しないように | メイン | window10 スタートアップフォルダ »
2019年05月05日
opencvべんきょー
インスコ
yum install -y git gcc bzip2 bzip2-devel openssl openssl-devel readline readline-devel sqlite-devel cmake libjpeg-devel libtiff-devel libpng-devel jasper-devel mesa-libGL-devel libXt-devel libgphoto2-devel nasm libtheora-devel autoconf automake gcc-c++ libtool yasm openal-devel blas blas-devel atlas atlas-devel lapack lapack-devel numpy
↑未検証 いらないものも入ってるだろう。足りないものもあるかもしれん。
https://opencv.org/releases/
ver3系列とってきて解答
※ver4は情報少なくて後追いの私にはまだ無理
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j7
make install
学習データの作り方は他のサイト参照
opencv_createsamples -info info.dat -vec syomei.vec
opencv_traincascade -data shomei -vec syomei.vec -bg bad.txt -numPos 18 -numNeg 10 -featureType HAAR -mode ALL
numPos は正解データの9割の数に
featureType は HAAR LBP HOG などがあるようだ
HOG(Histogram of Oriented Gradients)特徴は、輝度の勾配方向の分布により特徴を捉えます。
Haar-Like特徴は、画像の明暗差により特徴を捉えます。
LBP(Local Binary Pattern)特徴は、輝度の分布(ヒストグラム)により特徴を捉えます。
顔検出スクリプト
http://blog.adjust-work.com/212/
パス通が通ってないなら
export PYTHONPATH="/usr/lib64/python2.7/site-packages/:$PYTHONPATH"
step1.py
# -*- coding: utf-8 -*-
import cv2
import sys
# 学習済みデータのパス
CASCADE_FILE_PATH = "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt_tree.xml"
# 顔識別する対象のファイルパス
base_image_path = sys.argv[1]
#画像の読み込み
image = cv2.imread(base_image_path)
# 分類器のセットアップ
cascade = cv2.CascadeClassifier(CASCADE_FILE_PATH)
# グレースケールに変換する
grayscale_image = cv2.cvtColor(image, cv2.cv.CV_BGR2GRAY)
# 顔識別結果の確認
print cascade.detectMultiScale(grayscale_image, scaleFactor=1.1, minNeighbors=1, minSize=(100, 100))
結果
$ python step1.py /vagrant/input/test.jpg
[[465 300 144 144]
[924 171 175 175]
[712 155 177 177]]
public void detectMultiScale(Mat image, MatOfRect objects, double scaleFactor, int minNeighbors, int flag, Size minSize, Size maxSize)
image:
CV_8U型の行列。ここに格納されていいる画像中から物体が検出されます。
objects:
矩形を要素とするベクトル。それぞれの矩形には、検出した物体を含みます。
scaleFactor:
画像スケールにおける縮小量を表します。
minNeighbors:
物体候補となる矩形は、最低でもこの数だけの近傍矩形を含む必要があります。
flags:
このパラメータは、新しいカスケードでは使用されません。古いカスケードに対しては、cvHaarDetectObjects関数の場合と同じ意味を持ちます。
minSize:
物体が取り得る最小サイズ。これよりも小さい物体は無視されます。
maxSize:
物体が取り得る最大サイズ。
投稿者 muuming : 2019年05月05日 07:18