Как выполнить операцию преобразования изображения (повернуть, масштабировать, перевести) в Python по матрице преобразования - PullRequest
1 голос
/ 22 сентября 2019

Я хочу выполнить операции преобразования матрицы, такие как вращение, масштабирование, перевод на изображение без вызова какой-либо другой функции внешней библиотеки (PIL, CV2).

Я пытаюсь использовать базовый подход преобразования матрицы.Но я сталкиваюсь с некоторыми проблемами, например, во время вращения есть отверстия, изображение обрезано.

Я хочу выполнить все вышеописанные операции по центру.Здесь нужно некоторое руководство.

Логика вращения:

newImage = np.zeros((2*row, 2*column, 3), dtype=np.uint8)
radAngle = math.radians(int(input("angle: ")))
c, s = math.cos(radAngle), math.sin(radAngle)
mid_coords = np.floor(0.5*np.array(image.shape))
for i in range(0, row-1):
    for j in range(0, column-1):
        x2 = mid_coords[0] + (i-mid_coords[0])*c - (j-mid_coords[1])*s
        y2 = mid_coords[1] + (i-mid_coords[0])*s + (j-mid_coords[1])*c 
        newImage[int(math.ceil(x2)), int(math.ceil(y2))] = image[i, j]

1 Ответ

0 голосов
/ 23 сентября 2019

Причиной появления дырок в повернутом изображении является то, что вы назначаете каждый пиксель исходного изображения вычисленному местоположению в повернутом изображении.Из-за этого некоторые пиксели в повернутом изображении не учитываются.Вы должны сделать наоборот.Для каждого пикселя в повернутом изображении найдите его значение из исходного изображения.Пожалуйста, обратитесь к этому ответу.

...