Python 實(shí)現(xiàn)字符識別—Part2

如果你看的比較困惑的話摧玫,可以參考
Python 實(shí)現(xiàn)字符識別—Part1:關(guān)于PIL庫的使用
http://www.reibang.com/p/0a94d8ea2bf3
Python 實(shí)現(xiàn)字符識別—Part2:關(guān)于圖形格式的基礎(chǔ)知識和我的一個(gè)問題(歡迎大神來指點(diǎn)迷津)
http://www.reibang.com/p/252ff113d1d0
Python 實(shí)現(xiàn)字符識別—Part3:關(guān)于完成驗(yàn)證碼識別的前置操作光涂,字符的提取和圖像的分割
http://www.reibang.com/p/4ff1559c1cf6
Python 實(shí)現(xiàn)字符識別—Part4 : 關(guān)于空間向量搜索算法paper的介紹
http://www.reibang.com/p/b13b3905cc7d
Python 實(shí)現(xiàn)字符識別—Part5:關(guān)于使用空間向量搜索算法實(shí)現(xiàn)字符識別
http://www.reibang.com/p/1905bf78f0bd

這一部分想寫圖像的模式,和模式之間的相互轉(zhuǎn)換赂蕴。

關(guān)于PIL創(chuàng)建圖片的模式有很多種宝磨。PIL創(chuàng)建圖片有很多模式缘眶,比如下面這個(gè),是P束莫。

#創(chuàng)建pic2
#以一個(gè)像素8bit的懒棉,大小是Im.size  背景顏色是255 白色
im2=Image.new("P",im.size,255)

但有的時(shí)候,也可能是這樣

image = Image.new('RGB', (width, height), (255, 255, 255))

問題是這個(gè)P 和RGB 指的是什么览绿?

image.png

1策严、模式“1”
模式“1”為二值圖像,非黑即白饿敲。但是它每個(gè)像素用8個(gè)bit表示享钞,0表示黑,255表示白诀蓉。將lena圖像轉(zhuǎn)換為“1”圖像栗竖。


image.png
>>>from PIL import Image
>>> lena =Image.open("D:\\Code\\Python\\test\\img\\lena.jpg")
>>> lena.mode
'RGB'
>>> lena.getpixel((0,0))
(197, 111, 78)
>>> lena_1 = lena.convert("1")
>>> lena_1.mode
'1'
>>> lena_1.size 
(512, 512)
>>>lena_1.getpixel((0,0))
255
>>> lena_1.getpixel((10,10))
255
>>>lena_1.getpixel((10,120))
0
>>>lena_1.getpixel((130,120))
255

2、模式“L”
模式L”為灰色圖像渠啤,它的每個(gè)像素用8個(gè)bit表示狐肢,0表示黑,255表示白沥曹,其他數(shù)字表示不同的灰度份名。在PIL中,從模式“RGB”轉(zhuǎn)換為“L”模式是按照下面的公式轉(zhuǎn)換的:
L = R * 299/1000 + G * 587/1000+ B * 114/1000


image.png
>>> from PIL importImage
>>> lena = Image.open("D:\\Code\\Python\\test\\img\\lena.jpg")
>>> lena.mode
'RGB'
>>> lena.getpixel((0,0))
(197, 111, 78)
>>> lena_L =lena.convert("L")
>>> lena_L.mode
'L'
>>> lena_L.size
(512, 512)
>>>lena.getpixel((0,0))
(197, 111, 78)
>>>lena_L.getpixel((0,0))
132

3妓美、模式“P”
模式“P”為8位彩色圖像僵腺,它的每個(gè)像素用8個(gè)bit表示,其對應(yīng)的彩色值是按照調(diào)色板查詢出來的壶栋。下面我們使用默認(rèn)的調(diào)色板將lena圖像轉(zhuǎn)換為“P”圖像辰如。

image.png
>>> from PIL importImage
>>> lena = Image.open("D:\\Code\\Python\\test\\img\\lena.jpg")
>>> lena.mode
'RGB'
>>> lena.getpixel((0,0))
(197, 111, 78)
>>> lena_P =lena.convert("P")
>>> lena_P.mode
'P'
>>>lena_P.getpixel((0,0))
62

除了這個(gè),其他的還有PIL還有其他的模式贵试,RGB琉兜,RGBA,CMYK毙玻,YCbCr豌蟋,I,F(xiàn)桑滩∥嗥#總共九種模式。

概括一下,就是這樣:

捕獲.JPG

使用PIL庫幌氮,可以很方便的創(chuàng)建一個(gè)任意模式下的圖片缭受。

from PIL import Image
#創(chuàng)建一個(gè)rgb模式的圖片,大小是200*200浩销,顏色是(100,100听哭,150)
im_RGB=Image.new("RGB",(200,200),(100,100,150))
im_RGB.show()
print im_RGB.mode
from PIL import Image
#創(chuàng)建一個(gè)P模式的圖片慢洋,背景顏色是212 
im_P=Image.new("P",(im.size),212)
im_P.show()
print im_P.mode
#打印出來分布的直方圖
print im_P.histogram()
#模式之間的轉(zhuǎn)換
im=Image.open('captcha.gif')
#(將圖片轉(zhuǎn)換為8位像素模式)
im.convert("P")

<br />

這里我遇到了一個(gè)問題

就是RGB模式向P模式的轉(zhuǎn)換,這個(gè)問題現(xiàn)在還沒有解決陆盘。關(guān)于p模式普筹,p模式是8bit一個(gè)像素的彩色圖。用8bit實(shí)現(xiàn)彩色圖的是基于調(diào)色板的原理隘马。

現(xiàn)在做一個(gè)測試太防,打開一張RGB模式的jpg圖片,然后將它轉(zhuǎn)換位P模式的圖片,記為im酸员。
如果這個(gè)時(shí)候蜒车,print 轉(zhuǎn)換后的圖片的每一個(gè)像素,結(jié)果居然是一個(gè)8bit3的數(shù)據(jù)結(jié)構(gòu)幔嗦。D鹄ⅰ!邀泉!*(這個(gè)我不知道是為什么)嬉挡。print出來的結(jié)果是如下圖這樣的。

image.png

然后汇恤,我創(chuàng)建一個(gè)p模式的圖片im_p庞钢,把im的每一個(gè)像素都出來,保存到im_P因谎。偽代碼如下:

#test1
 pix=im.getpixel((x,y))
#這樣就報(bào)錯(cuò)了基括,原因還是,解釋器認(rèn)為pix是一個(gè) 類似與(255财岔,255阱穗,255)的list,而不是一個(gè)0~255之內(nèi)的數(shù)字
 im_P.putpixel((x,y),pix)   

----分割線------
#test2 于是我嘗試第二種寫法
pix=im.getpixel((x,y))
#print pix
xx=pix[0]
yy=pix[1]
zz=pix[2]
# print xx,yy,zz
#但是下面這一句依然報(bào)錯(cuò)使鹅,理由和上面一樣
im_P.putpixel((x,y),(xx,yy,zz))

----分割線------
#test3 于是我嘗試第三種寫法
pix=im.getpixel((x,y))
#print pix
xx=pix[0]
yy=pix[1]
zz=pix[2]
# print xx,yy,zz
#終于不報(bào)錯(cuò)了揪阶,但是這樣其實(shí)相當(dāng)于丟失了 G,B的分量
im_P.putpixel((x,y),(xx))

所以,概括一下這個(gè)問題患朱,就是創(chuàng)建一個(gè)p模式的圖片鲁僚,每個(gè)像素是8bit的彩色圖。但是如果將一個(gè)rgb模式的圖片,轉(zhuǎn)換為p模式冰沙,每個(gè)像素就是8bit*3侨艾。

我現(xiàn)在懷疑,這個(gè)問題拓挥,可能有兩點(diǎn)原因:

  1. convert函數(shù) 轉(zhuǎn)換的機(jī)制問題
  2. p模式的調(diào)色板的機(jī)制

歡迎大神施以援手唠梨,求救。

下面是源碼侥啤,分析大神來分析

#coding:utf-8
from PIL import Image
im=Image.open('1111.jpg')
print im.mode

im.convert("P")
im.show()
#print im.histogram()
#print im.size[0],im.size[1]

im_P=Image.new("P",(im.size),220)
im_P.show()
print im_P.mode

for x in  range(im.size[0]):
    for y in range(im.size[1]): 
        pix=im.getpixel((x,y))
        #print pix
        xx=pix[0]
        yy=pix[1]
        zz=pix[2]
       # print xx,yy,zz
        im_P.putpixel((x,y),xx)
im_P.show()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末当叭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盖灸,更是在濱河造成了極大的恐慌蚁鳖,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赁炎,死亡現(xiàn)場離奇詭異醉箕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)徙垫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門讥裤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姻报,你說我怎么就攤上這事坞琴。” “怎么了逗抑?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵剧辐,是天一觀的道長。 經(jīng)常有香客問我邮府,道長荧关,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任褂傀,我火速辦了婚禮忍啤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仙辟。我一直安慰自己同波,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布叠国。 她就那樣靜靜地躺著未檩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粟焊。 梳的紋絲不亂的頭發(fā)上冤狡,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天孙蒙,我揣著相機(jī)與錄音,去河邊找鬼悲雳。 笑死挎峦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的合瓢。 我是一名探鬼主播坦胶,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晴楔!你這毒婦竟也來了顿苇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滥崩,失蹤者是張志新(化名)和其女友劉穎愈案,沒想到半個(gè)月后逆屡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卖词,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拆火,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年牡整,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了每辟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岩四。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡礼殊,死狀恐怖才菠,靈堂內(nèi)的尸體忽然破棺而出茸时,到底是詐尸還是另有隱情,我是刑警寧澤赋访,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布可都,位于F島的核電站,受9級特大地震影響蚓耽,放射性物質(zhì)發(fā)生泄漏渠牲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一步悠、第九天 我趴在偏房一處隱蔽的房頂上張望签杈。 院中可真熱鬧,春花似錦鼎兽、人聲如沸答姥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹦付。三九已至,卻和暖如春择卦,著一層夾襖步出監(jiān)牢的瞬間睁壁,已是汗流浹背背苦。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留潘明,地道東北人行剂。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像钳降,于是被迫代替她去往敵國和親厚宰。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容