[英]Resizing image with cv2
我正在嘗試將原始 32x32 中從 cifar10 檢索到的圖像大小調整為 96x96,以便與 MobileNetV2 一起使用,但是我遇到了這個錯誤。 嘗試了各種解決方案,但似乎沒有任何效果。
我的代碼:
for a in range(len(train_images)):
train_images[a] = cv2.resize(train_images[a], dsize=(minSize, minSize), interpolation=cv2.INTER_CUBIC)
我得到的錯誤:
----> 8 train_images[a] = cv2.resize(train_images[a], dsize=(minSize, minSize), interpolation=cv2.INTER_CUBIC)
ValueError: could not broadcast input array from shape (96,96,3) into shape (32,32,3)
有時您必須將圖像從 RGB 轉換為灰度。 如果這是問題所在,您唯一應該做的就是gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
,調整圖像大小,然后再次resized_image = cv2.cvtColor(gray_image, cv2.COLOR_GRAY2RGB)
我從來沒有遇到過這個錯誤,但是如果第一個選項不起作用,您可以嘗試使用枕頭調整圖像大小,如下所示:
from PIL import Image
im = Image.fromarray(cv2_image)
nx, ny = im.size
im2 = im.resize((nx*2, ny*2), Image.LANCZOS)
cv2_image = cv2.cvtColor(numpy.array(im2), cv2.COLOR_RGB2BGR)
你可以把它變成一個函數並在列表理解中調用它。 我希望這能解決你的問題:)
這僅僅是因為您正在從 train_images 讀取 32x32 圖像並嘗試將重塑后的圖像 (96x96) 保存在同一個數組中,這是不可能的! 嘗試類似:
train_images_reshaped = np.array((num_images, 96, 96, 3))
for a in range(len(train_images)):
train_images_reshaped[a] = cv2.resize(train_images[a], dsize=(minSize, minSize), interpolation=cv2.INTER_CUBIC)
OpenCV 中有一些插值算法。 如-
代碼:
image_scaled=cv2.resize(image,None,fx=.75,fy=.75,interpolation = cv2.INTER_LINEAR)
img_double=cv2.resize(image,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
image_resize=cv2.resize(image,(200,300),interpolation=cv2.INTER_AREA)
image_resize=cv2.resize(image,(500,400),interpolation=cv2.INTER_LANCZOS4)
您也可以在此處找到有關python 實現的詳細信息: 如何在 OpenCV python 中調整圖像大小
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.