4

ウェブカメラを使用してゲームを作成しようとしている皆さん、こんにちは。ウェブカメラでビデオをストリーミングしているときに、画面からオブジェクトを落下させる必要があります(そのストリームがバックグラウンドです)。

私はPythonとopencvのモジュールcv2を使用しています

問題は、このオブジェクトにマスクを適用するにはどうすればよいですか?元の画像のマスクとなる画像をすでに持っていますが、元の画像の背景を差し引くためにそれを適用する方法がわかりません。

iveはすでにcv2.bitwise_を使用しようとしましたが、何も起こらず、画像は黒の背景で同じままでした。

#targets
original_ball = cv2.imread("Aqua-Ball-Red-icon.png")
ball = cv2.resize(bola_original, (64,64), fx=1, fy=1)
#mask
mask_original = cv2.imread("input-mask.png",0)
mask = cv2.resize(mask_original, (64,64), fx=1, fy=1)
res = cv2.bitwise_and(ball, ball, mask = mask)

前もって感謝します!

4

2 に答える 2

1

を使用している場合cv2は、numpy配列を操作しているため、マスクのような単純なもののために opencv を使用する必要はありません。

まず、必要な値 (つまり、マスクされていない値) の値が 1 になるように、マスク配列を操作 (乗算、場合によっては乗算) します。次に、ソース イメージにマスクを乗算します。これにより、結果の画像には、マスク == 1 の元のピクセルと、マスク == 0 の元のピクセル (つまり、黒) が含まれます。

その要点は次のとおりです。

import numpy
original_ball = cv2.imread("Aqua-Ball-Red-icon.png")
ball = cv2.resize(bola_original, (64,64), fx=1, fy=1)
mask_original = cv2.imread("input-mask.png",0)
mask = cv2.resize(mask_original, (64,64), fx=1, fy=1)

max_value= numpy.max(mask)
mask/=max_value
res= ball*mask

input-mask.pngの色深度によっては、最初にグレースケールに減らす必要がある場合があります

于 2013-01-28T03:20:25.923 に答える
1

マスク イメージの名前の横に 0 引数があるため、マスクは表示されませんでした)。

于 2013-01-28T19:27:07.717 に答える