我用下面的代码来计算图像的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。 –