前提・実現したいこと
以下のコードを使って画像内に写っている人物の顔を認識させるとします。そのとき、顔と認識された領域にグラフ(散布図)を描画して、「顔」とグラフの点が重なったところにおけるグラフ配列のインデックスを取得したいです。どうすればこの処理が可能となるか、教えていただきたいです。
該当のソースコード
import cv2 import numpyas np from pylab import * import matplotlib.pyplot as plt def main(): # 画像の読み込み(RGB) img = cv2.imread("サンプル画像") # 画像サイズ変更 scale = 3 img = cv2.resize(img,(360*scale, 180*scale)) # カスケード型識別器の読み込み cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml") # グレースケール変換 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 顔領域の探索 face = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(30, 30)) # 顔領域を赤色の矩形で囲む for (x, y, w, h) in face: cv2.rectangle(img, (x, y), (x + w, y+h), (0,0,200), 3) # 画像をモニターに表示 cv2.namedWindow("Image", cv2.WINDOW_AUTOSIZE) # cv2.WINDOW_AUTOSIZE:デフォルト。ウィンドウ固定表示 # cv2.WINDOW_NORMAL:ウィンドウのサイズを変更可能にする cv2.imshow("Image", img) cv2.waitKey(0) cv2.destroyAllWindows() if __name__ == "__main__": main() # -------------------------------------------------------------------------------------------------------------- """ # 描画させたいグラフの例(配列や描画範囲の値は適当です) x = [-80,-65,-32,-13,-4,1,7,27,55,71,94] y = [-47,-32,-27,-18,-9,3,9,21,34,41,49] plt.plot(x, y, '-ro') plt.xlim(-100, 100) plt.ylim(-50,50) # 横軸をx, 縦軸をyとしてグラフを描画し、「顔」領域と重なる点のxy座標およびxy配列のインデックスを取得しようと思っています """ # --------------------------------------------------------------------------------------------------------------
補足情報(FW/ツールのバージョンなど)
バージョン:python3.6
開発環境:Winpython - Spyder
その他ライブラリ:OpenCV , matplotlib
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。