2013-03-18 66 views
2

我一直在想辦法獲取圖像的DCT。在獲得圖像並做了一堆濾波之後,我想計算DCT。以下是代碼sniplet:如何使用opencv獲取python中的圖像的dct

imgcv1 = cv2.split(imgcv)[0] 
cv2.boxFilter(imgcv1, 0, (7,7), imgcv1, (-1,-1), False, cv2.BORDER_DEFAULT) 
#resize image to 32x32 
cv2.resize(imgcv1, (32, 32) ,imgcv1) 

我一直在試圖玩弄給出here的描述,但沒有成功。 當我試圖像:

dst = cv2.dct(imgcv1) 

我得到這樣一個錯誤:

cv2.error: /build/buildd/opencv-2.3.1/modules/core/src/dxt.cpp:2247: error: (-215) type == CV_32FC1 || type == CV_64FC1 in function dct 

從我可以從錯誤理解是:輸入是不是32位浮點但8位。我該如何轉換它並將其作爲32位浮點數傳遞?我不確定這個問題。我會很感激你的幫助。我怎樣才能得到DCT?我對openCV和python很新。我通過其他2/3線程搜索同一主題,但它沒有工作。

回答

1

我找到了解決方案。正如我所說的,我們需要將其轉換爲浮點數,範圍爲0到1.然後我們需要在計算DCT後將其轉換回來:

imf = np.float32(imgcv1)/255.0 # float conversion/scale 
dst = cv2.dct(imf)   # the dct 
imgcv1 = np.uint8(dst)*255.0 # convert back 
相關問題