🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1043閲覧

OpenCVで画像変換(エンボス変換)後の保存方法

ken248

総合スコア24

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/18 01:07

編集2020/12/18 01:34

OpenCVで画像変換(エンボス変換)後の保存方法について質問させてください。
フォルダを選択し、全写真をすべて加工して保存するというコードを書いています。

コード自体にエラーは生じていません。

困っていること
・cv2.imshowではエンボス変換した画像が表示されるが
cv.imwriteでは真っ黒の画像が保存される

考えられること
・numpy配列で画像処理をしたためかと思っています。
が、解決法がわからないです。

ご教示お願いいたします。

python

1 2#変数の作成とセット 3today = datetime.date.today().strftime('%Y%m%d') 4arr = [] 5 6def pass_set(mode): 7 org_dir = e1.get() 8   9 if mode == 'emb': 10 fld_dir = org_dir + '\emboss\' 11 12 os.makedirs(fld_dir, exist_ok=True) 13 14 #フォルダ内の画像をリスト化 15 arr.extend(glob.glob(org_dir + "/*.png")) 16 return org_dir,fld_dir 17 18def open_folder(): 19 org_dir = e1.get() 20 if org_dir is None: 21 folder_path = 'C:' 22 23 else: 24 folder_path = org_dir 25 26 folder_path = tk.filedialog.askdirectory(initialdir = folder_path) 27 e1.insert(tk.END,folder_path) 28 29def emboss(): 30 org_dir,fld_dir = pass_set('emb') 31 label=label9 32 def invert(pixel): 33 return 1 - pixel 34 for i in arr: 35 img=cv2.imread(i,0) 36 img = img / 255 37 img = np.array([invert(a) for a in img]) 38 dx = e8.get() 39 dy = e9.get() 40 M = np.float32([[1,0,dx],[0,1,dy]]) 41 rownum,colnum = img.shape[:2] 42 img2 = cv2.warpAffine(img, M,(colnum,rownum)) 43 add = img + img2 44 emboss = add - 1/2 45 img_emboss = emboss.clip(0,1) 46 filename=os.path.basename(i) 47 cv2.imshow("emboss",img_emboss) 48 cv2.waitKey() 49 cv2.destroyAllWindows() 50 cv2.imwrite(org_dir+'/emboss'+'/emboss'+filename,img_emboss) 51 52win=tk.Tk() 53win.title("画像変換") 54win.minsize(400,400) 55 56#入力boxの生成 57 58e8=tk.Entry(win,width=30) 59e8.place(x=125,y=240) 60e9=tk.Entry(win,width=30) 61e9.place(x=125,y=290) 62 63 64#ラベルの生成 65 66label8=tk.Label(win,text="エンボス効果(x)\n(-3- 3)",bg="white") 67label8.place(x=5,y=240) 68label9=tk.Label(win,text="エンボス効果(y)\n(-3- 3)",bg="white") 69label9.place(x=5,y=290) 70 71#ボタンの作成 72 73btn8=tk.Button(win,text="実行",command=lambda:emboss()) 74btn8.place(x=325,y=290) 75win.mainloop() 76 77

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki23

2020/12/18 01:30

ソースコードは一部分だけ貼るのではなく、回答者が動かせるように全体を貼ってください
jbpb0

2020/12/18 01:33

arr, e8, e9 って、何ですか?
ken248

2020/12/18 01:36

情報不足で申し訳ございません。全体像追記しました。 arrはフォルダ内の画像を呼び込むリスト e8,e9はエンボス変換時の画像のピクセルの移動距離です。 よろしくお願いいたします。
guest

回答1

0

ベストアンサー

投稿2020/12/18 01:47

編集2020/12/18 09:50
jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ken248

2020/12/18 01:52

検索不足で申し訳ございません ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問