我用下面的代碼來計算圖像的DCT:圖像類型轉換用的OpenCV imwrite
img = cv2.imread(imgName,0)
imf = np.float32(img)
dctimg = cv2.dct(imf)
的問題是保存與OpenCV的的imwrite
功能的圖像時,我發現了期望的輸出。
cv2.imwrite('output-dct.png',dctimg)
不過,雖然與matplotlib爲plt.imshow(dctimg, cmap='gray')
節省我得到全黑圖像。
我知道OpenCV會將它轉換爲8位圖像。所以我試圖用標準化來做同樣的事情
cv2.normalize(orgDct, dctimg,alpha=0, beta=1,
norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
dctimg = np.uint8(dctimg)*255
plt.imshow(dctimg, cmap='gray')
但是結果並不一樣。
如何在使用matplotlib繪圖時達到與imwrite
相同的效果?
正常化是錯誤的 - 你設定的範圍,以0-1和數據類型CV_8U。該行之後的行是毫無意義的,只是直接規範化到範圍0-255。 –