私は画像315x581を持っています。私は28x28で左上から右下に切り取りたいので、各28x28イメージをフォルダに保存する必要があります。 私は、y1 = 0からy2 = 28、x1 = 0からx2 = 28までの1つのイメージをトリミングすることができました。openCV Python3.5を使用して、画像を左から右、上から下に小さなサイズにトリミングできますか
最初の問題は、この小さな画像を保存するためにcv2.imwrite( "cropped.jpg"、cropped)を使用しましたが、上の行があれば保存しません。
第2の問題は、28x28の画像を左から右、上から下にトリミングして各サブ画像を保存する際に、どのようにコードを書き込むことができますか。 forループを使用しましたが、どのように完了するかわかりません。 ありがとうございました。
ここでは、これはあなたのアプローチが良いですが、必要ないくつかの微調整がある
import cv2
import numpy as np
from PIL import Image
import PIL.Image
import os
import gzip
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.cm as cm
#%%
image1LL='C:/Users/Tala/Documents/PythonProjects/Poster-OpenCV-MaskXray/CHNCXR_0001_0_LL.jpg'
mask1LL='C:/Users/Tala/Documents/PythonProjects/Poster-OpenCV-MaskXray/CHNCXR_0001_0_threshLL.jpg'
#finalsSave='C:/Users/Tala/Documents/PythonProjects/Poster-OpenCV-MaskXray/Xray Result'
# load the image
img = cv2.imread(image1LL,0)
mask = cv2.imread(mask1LL,0)
# combine foreground+background
final1LL = cv2.bitwise_and(img,img,mask = mask)
cv2.imshow('final1LL',final1LL)
cv2.waitKey(100)
final1LL.size
final1LL.shape
# Save the image
cv2.imwrite('final1LL.jpg',final1LL)
# crop the image using array slices -- it's a NumPy array
# after all!
y1=0
x1=0
for y2 in range(0,580,28):
for x2 in range(0,314,28):
cropped = final1LL[0:28, 0:28]
cv2.imshow('cropped', cropped)
cv2.waitKey(100)
cv2.imwrite("cropped.jpg", cropped)
この問題にアプローチする方法についての答えを参照してください:D –