Моя проблема заключается в следующем.Сначала я делаю снимок через веб-камеру.Для целей, которые здесь не актуальны, мне нужно преобразовать изображение (которое теперь является массивом яркости пикселей) в полярные координаты, центрированные в определенной точке.Однако позже я хочу, чтобы полярное изображение было отцентрировано в другой точке.
Пока мой код выглядит так:
import cv2
import numpy as np
source = cv2.imread(0) # takes picture, which is a (100,100,3) array
# now I convert this into a (100,100) array of brightnesses
# by taking the average of the R, G and B values at each point
image = np.zeros((100,100))
for i in range(100):
for j in range(100):
for n in range(3):
image[i][j] += source[i][j][n]/3
# now to convert it to polar coordinates centred at a point (x,y)
x, y = 50, 50
radius = np.sqrt(2)*50
polar_image = cv2.linearPolar(image, (x, y), radius, cv2.INTER_LINEAR)
До этого момента все работало нормально.Я не уверен, как взять массив polar_image
и сказать, хорошо, я хочу новый массив, который все еще находится в полярных координатах, но центрирован в другой точке.
Да, я мог бы преобразовать polar_image
обратно в декартову, используя флаг cv2.WARP_INVERSE_MAP
, а затем выполнить то же преобразование, что и выше, с разными x
и y
, однако, по причинам, на которых я не буду останавливаться, я действительно хотел бы знатьесли есть альтернативный метод, позволяющий избежать преобразования изображения обратно в декартовы, а затем обратно в полярные.Очевидно, что интерполяция хороша, если она неизбежна.Спасибо!