私は顔の画像を持っており、haarカスケードを使用して、口、鼻、および各目の位置(x、y、幅、高さ)を検出しました。これらの領域の外側のすべてのピクセルをゼロに設定したいと思います。これを行うための(計算上)最速の方法は何でしょうか?最終的にはリアルタイムでビデオフレームにそれを行います。
質問する
16296 次
2 に答える
22
それが一番早い方法かどうかはわかりませんが、それを行う方法です。
顔の領域を白としてマスク画像を作成し、元の画像とマスク画像で bitwise_and 関数を適用します。
x = y = 30
w = h = 100
mask = np.zeros(img.shape[:2],np.uint8)
mask[y:y+h,x:x+w] = 255
res = cv2.bitwise_and(img,img,mask = mask)
サイズ400x3000.16 ms
の画像を処理するために、私のシステム (コア i5,4GB RAM) を使用します。
編集 - より良い方法: 上記のようにする必要はありません。ゼロ イメージを作成し、ROI を元のイメージからゼロ イメージにコピーするだけです。それで全部です。
mask = np.zeros(img.shape,np.uint8)
mask[y:y+h,x:x+w] = img[y:y+h,x:x+w]
0.032 ms
上記のパラメーターは、上記よりも私のシステムでのみかかります5 times faster
。
結果 :
入力画像:
出力:
于 2012-07-15T13:46:09.653 に答える