シーン内で動きがあると仮定して、次の画像と前の画像との違いを追跡しようとしていました。 2つのjpg画像の間で対応するピクセル値の減算を適用し、結果のマトリックスの平均値を計算して、それがある閾値レベルを下回るか下回っているかどうかを確認することにしました。OpenCV image subtraction vs Numpy subtraction
減算は、cv2減算およびnp減算法によって行われました。私は結果にかなり大きな違いがあることに気づいた。何とかしてヒストグラムを伸ばし、結果の値を正規化したようですが、なぜですか?
イメージはcv2.open経由で読み込まれました。私はこの方法がチャンネルのBGR順序を使用することを知っていますが、何が起こったのか説明していません。読み込まれたイメージはnpy.uint値を持つnumpy nd.arrayです。 Python 3.7でSpyderを操作する
編集:cv2.imreadで引数0グレースケール
#loading images
img_cam0 = cv2.imread(r'C:\Users\Krzysztof\Desktop\1.jpg',0)
img_cam1 = cv2.imread(r'C:\Users\Krzysztof\Desktop\2.jpg', 0)
print('img0 type:',type(img_cam0), 'and shape:', img_cam0.shape)
print('img1 type:',type(img_cam1),'and shape:', np.shape(img_cam1))
print('\n')
#opencv subtraction
cv2_subt = cv2.subtract(img_cam0,img_cam1)
cv2_mean = cv2.mean(cv2_subt)
print('open cv mean is:', cv2_mean)
f.show_im(cv2_subt, 'cv2_subtr')
#np subtraction and mean
np_subtr = np.subtract(img_cam0, img_cam1)
np_mean = np.mean(np_subtr)
print('numpy mean is:', np_mean)
f.show_im(np_subtr, 'np_subtr')
あなたが実際に画像がどのように見えるかcv2_subt-np_subtr見てみたいです。それは豆をこぼします。 –
シンプル - 'cv2.subtract'は彩度を実行し、' np.subtract'はぼやけません(アンダーフローの結果が表示されます)。 –