Сюжет с использованием imshow и pcolormesh (смена центра происхождения) - PullRequest
0 голосов
/ 17 октября 2019

У меня есть цифровое изображение, которое при построении графика с использованием plt.imshow и plt.pcolormesh дает следующие результаты . Обратите внимание, что для plt.pcolormesh начало координат O смещено в центр путем переопределения границ осей. У меня вопрос: почему при использовании plt.pcolormesh изображение переворачивается (как оно есть)?

Моя цель состоит в том, чтобы график изображения находился в той же позиции, но с новыми значениями координат относительно его нового источника (в центре) - показанного как зеленое пятно на рис. 2 этого изображение . Можно перевернуть перевернутое изображение в исходное состояние, выполнив некоторые алгебраические манипуляции, но каковы уравнения и почему?

Код представляет собой простой прямой сюжет. Вот код для создания первого изображения (результатов):

img       = cv2.imread("../42.bmp")                  # read the image
gray      = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)    # convert to grayscale
gray_arr  = np.asarray(gray)                         # convert to a 2D numpy array

nptsx  = img.shape[1]                   # Total number of pixels along x axis
nptsy  = img.shape[0]                   # Total number of pixels along y axis

# Limits of the x and y axes. We want to have Origin in the center.
limits = [-nptsx//2 + 1, nptsx//2, -nptsy//2 + 1, nptsy//2] 

#Creating  2D Meshgrid
x = np.linspace(limits[0], limits[1], nptsx)
y = np.linspace(limits[2], limits[3], nptsy)
X1, X2 = np.meshgrid(x, y) 

plt.subplots(figsize = (8, 4))

plt.subplot(121)                    # image plot using plt.imshow
plt.xlabel('x-position (px)')
plt.ylabel('y-position (px)')
plt.title('plt.imshow')
plt.imshow(gray, cmap = 'gray')
plt.grid()

plt.subplot(122)                    # image plot using plt.pcolormesh
plt.xlabel('x-position (px)')
plt.ylabel('y-position (px)')
plt.title('plt.pcolormesh')
plt.pcolormesh(X1, X2, gray, cmap = 'gray')   
plt.grid()  
plt.tight_layout()

plt.show()

Заранее спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...