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')。其余的似乎相匹配。 –