圖像重構問題


import cv2
import numpy as np
from numpy import *
image_name='F:\\train\\365.jpg'
img = cv2.imread(image_name,0)
print(img[1,:])
dataMat = mat(img)
print(type(img[1,1]))
cv2.imshow('img1',dataMat)
cv2.waitKey(0)
cv2.destroyAllWindows()
U,Simga,VT = linalg.svd(dataMat)
print(shape(U),shape(Simga),shape(VT))
mat=zeros([256,384])
for i,j in enumerate(mat):
    j[i]=Simga[i]
data=np.dot(np.dot(U,mat),VT)
print(shape(data))
print(type(data[1,1]))
print(data[1,:])
cv2.imshow('img',data)
cv2.waitKey(0)
cv2.destroyAllWindows()
上面圖像顯示存在問題:
原圖
輸出圖像
原因:輸出的data數據的類型爲float64,float64默認將0到1的數映射到0到255
爲此可以加一句data/=255
也可以用data=data.astype(uint8)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章