用python將圖片轉換成二值圖像


大創項目是圖像識別,第一個任務是將一個圖片轉換成二值圖像
在這里插入圖片描述
之前用過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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM