0
我想在openCV中使用python打開和處理TIF圖像。我正在關注此代碼:如何從DFT(離散傅立葉變換)格式轉換爲灰度
Mat img = imread("my.tiff", CV_LOAD_IMAGE_GRAYSCALE);
Mat ff_in;
img.convertTo(ff_in, CV_32FC1, 1.0/255.0); // [0..1] range
Mat ff_out;
dft(ff_in, ff_out);
Mat ff_gray;
ff_out.convertTo(ff_gray, CV_8UC1, 255.0);
imshow("lalala",ff_gray);
我認爲上面的代碼是在C++中,我試圖找到它的Python替代品。下面是我得到了它從鏈接:link
目前,我把它轉化爲蟒蛇如下:
img = cv2.imread('test2.TIF', cv2.CV_LOAD_IMAGE_GRAYSCALE);
img1 = np.float32(img)
img2 = cv2.dft(img1);
# What should I use HERE? Convert dft back to gray scale image
cv2.imshow("Display window", img3);
cv2.waitKey(0);
的任何意見或建議表示高度讚賞。謝謝。
原來調用['convertTo'(http://docs.opencv.org/3.1.0/d3/d63/classcv_1_1Mat。 html#a3f356665bb0ca452e7d7723ccac9a810)按255.0(第三個參數)縮放,並將結果轉換爲(無飽和)結果爲無符號的8位整數。第一位是微不足道的,用於飽和['np.clip'](https://docs.scipy.org/doc/numpy/reference/generated/numpy.clip.html),最後一部分是'np.uint8 '。例如'np.uint8(np.clip(img2 * 255,0,255))' –
嗨,我添加了行'img3 = np.uint8(np.clip(img2 * 255,0,255))',但它不工作。生成的圖像看起來更像是一個dft。你知道在步驟1和步驟2中是否有其他問題(轉換爲float32和dft)? – matchifang
那麼,你的'float32'轉換缺少'1.0/255.0'的縮放(即第二行應該是'img1 = np.float32(img)/ 255.0')。其餘的似乎相匹配。 –