##前提・実現したいこと
pythonのtkinterを使用して画像の絶対値パスを取得し、その絶対値パスを使用してopenCVにて画像を表示させたい。
##発生している問題・エラーメッセージ
Exception in Tkinter callback
Traceback (most recent call last):
File "/Users/name/opt/anaconda3/lib/python3.7/tkinter/init.py", line 1705, in call
return self.func(*args)
File "/Users/name/pyworks/test.py", line 12, in btn_click
plt.imshow(img,cmap="gray")
File "/Users/name/opt/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 2730, in imshow
**kwargs)
File "/Users/name/opt/anaconda3/lib/python3.7/site-packages/matplotlib/init.py", line 1438, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File "/Users/name/opt/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_axes.py", line 5523, in imshow
im.set_data(X)
File "/Users/name/opt/anaconda3/lib/python3.7/site-packages/matplotlib/image.py", line 701, in set_data
"float".format(self._A.dtype))
TypeError: Image data of dtype object cannot be converted to float
##自分で調べたことや試したこと
tkinterで取得した絶対パスではなく、自分で入力したパス(ct = cv2.imread('/Users/name/pyworks/test.png',cv2.IMREAD_UNCHANGED)ではエラーメッセージは出ないが、画像が表示されない。
##使っているツールのバージョンなど補足情報
Mac_OS_10.15.7、python3.7.9、VSCode1.53.0使用
##該当のソースコード
python
1import os,sys 2import cv2 3import matplotlib.pyplot as plt 4from tkinter import * 5from tkinter import ttk 6from tkinter import filedialog 7 8def btn_click(): 9 imgpath = filename.get() 10 img = cv2.imread('imgpath',cv2.IMREAD_UNCHANGED) 11 plt.subplot(1,1,1) 12 plt.imshow(img,cmap="gray") 13 cv2.waitKey(0) 14 cv2.destroyAllWindows() 15 16def dirdialog_clicked(): 17 idir = os.path.abspath(os.path.dirname(__file__)) 18 filepath = filedialog.askopenfilename(initialdir = idir) 19 filename.set(filepath) 20 21root = Tk() 22root.title("サンプル") 23 24frame1 = ttk.Frame(root, padding=10) 25frame1.grid(row=0, column=1, sticky=E) 26 27IDirLabel = ttk.Label(frame1, text="ファイル参照>>", padding=(5, 2)) 28IDirLabel.pack(side=LEFT) 29 30 # [ファイル参照」エントリーの作成 31filename = StringVar() 32IDirEntry = ttk.Entry(frame1, textvariable=filename, width=30) 33IDirEntry.pack(side=LEFT) 34 35# 「ファイル参照」ボタンの作成 36IDirButton = ttk.Button(frame1, text="参照", command=dirdialog_clicked) 37IDirButton.pack(side=LEFT) 38 39frame2 = ttk.Frame(root, padding=10) 40frame2.grid(row=5,column=1,sticky=W) 41 42# 実行ボタンの設置 43button1 = ttk.Button(frame2, text="実行", command=btn_click) 44button1.pack(fill = "x", padx=30, side = "left") 45 46# キャンセルボタンの設置 47button2 = ttk.Button(frame2, text=("閉じる"), command=quit) 48button2.pack(fill = "x", padx=30, side = "left") 49 50root.mainloop() 51
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/09 21:37