python opencv工具作業:使用tkinter展示邊緣檢測
摘要:
opencv工具作業:使用tkinter展示邊緣檢測
圖片.png
圖片.png
圖片.png
圖片.png
參考...
opencv工具作業:使用tkinter展示邊緣檢測

圖片.png

圖片.png

圖片.png

圖片.png
參考資料
- ofollow,noindex">本文最新版本地址
- 本文涉及的python測試開發庫 謝謝點贊!
- 本文相關海量書籍下載
程式碼
#!/usr/bin/python3 # -*- coding: utf-8 -*- # 技術支援:https://www.jianshu.com/u/69f40328d4f0 # 技術支援 https://china-testing.github.io/ # https://github.com/china-testing/python-api-tesing/blob/master/practices/cv/cv1.py # 專案實戰討論QQ群630011153 144081101 # CreateDate: 2018-12-04 # import the necessary packages from tkinter import * from PIL import Image from PIL import ImageTk from tkinter import filedialog import cv2 def select_image(): # grab a reference to the image panels global panelA, panelB # open a file chooser dialog and allow the user to select an input # image path = filedialog.askopenfilename() # ensure a file path was selected if len(path) > 0: # load the image from disk, convert it to grayscale, and detect # edges in it image = cv2.imread(path) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) edged = cv2.Canny(gray, 50, 100) # OpenCV represents images in BGR order; however PIL represents # images in RGB order, so we need to swap the channels image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # convert the images to PIL format... image = Image.fromarray(image) edged = Image.fromarray(edged) # ...and then to ImageTk format image = ImageTk.PhotoImage(image) edged = ImageTk.PhotoImage(edged) # if the panels are None, initialize them if panelA is None or panelB is None: # the first panel will store our original image panelA = Label(image=image) panelA.image = image panelA.pack(side="left", padx=10, pady=10) # while the second panel will store the edge map panelB = Label(image=edged) panelB.image = edged panelB.pack(side="right", padx=10, pady=10) # otherwise, update the image panels else: # update the pannels panelA.configure(image=image) panelB.configure(image=edged) panelA.image = image panelB.image = edged # initialize the window toolkit along with the two image panels root = Tk() panelA = None panelB = None root.title("opencv 邊緣檢測演示") # create a button, then when pressed, will trigger a file chooser # dialog and allow the user to select an input image; then add the # button the GUI btn = Button(root, text="選擇圖片", command=select_image) btn.pack(side="bottom", fill="both", expand="yes", padx="100", pady="100") # kick off the GUI root.mainloop()