用Python寫一個圖片標註工具
程式補充庫
# tkinter
$ sudo apt intall python-tk
# PIL (Python Image Library)
$ sudo apt-get install python-imaging
# 上面的命令如果不行的話
$ sudo apt-get install python-pil
# 需要安裝python-imaging-tk
$ sudo apt install python-imaging-tk
過程很重要
我們要實現一個點選輸入框就彈出資料夾選擇的介面,然後點選確定就把取到的檔案路徑顯示在文字框上面;
點選輸入框的方法沒有找到,為方便起見我們寫了一個按鈕專門用來調起系統資料夾;
import tkFileDialog
# 調取系統檔案選擇框
dirPath_ = tkFileDialog.askdirectory()
# 如果是選取檔案,則應該是
filePath_ = tkFileDialog.askopenfilename(title=u'choose file', initialdir=(os.path.expanduser("預設開啟路徑")))
# 文字框清除並重新填寫文字
entry.delete(0, END)
entry.insert(END, "要顯示的內容")
接下來我們要對選擇的路徑下的圖片進行操作,理論上這裡應該考慮多種圖片格式以增加程式健壯性,但是這裡我們不作擴充套件,這就涉及到了一種程式設計的思想,“增量式程式設計————羅馬不是一天建成的”(一本正經的胡說八道)。
雖然我們這裡不做其他圖片格式的考慮,但是我們需要給出提示,所以我們要進行某種警告來告訴我們的小白使用者,“你錯了!”;
import tkMessageBox
# 非常簡單,就一句話
tkMessageBox.showerror("Error!", message='究竟做錯了什麼')
路徑的問題解決之後,我們就要載入圖片了,這部分使用了github上的一部分程式碼,稍候我們慢慢講解;
from Tkinter import *
from PIL import Image, ImageTk
# load image
imagepath = image_path
pil_image = Image.open(imagepath)
# get the size of the image
#獲取影象的原始大小
global w0,h0
w0, h0 = pil_image.size
#縮放到指定大小
pil_image = pil_image.resize((DEST_SIZE[0], DEST_SIZE[1]), Image.ANTIALIAS)
self.tkimg = ImageTk.PhotoImage(pil_image)
self.mainPanel = Canvas(self.frame, cursor='tcross')
self.mainPanel.config(width = max(self.tkimg.width(), 400), height = max(self.tkimg.height(), 400))
self.mainPanel.create_image(0, 0, image = self.tkimg, anchor=NW)
到這裡,我們的圖片已經載入成功,下面我們要做的是標定,就是框出我們要標識的真實物品;
這裡順便說一下我們接下來的產品需求,我們的圖片是一組照片,照片內容是一個物體,我們在第一張照片上標定要tracking的物品,既而使用其他工具把接下來的其他圖片的該物品全部標定出來;
拉下來我們要做的是用框標定第一張圖片內容,並將所標定的資料記錄下來;
self.mainPanel.bind("<Button-1>", self.mouseClick)
def mouseClick(self, event, save=True):
print event.x, event.y
資料標計已完成,然後我們就到了本文最重要的部分,使用深度學習網路框架對圖片進行tracking,這裡我們選用的是py-MDNet,有關於該框架的論文可以看一下 這裡,
網路標定請看下節;
py-MDNet環境
Python2.7下安裝matplotlib
sudo apt-get build-dep python-matplotlib --fix-missing
git clone git://github.com/matplotlib/matplotlib.git
cd matplotlib
python -mpip install
# 說一下這裡的-mpip
pip install matplotlib==2.1.2 # (3.0.2)
我們在伺服器上使用scp命令進行檔案下載時,使用ipv6地址時需要注意ip位置需要轉義;
scp username@\[ipv6 host\]:/filepath localpath
py-MDNet過程
這部分內容略過,本篇主要講UI部分內容;說一下該網路主要做了一個影象的tracking工作,具體請見py-MDNet;
圖片標識還沒完
這篇就先寫到這吧,持續時間有點久,接下來內容後續另寫一篇進行補充。
相關文章
- 仿寫一個android圖片壓縮工具Android
- 圖片標註工具labelme安裝和使用
- 用Flask寫一個上傳圖片的APIFlaskAPI
- 用 python 寫一個自動化部署工具Python
- AI打遊戲-叄(標註圖片)AI遊戲
- 用python寫一個自動化盲註指令碼Python指令碼
- 我用Electron做了一個圖片上傳的工具——PicGoPicGo
- 一個簡單的圖片水印工具
- 手把手教你用node擼一個圖片壓縮工具
- 自媒體標題不會寫?用這個工具,一鍵生成爆文標題
- 手把手和你用原生JS寫一個迴圈播放圖片輪播JS
- 推薦一個去除圖片人物背景的工具RemovebgREM
- labelme標註後的圖片切成小圖和小jsonJSON
- java匯出圖片,拼接多個圖片, 拼接文字和圖片 到一個圖片檔案Java
- 面向Vue新人:使用Vue寫一個圖片輪播元件Vue元件
- 我用 Python 擼了一個 plist 圖集拆圖工具!附上github原始碼PythonGithub原始碼
- CSS背景圖片集中在同一個圖片CSS
- 寫一個Python指令碼刪除一個.py檔案的所有註釋Python指令碼
- 用 Laravel 寫了一個圖床網站Laravel圖床網站
- 用Python寫一個向資料庫填充資料的小工具Python資料庫
- 如何把圖片轉換成文字?轉換工具用哪個?
- 如何用Python讀取xml檔案後,裁剪標註圖片和擴容資料PythonXML
- python 開發一款圖片壓縮工具(四):上傳圖床Python圖床
- 【Python】批量給圖片增加水印工具Python
- 基於python的文字轉圖片工具Python
- 嘗試用python開發一款圖片壓縮工具1:嘗試 pillow庫Python
- 用Python寫一個帶圖形介面的檔案壓縮軟體Python
- Java 獲取Word批註所標記的文字和圖片Java
- 如何在macOS中啟用標記註釋工具Mac
- 一個強大圖片的選擇、裁剪工具—看這一個就夠用了
- python自我學習 二 爬一個圖片網站上Python網站
- CleanShot X:螢幕截圖、錄屏、滾動截圖、標註一個都不少
- 寫一個點選圖片進入瀏覽圖片介面的第三方庫思路
- 用Python寫一個像QQ可快捷鍵喚起區域截圖的應用Python
- 教你用 css 寫一個擬物化圖示CSS
- 用Python寫一個簡單的Web框架PythonWeb框架
- 百度地圖之標註一組地理座標地圖
- 用python來給圖片加水印Python