Python實現(xiàn)簡單圖像縮放與旋轉(zhuǎn)
1. 圖像縮放
1.2. 使用命令
import cv2
# 縮放
def resize(img, k, inter):
res = cv2.resize(img, None, fx=k, fy=k, interpolation=inter)
return res參數(shù)設(shè)定(interpolation):
0:最近鄰插值
1:雙線性插值
2:基于局部像素的重采樣
3:基于4*4像素鄰域的三次插值
4:基于8*8像素鄰域的Lanczos插值
img_row = cv2.imread(r'picture4.jpg')
cv2.imshow('origin_picture', img_row)
cv2.waitKey(0)
inters = [cv2.INTER_NEAREST, cv2.INTER_LINEAR, cv2.INTER_AREA, cv2.INTER_CUBIC, cv2.INTER_LANCZOS4]
for inter in inters:
res1 = resize(img_row, 2, inter)
cv2.imshow('res1', res1)
cv2.waitKey(0)
position = 'pic_resize' + '_' + str(inter) + '.jpg'
cv2.imwrite(position, res1)1.2. 原理介紹
幾種方法原理簡介:
最近鄰插值:將目標(biāo)圖像中的點對應(yīng)原圖像中最近鄰整數(shù)坐標(biāo)點的像素值雙線性插值:f(x,y)為二元函數(shù),假設(shè)我們知道f(x0,y0), f(x1,y1),f(x0,y1), f(x1,y0)四個點的值。這四個點確定一個矩形,我們希望通過插值得到矩形內(nèi)任意點的函數(shù)值。于是我們在x方向上進(jìn)行兩次線性插值,y方向上一次線性插值。綜合后得到以下公式:
![]()
局部像素的重采樣:如果放大圖像的比例是整數(shù)倍,與最近鄰插值類似,如果放大的比例不是整數(shù)倍,則會采用線性插值三次插值:給定n+1個點,a=x0<x1 < . . . <xn=b,以及他們的函數(shù)值f (x i) , i = 0 , 1 , 2 , . . . n ,在每個區(qū)間 [ x i , x i + 1 ]上,確定一個三次多項式,每個三次多項式滿足共4n-2個條件,剩余條件由邊界條件確定:
![]()


Lanczos插值:
需要通過計算模板中的權(quán)重信息來計算x對應(yīng)的值。對于一維信息,假如我們輸入的點集為X,那么,Lanczos對應(yīng)有個窗口模板Window,窗口中每個位置的權(quán)重計算如下,通常a取2或者3.根據(jù)計算出來的權(quán)重,然后再根據(jù)x即可求出對應(yīng)的加權(quán)平均:


1.3. 方法比較
速度比較:

效果比較:
最近鄰插值:最簡單,但是邊緣沒有緩慢的過渡區(qū)域,導(dǎo)致放大圖像邊緣容易出現(xiàn)鋸齒雙線性插值:計算較最近鄰復(fù)雜,但是能很好避免邊緣鋸齒的現(xiàn)象區(qū)域重采樣:圖像放大時效果類似于雙線性插值三次插值法:計算較為復(fù)雜,但是具有良好的穩(wěn)定性和平滑性Lanczos插值:計算最為復(fù)雜,效果最好,但是耗時最長1.4. 實驗結(jié)果
最近鄰:

雙線性:

基于局部像素的重采樣:

三次插值法:

Lanczos插值法:

2. 旋轉(zhuǎn)
2.1. 使用命令
import imutils
# 旋轉(zhuǎn)
def rotate(img, angle):
res = imutils.rotate_bound(img, angle)
return res
img_row = cv2.imread(r'picture4.jpg')
res2 = rotate(img_row, 45)
cv2.imshow('res2', res2)
cv2.waitKey(0)
cv2.imwrite(r'pic_rotate.jpg', res2)2.2. 實驗效果

總結(jié)
到此這篇關(guān)于Python實現(xiàn)簡單圖像縮放與旋轉(zhuǎn)的文章就介紹到這了,更多相關(guān)Python圖像縮放與旋轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)快速提取Word表格并轉(zhuǎn)Markdown
這篇文章主要為大家詳細(xì)介紹了一套Python零基礎(chǔ)可操作的代碼方案,幫助測試工程師3分鐘內(nèi)完成表格提取與轉(zhuǎn)換,直接對接自動化測試或大模型,需要的小伙伴可以參考下2025-04-04
Pycharm中SQL語句提示SQL Dialect is Not Config
這篇文章主要介紹了Pycharm中SQL語句提示SQL Dialect is Not Configured的解決方案,具有很好的參考價值,希望對大家有所幫助。2022-07-07
python實現(xiàn)商品進(jìn)銷存管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)商品進(jìn)銷存管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05

