將影像讀取出來,並且顯示所有的pixel值。
from PIL import Image bmp_image = Image.open( 'sample.bmp' ) for i_vertical in range(bmp_image.height): line_horizon = [bmp_image.getpixel((i_horizon, i_vertical)) for i_horizon in range(bmp_image.width) ] print(*line_horizon) bmp_image.close()
實測的結果,灰階的照片,沒有資料的會是 255,有線條的白色的是 0。
而Image對象自身有一些方法可以得到圖像一些基本信息以及每個點的像素信息。
- im.save(‘test.jpg’, ‘jpeg’) 保存到文件,第二個參數為格式
- im.show() 顯示圖像,會啓動一個新窗口
- im.size (這是屬性不是方法)得到圖像的大小,返回值為tuple
- im = im.convert(‘L’) 色彩空間的轉換,支持RGB、CMYK等常見空間,注意這個函數不是就地的結果保存在返回值里
- im.colors() 很有用的方法,返回顏色統計列表(count, color),可以判斷圖像中的色彩分布
- im.hist() 直方圖,與colors方法類似,但直接返回的是每個像素的直方高度
- im.getpixel((x, y)) 得到某個像素點的顏色,一般返回(r, g, b)
- im.putpixel((x, y), color) 設置某個像素點的顏色,這個操作是就地的
後來改用 OpenCV:
處理圖片中的多角形
https://stackoverflow.max-everyday.com/2020/04/get-pixel-values-inside-of-a-rectangle-within-an-image/