2016-11-17 31 views
6

私はOpenCVを新しくしました。正規化に関連するいくつかの前処理をしたい。画像を一定の大きさに正規化したい。次のコードの結果は私に黒いイメージを与えます。誰かが私が間違っていることを正確に指し示すことができますか? 1の時に見ることができるように、私が入力していた画像は、黒/白画像OpenCV Python:画像を正規化

import cv2 as cv 
import numpy as np 

img = cv.imread(path) 
normalizedImg = np.zeros((800, 800)) 
cv.normalize(img, normalizedImg, 0, 255, cv.NORM_MINMAX) 
cv.imshow('dst_rt', self.normalizedImg) 
cv.waitKey(0) 
cv.destroyAllWindows() 
+0

画像に8ビット以外のビット深度が使用されていますか?もしそうなら、それを表示するには8ビットに変換する必要があります。 – zeFrenchy

+0

img.dtypeは私にuint8 @zeFrenchyを与えます – kot09

+0

イメージがグレースケールであり、実際には白黒ではなく、ortherwise正規化が何もしないことを意味します。それはNORM_L2で動作しますか? – zeFrenchy

答えて

1

です:http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#cv2.normalizenormalize関数の結果は、出力パラメータとして返されると言う→ dstあります。この関数は、入力パラメータdstをインプレースで変更しません。あなたはおそらくIMGとnormalizedImgで異なるサイズを使用しているので、それはあなたに黒画像を与えて

import cv2 as cv 
import numpy as np 
path = r"C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg" 
img = cv.imread(path) 
normalizedImg = np.zeros((800, 800)) 
normalizedImg = cv.normalize(img, normalizedImg, 0, 255, cv.NORM_MINMAX) 
cv.imshow('dst_rt', normalizedImg) 
cv.waitKey(0) 
cv.destroyAllWindows() 
0

self.cv.imshow('dst_rt', self.normalizedImg)ラインはタイプミスです)。

import cv2 as cv 

img = cv.imread(path) 
img = cv.resize(img, (800, 800)) 
cv.normalize(img, img, 0, 255, cv.NORM_MINMAX) 

cv.imshow('dst_rt', img) 
cv.waitKey(0) 
cv.destroyAllWindows() 
0

あなたがあなたの代わりにnormalizedImgの、self.normalizedImgを使用cv.imshow()呼び出します。

自己。クラスメンバーを識別するために使用されています。コード内での使用は適切ではありません。それは書かれたとおりに動くべきではありません。しかし、私はこのコードがクラス定義から抽出されたと仮定しますが、変数の命名に一貫していなければならず、self.normalizedImgnormalizedImgとは異なります。

関連する問題