2016-10-05 12 views
0

Я использую opencv в python 2.7.OpenCV/Python: Colorbar в величине fft

  1. Цветовая гамма негабаритна. Как сжать ее до такой же длины, как и изображение?
  2. Как объяснить значение/диапазон величины?

Это мой код:

import numpy as np 
import cv2 
from matplotlib import pyplot as plt 

img = cv2.imread('messi.jpg',0) 

dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT) 
dft_shift = np.fft.fftshift(dft) 

magnitude_spectrum = np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1])) 

plt.subplot(131),plt.imshow(img, cmap = 'gray') 
plt.title('Input Image'), plt.xticks([]), plt.yticks([]) 
plt.subplot(132),plt.imshow(magnitude_spectrum, cmap = 'gray'), plt.colorbar(cmap = 'gray') 
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([]) 
plt.show() 

enter image description here

ответ

0

Я нашел решение.

Для изменения размера colorbar Я использую параметр fraction и его соответствующее значение в colorbar. Благодаря bejota's answer.

Что касается величины величины, я обнаружил, что чем ярче вершины изображения величины, тем больше контрастность яркости исходного изображения в оттенках серого. Попробуйте использовать следующий код, используя различные изображения.

Это мой окончательный код:

import numpy as np 
import cv2 
from matplotlib import pyplot as plt 

img = cv2.imread('messi.jpg',0) 

dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT) 
dft_shift = np.fft.fftshift(dft) 

magnitude_spectrum = np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1])) 


plt.subplot(121),plt.imshow(img, cmap = 'gray') 
plt.title('Input Image'), plt.xticks([]), plt.yticks([]) 
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray'), plt.colorbar(cmap = 'gray',fraction=0.03, pad=0.04) 
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([]) 
plt.show() 

И это результат: enter image description here

+0

Вы можете отметить этот ответ, как принято один? Благодарю. –

+0

@AhmedFasih Да, я сделаю это. Из-за того, что я ответил на свой вопрос, я должен подождать еще один день, чтобы принять его. – zinon

 Смежные вопросы

  • Нет связанных вопросов^_^