#?-*-?coding:utf-8?-*-??
成都創(chuàng)新互聯(lián)成立于2013年,先為建陽(yáng)等服務(wù)建站,建陽(yáng)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為建陽(yáng)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
#?file:?TkinterCanvas.py??
#??
import?Tkinter?????????#?導(dǎo)入Tkinter模塊??
from?PIL?import?Image,?ImageTk??
root?=?Tkinter.Tk()??
canvas?=?Tkinter.Canvas(root,??
width?=?500,??????#?指定Canvas組件的寬度??
height?=?600,??????#?指定Canvas組件的高度??
bg?=?'white')??????#?指定Canvas組件的背景色??
#im?=?Tkinter.PhotoImage(file='img.gif')?????#?使用PhotoImage打開(kāi)圖片??
image?=?Image.open("img.jpg")??
im?=?ImageTk.PhotoImage(image)??
canvas.create_image(300,50,image?=?im)??????#?使用create_image將圖片添加到Canvas組件中??
canvas.create_text(302,77,???????#?使用create_text方法在坐標(biāo)(302,77)處繪制文字??
text?=?'Use?Canvas'??????#?所繪制文字的內(nèi)容??
,fill?=?'gray')???????#?所繪制文字的顏色為灰色??
canvas.create_text(300,75,??
text?=?'Use?Canvas',??
fill?=?'blue')??
canvas.pack()?????????#?將Canvas添加到主窗口??
root.mainloop()
matplotlib讀取RGB圖片的時(shí)候,往往把圖片轉(zhuǎn)化為四通道圖片,其中第四個(gè)通道是α通道,可以決定圖像的透明度。
如果把圖片的前景的透明度設(shè)定為1,背景的透明度設(shè)定為0,那么就算去掉了背景了。
原圖。
代碼。
出圖。
有部分白色背景由于不夠白,被保留了下來(lái)。
換圖。
觀察可知,背景是深淺不一的藍(lán)色。
深色參數(shù)是a[0,0],淺色區(qū)域比較多,也不容易確定位置。
用如下代碼摳圖,太狠!
再修改代碼。
if a[i,j,2]1.5*a[i,j,0] and a[i,j,2]1.2*a[i,j,1]:
不準(zhǔn)摳去黑色部分。經(jīng)過(guò)逐步調(diào)整顏色閾值,得到下面的效果。
上面代碼如下。
(1)centralwidget:是給Mainwindow添加背景圖片
(2) lable 、combobox等是給各個(gè)控件添加背景圖片
(3)其中setStyleSheet()是添加圖片的函數(shù)。
Turtle庫(kù)是Python語(yǔ)言中一個(gè)很流行的繪制圖像的函數(shù)庫(kù),想象一個(gè)小烏龜,在一個(gè)橫軸為x、縱軸為y的坐標(biāo)系原點(diǎn),(0,0)位置開(kāi)始,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動(dòng),從而在它爬行的路徑上繪制了圖形。
畫(huà)布就是turtle為我們展開(kāi)用于繪圖區(qū)域,我們可以設(shè)置它的大小和初始位置。
設(shè)置畫(huà)布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),參數(shù)分別為畫(huà)布的寬(單位像素), 高, 背景顏色。
如:turtle.screensize(800,600, "green")
turtle.screensize() #返回默認(rèn)大小(400, 300)
turtle.setup(width=0.5, height=0.75, startx=None, starty=None),參數(shù):width, height: 輸入寬和高為整數(shù)時(shí), 表示像素; 為小數(shù)時(shí), 表示占據(jù)電腦屏幕的比例,(startx, starty): 這一坐標(biāo)表示矩形窗口左上角頂點(diǎn)的位置, 如果為空,則窗口位于屏幕中心。
如:turtle.setup(width=0.6,height=0.6)
turtle.setup(width=800,height=800, startx=100, starty=100)
2.1 畫(huà)筆的狀態(tài)
在畫(huà)布上,默認(rèn)有一個(gè)坐標(biāo)原點(diǎn)為畫(huà)布中心的坐標(biāo)軸,坐標(biāo)原點(diǎn)上有一只面朝x軸正方向小烏龜。這里我們描述小烏龜時(shí)使用了兩個(gè)詞語(yǔ):坐標(biāo)原點(diǎn)(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫(huà)筆)的狀態(tài)。
2.2 畫(huà)筆的屬性
畫(huà)筆(畫(huà)筆的屬性,顏色、畫(huà)線的寬度等)
1) turtle.pensize():設(shè)置畫(huà)筆的寬度;
2) turtle.pencolor():沒(méi)有參數(shù)傳入,返回當(dāng)前畫(huà)筆顏色,傳入?yún)?shù)設(shè)置畫(huà)筆顏色,可以是字符串如"green", "red",也可以是RGB 3元組。
3) turtle.speed(speed):設(shè)置畫(huà)筆移動(dòng)速度,畫(huà)筆繪制的速度范圍[0,10]整數(shù),數(shù)字越大越快。
2.3 繪圖命令
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運(yùn)動(dòng)命令,一種為畫(huà)筆控制命令,還有一種是全局控制命令。
(1) 畫(huà)筆運(yùn)動(dòng)命令
(2) 畫(huà)筆控制命令
(3) 全局控制命令
(4) 其他命令
3. 命令詳解
3.1 turtle.circle(radius, extent=None, steps=None)
描述:以給定半徑畫(huà)圓
參數(shù):
radius(半徑):半徑為正(負(fù)),表示圓心在畫(huà)筆的左邊(右邊)畫(huà)圓;
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內(nèi)切正多邊形,多邊形邊數(shù)為steps)。
舉例:
circle(50) # 整圓;
circle(50,steps=3) # 三角形;
circle(120, 180) # 半圓
實(shí)例:
1、太陽(yáng)花
2、五角星
3、時(shí)鐘程序
這個(gè)問(wèn)題跟image registration很相似 ,其實(shí)就是假設(shè)圖像A和圖像B之間存在一個(gè)平移(以及旋轉(zhuǎn))關(guān)系 ,使得平移后A和B重合的部分差別最小。
具體到這個(gè)問(wèn)題, 只需要將源圖像A和目標(biāo)圖像B都設(shè)成輸入圖像, 然后計(jì)算圖像差的時(shí)候 。算平移后A和B重合的部分就可以了, 這樣可以算出來(lái)一個(gè)平移向量, 有了平移向量之后, 在輸入圖像上面任意一點(diǎn)開(kāi)始 ,這個(gè)點(diǎn)和他自身加上平移向量得到的點(diǎn)所圍成的矩形一定是重復(fù)單元。
至于要最小重復(fù)單元, 只需要找到最短的平移向量就可以了, 不過(guò)需要去掉平凡解(零向量)。
以前看過(guò)image registration的東西有個(gè)快速的方法可以做到這一點(diǎn)。
先將源圖片和目標(biāo)圖片降采樣幾次, 得到圖像金字塔 先對(duì)金字塔頂端圖片上尋找最佳匹配。 然后將最佳匹配對(duì)應(yīng)的平移旋轉(zhuǎn)參數(shù)作為初始估計(jì), 再在下一層級(jí)的圖像上再次估計(jì) 直到最后在原圖像上估計(jì)。