【发布时间】:2018-01-05 13:31:14
【问题描述】:
我正在使用以下代码计算图像的 DCT:
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')
【问题讨论】:
-
规范化错误 - 您将范围设置为 0-1 和数据类型 CV_8U。后面的行没有意义,直接归一化到 0-255 范围内即可。
标签: python image opencv matplotlib