resize函數(shù)在opencv中用的可謂是最多的之一,縮放單張圖片可用下述寫法:
import cv2
img1 = cv2.imread("left.png", 1) # 參數(shù)1表示以彩色圖像讀取
img2 = cv2.imread("right.png", 1)
x, y = img1.shape[0:2] # 獲取圖像的寬和高
img_test1 = cv2.resize(img1, (int(y / 4), int(x / 4))) # 注意x,y的順序不要寫滿
cv2.imwrite('l.png', img_test1)
img_test2 = cv2.resize(img2, (int(y / 4), int(x / 4))) # 將圖像縮小4*4倍
cv2.imwrite('r.png', img_test2) # 保存新圖像
但是對(duì)一個(gè)文件夾下有多張圖片該怎么辦呢,總不能一張一張地修改名字寫吧,如下圖:

image.png
很簡(jiǎn)單,利用for循環(huán)即可實(shí)現(xiàn),見下:
import cv2
for i in range(1,24):
qianzhui1 = './left/left_'
path1 = qianzhui1 + str(i)+'.png'
img1 = cv2.imread(path1, 1) # 參數(shù)1表示以彩色圖像讀取
qianzhui2 = './right/right_'
path2 = qianzhui2 + str(i)+'.png'
img2 = cv2.imread(path2, 1)
if img1 is None: # 檢查路徑是否正確
print(path1 +' is not exist!')
if img2 is None:
print(path2 +' is not exist!')
x, y = img1.shape[0:2] # 獲取圖像的寬和高
result1 = './l/00000'+ str(i-1)+'_10.png'
img_test1 = cv2.resize(img1, (int(y / 4), int(x / 4))) # 注意x,y的順序不要寫滿
cv2.imwrite(result1, img_test1)
result2 = './r/00000' + str(i - 1) + '_10.png'
img_test2 = cv2.resize(img2, (int(y / 4), int(x / 4))) # 將圖像縮小4*4倍
cv2.imwrite(result2, img_test2) # 保存新圖像
print("Finished! No wrong.")
最終可以看出在該路徑下存放了縮放后的圖片,見下圖:

image.png