大創項目是圖像識別,第一個任務是將一個圖片轉換成二值圖像
之前用過python的numpy和turtle,這次要用到圖像庫PIL的類Image,也算是剛剛從零開始學起
整體效果(用01串表示圖像)
原理很簡單:將圖片中黑色部分用0,其余部分用1
詳細過程:
先讀取照片,獲取圖片的像素,然后對像素進行縮放,再對縮放后的照片黑白(如果原本是彩色圖)。
然后一次獲取圖像中每一點像素的RGB顏色值,若為黑色則將該像素替換為0,其余為1
用一個字符串存儲,最后按照指定長寬輸出
用到的工具:
im.getpixel((j, i))
#getpixel是獲取圖像中某一點像素的RGB顏色值
im = im.resize((width, height))
#resize修改圖片尺寸
im = im.convert(‘1’)
#用於不同模式圖像之間的轉換
其中1為獲得二值圖像
模式L為灰色圖像
我們用原圖像的長寬乘以常數(代碼中用SCALE)來實現縮放
from PIL import Image
SCALE = 0.3
#等比例縮放
def get_char(pixel, blank_char='0', fill_char='1'):
if pixel == 0:
return blank_char
else:
return fill_char
im = Image.open(r"ma.jpg")
size = im.size
#獲取圖片的像素
#size[0]*size[1] 橫寬像素
width, height = int(size[0] * SCALE), int(size[1] * SCALE)
im = im.resize((width, height))#修改圖片尺寸
im = im.convert('1')#獲得二值圖像
txt = ""
for i in range(height):
for j in range(width):
txt += get_char(im.getpixel((j, i)))#getpixel是獲取圖像中某一點像素的RGB顏色值
txt += '\n'
#print(txt)
f = open(r'gou.txt', 'w')
print(txt, file=f)
f.close()