OpenCV でshapeを使うとエラーになってしまいます
やりたいこと
画像を分割するプログラムを作ろうと思っています。
ひとつ画像の名前を指定して分割するというプログラムは動いたのですが、forをもちいて複数の画像をまとめて分割しようとするとエラーが出てしまいます。
python 3.9.7 visual studio code でやってます、
発生している問題・エラー
AttributeError
'tuple' object has no attribute 'shape'
成功したソースコード
import cv2
import numpy as np
import os
import glob
img = cv2.imread("./hukuzawa.jpg", cv2.IMREAD_COLOR)
print(img)
h,w = img.shape[:2]
print(h)
split_x = 1
split_y = 2
cx = 0
cy = 0
for ix in range(split_x):
for iy in range(split_y):
split_pic = img[cy:cy + int(h/split_y), cx:cx + int(w/split_x),:]
cv2.imwrite("hukuzawa" + "_" + str(iy) + str(iy) + ".jpg", split_pic)
cy = cy + int(h/split_y)
cy = 0
cx = cx + int(w/split_x)
うまくいかなかったソースコード
import cv2
import numpy as np
import os
import glob
files = glob.glob("./*jpg")
print(files)
split_x = 1
split_y = 2
cx = 0
cy = 0
for f in files:
print(f)
img = cv2.imread(f), cv2.IMREAD_COLOR
print(img)
h,w = img.shape[:2]
print(h)
for ix in range(split_x):
for iy in range(split_y):
split_pic = img[cy:cy + int(h/split_y), cx:cx + int(w/split_x),:]
cv2.imwrite(str(f) + "_" + str(iy) + str(iy) + ".jpg", split_pic)
cy = cy + int(h/split_y)
cy = 0
cx = cx + int(w/split_x)
試したこと
最初はimgがNoneになってしまったのですが、今度はタプルに関するエラーになってしまいました。
いつもimreadやshapeのところでエラーが出てしまいます。
一つの画像ではできたので、forや変数で画像を指定はできないのかなど考えましたが、よくわかりません、
よろしくお願いいたします。
追記
bunkatu
├hukuzawa.jpg
├noguti.jpg
├saigo.jpg
└sample.py
というようなフォルダになっているのですが、一つ目の画像はうまく分割されているのですが、二つ目以降おかしなところで分割されています。
そこでエラーも出て止まってしまいました。