Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo eliminar los bordes negros en la rotación de imágenes de Python

Cómo eliminar los bordes negros en la rotación de imágenes de Python

Métodos para eliminar bordes negros:

1) Al realizar la verificación inversa del mapeo de coordenadas de la imagen, averigüe si el punto actual está fuera o dentro de la imagen original. Si está fuera, determine la posición X o Y de la imagen. píxel actual y buscar Se reemplazan los valores de píxeles adyacentes de los cuatro límites;

Este método es demasiado engorroso y adecuado para escribir su propio programa para implementarlo. Si desea llamar a algunas funciones de biblioteca existentes, puede hacerlo. Puede considerar el método 2):

2) Rellene el límite con la imagen que se va a rotar. En el peor de los casos, se puede expandir al tamaño de la imagen original;

Rotar. la imagen que llena el límite;

Calcula la imagen original después de la rotación. El tamaño de la imagen resultante;

Captura la imagen de destino en la imagen rotada que llena el límite; se gira según el centro de la imagen); (las imágenes son ambas);

La imagen de destino se gira hacia el centro de la imagen. Rotar la imagen según el centro de la imagen);

El siguiente es un código de Matlab que alinea la cara según la posición del ojo humano:

[plain] ver plano copiar

eye_angle = atan2( (eye_pts(2, 2) - eye_pts(1, 2)), (eye_pts( 2, 1) - eye_pts(1, 1) ))* 180 / pi inclinación; ángulo del ojo humano

if eye_angle lt; ;= 5 || piso( 360 - eye_angle ) lt; = 5

Continuar

fin Sin operación de alineación dentro de 5 grados

img = imread(img_path

[m , n, ~] = tamaño(img);

img_ pad = padarray(img, [m n], 'both', 'replicar'); imagen

img_pad_rotate = imrotate (img_pad, eye_angle, 'bilinear'); Girar imagen expandida

[m_pad_r, n_pad_r, ~] = size(img_pad_rotate

[plain] Ver copia simple

eye_angle = eye_angle * pi / 180

f_cos = cos(eye_angle); f_sin = sin(eye_angle); new_m = Floor(m * abs(f_cos) n * abs(f_sin));

new_n = Floor(n * abs(f_sin) m * abs(f_cos));

izquierda = piso((n_pad_r - nuevo_n) / 2); derecha = izquierda nuevo_n;

bott = piso((m_pad_r - nuevo_m) / 2);

face_rorate = img_pad_rotate( bott: arriba, izquierda: derecha,:); capturar imagen de destino

figura, imshow(face_rorate)