実現したいこと
マスク画像を自動で作成するプログラムを作成したのですが名前を変更して写真に示すような生成した複数のマスク画像を保存したいです
matplotlibで保存はできたのですが白い枠?みたいなものができてしまいます、ほかにいい方法はありますか
発生している問題・分からないこと
コードの以下の部分を別の方法でやりたい
plt.imshow(mask_blur,cmap='gray')
plt.axis('off')
#mask_gray =mask_blur .convert('L')
#plt.show()
plt.savefig('{}/mask_{}'.format(mask_dir,file_name[i]))#保存
実行結果例:img_1.3jpg→mask_img_1.3jpgに名前を変更して保存
該当のソースコード
Python
1import matplotlib.pyplot as plt 2import numpy as np 3import pathlib 4import glob 5import os 6import cv2 7 8file_name=[] 9input_dir = "/img_folder"#使用する画像が保存されているフォルダ名 10mask_dir="/mask_folder"#マスク画像を保存するフォルダ 11img_list = list(pathlib.Path(input_dir).glob('**/*.jpg'))#フォルダ内の画像を取得 12 13 14for f in glob.glob('img_folder/*.jpg'): 15 file_name.append(os.path.split(f)[1])#ファイル名のみ取得 16 17for i in range(len(img_list)): 18 img_file_name = str(img_list[i]) 19 img = cv2.imread(img_file_name) 20 h, w = img.shape[:2] 21 22 mask = np.zeros((h, w), dtype=np.uint8)#マスク画像生成 23 cv2.circle(mask,center=(x[i],y[i]), radius=100, color=255, thickness=-1) 24 mask_blur = cv2.GaussianBlur(mask, (591, 301), 0) 25 26 plt.imshow(mask_blur,cmap='gray') 27 plt.axis('off') 28 #mask_gray =mask_blur .convert('L') 29 #plt.show() 30 plt.savefig('{}/mask_{}'.format(mask_dir,file_name[i]))#保存 31 32
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
mask_gray=mask_mask_blur.convert('L')と試してみたがエラーが起こった
AttributeError:'numpy.ndarray' object has no attribute 'numpy'
補足
Jupyterで制作
マスク画像の円の中心座標x,yはint型の数字が格納されています。
回答2件
あなたの回答
tips
プレビュー