python 图像旋转怎么去除黑边

Python011

python 图像旋转怎么去除黑边,第1张

去除黑边现象的办法:

1)在做图像坐标映射反查的时候,算出当前点在原始图像的外部还是内部,若在外部,判断当前像素点的X或者Y位置,找临近四个边界的像

素值代替;

该方法太过繁琐,适合自己写程序实现,如若想调用现有的一些库函数,可以考虑2)做法:

2)将待旋转的图像进行边界填充,最不济的情况下可以扩充为原始图像的大小;

旋转边界填充图像;

计算原始图像经过旋转以后的结果图像的尺寸大小;

在边界填充旋转图像上截取目标图像;(图像都是按照图像中心旋转的);

附上一段matlab人脸根据人眼位置对齐的代码:

[plain] view plain copy

eye_angle = atan2( (eye_pts(2,2) - eye_pts(1,2)),(eye_pts(2,1) - eye_pts(1,1) ) ) * 180 / pi% 人眼的倾斜角度

if eye_angle <0

eye_angle = eye_angle + 360

end

if floor(eye_angle) <= 5 || floor( 360 - eye_angle ) <= 5

continue

end % 5度之内不做对齐操作

img = imread(img_path)

[m,n,~] = size(img)

img_pad = padarray(img,[m n],'both','replicate')% 扩充图像

img_pad_rotate = imrotate(img_pad,eye_angle,'bilinear')% 旋转扩充图像

[m_pad_r,n_pad_r,~] = size(img_pad_rotate)

[plain] view plain copy

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))% 最终对齐图像的大小

left = floor((n_pad_r - new_n) / 2)right = left + new_n

bott = floor((m_pad_r - new_m) / 2)up = bott + new_m

face_rorate = img_pad_rotate(bott : up,left : right,:)% 截取目标图像

figure,imshow(face_rorate)

1、语法:

终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关,控制字符颜色的转义序列是以ESC开头,即用\033来完成。

2.书写过程

开头部分: \033[显示方式前景色背景色m

结尾部分: \033[0m

eg:

输出:

开头部分的三个参数:显示方式、前景色、背景色是可选参数,可以只写其中一个。

3、参数

显示方式: 0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、 5(闪烁)、25(非闪烁)、7(反显)、27(非反显)

前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)

背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)

eg:

在类中显示:

输出: