8
私は顔のイメージを持っており、口、鼻、および各目の位置(x、y、幅、高さ)を検出するためにハースカスケードを使用しています。これらの領域の外側にあるすべてのピクセルをゼロに設定したいと思います。これを行う最も高速な(計算上)方法は何でしょうか?私は最終的にビデオフレームにリアルタイムでそれをやっています。OpenCV via python:四角形の外側のピクセルをゼロにする方法はありますか?
私は顔のイメージを持っており、口、鼻、および各目の位置(x、y、幅、高さ)を検出するためにハースカスケードを使用しています。これらの領域の外側にあるすべてのピクセルをゼロに設定したいと思います。これを行う最も高速な(計算上)方法は何でしょうか?私は最終的にビデオフレームにリアルタイムでそれをやっています。OpenCV via python:四角形の外側のピクセルをゼロにする方法はありますか?
私はそれが最速の方法かどうかわかりませんが、それを行う方法です。
顔の領域を白にしてマスク画像を作成し、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)
それはサイズ400×300
EDITのイメージのために私のシステム(コアi5,4GB RAM)に0.16 ms
を取る - BETTER METHOD:あなたは、上記のように行う必要はありません。単純にゼロ画像を作成し、原画像からゼロ画像にROIをコピーするだけです。それで全部です。
mask = np.zeros(img.shape,np.uint8)
mask[y:y+h,x:x+w] = img[y:y+h,x:x+w]
それは上記のパラメータ、上記以外5 times faster
のために私のシステムでのみ0.032 ms
をとります。
結果:
入力画像:
出力: