Log in to edit a copy.
Download.
Other published documents...
test_opencv
4555 days ago by takepwave
import cv, cv2 import numpy as np # cvに未定義の値を設定 CV_LOAD_IMAGE_ANYDEPTH = 2 CV_LOAD_IMAGE_ANYCOLOR = 4
# cvのIplImageからRGBのnumpy arrayに変換する def ipl2np(ipl): mat = cv.GetMat(ipl) bgrimage = np.asarray(mat) rgbimage = cv2.cvtColor(bgrimage, cv2.COLOR_BGR2RGB) return rgbimage/255.
# 検出対象の画像ファイルパス tarFilePath = DATA + 'lena.jpg' # 顔検出対象の画像データの読み込み tarImg = cv.LoadImage(tarFilePath, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR) # カスケードのファイルパス cascadeFilePath = DATA + 'haarcascade_frontalface_alt.xml' # カスケード cvHCC = cv.Load(cascadeFilePath) # 検出に必要なメモリストレージを用意する cvMStr = cv.CreateMemStorage(0) # 高速に検出できるように引数を調整 faces = cv.HaarDetectObjects(tarImg, cvHCC, cvMStr, 1.2, 2, cv.CV_HAAR_DO_CANNY_PRUNING) # 戻り値がOpenCVと違うみたいなので、プリントしてみる faces
[((217, 203, 169, 169), 24)]
[((217, 203, 169, 169), 24)]
# 検出情報から顔の位置情報を取得し、矩形を描画する for (x, y, width, height), dummy in faces: cv.Rectangle(tarImg, (x, y), (x + width, y + height), cv.CV_RGB(255, 0, 0), 2, cv.CV_AA, 0)
# 検出した顔の矩形を合わせて表示 matrix_plot(ipl2np(tarImg)).show( axes=True, frame=True, figsize=8, aspect_ratio=1)