當前位置:編程學習大全網 - 源碼下載 - python 圖像旋轉怎麽去除黑邊

python 圖像旋轉怎麽去除黑邊

去除黑邊現象的辦法:

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)

  • 上一篇:介紹壹下塞班系統的分類
  • 下一篇:博樂達水楊酸面膜效果怎麽樣?我今晚能穿上它嗎?
  • copyright 2024編程學習大全網