在cozmo python sdk中02_cozmo_face的示例01中,看到有這樣一段
image_settings = [(sdk_png, Image.BICUBIC),
(hello_png, Image.NEAREST)]
後面的Image.BICUBIC Image.NEAREST不知道是幹什麼用的,就找了一下資料。
簡單地說,是用來縮放圖片的。
這個函數屬於Python的PIL圖像處理庫的Image模塊,關於這個庫具體的介紹詳見博主 lyrichu的博客python PIL 圖像處理庫簡介(一),文中提到
- thumbnail(size,resample)(創建縮略圖)
>>> im.thumbnail((50,50),resample=Image.BICUBIC) >>> im.show()
上面的代碼可以創建一個指定大小(size)的縮略圖,需要注意的是,thumbnail方法是原地操作,返回值是None。第一個參數是指定的縮略圖的大小,第二個是採樣的,有
Image.BICUBIC
,PIL.Image.LANCZOS
,PIL.Image.BILINEAR
,PIL.Image.NEAREST
這四種採樣方法。默認是Image.BICUBIC
。
至於BICUBIC是什麼,又是什麼原理,和圖像縮放有什麼關係,我在博主nandina179的博文雙三次插值算法(bicubic interpolation)與圖形學和計算方法的關係中找到了比較詳盡的關於來歷的解釋。
雙三次插值算法(bicubic interpolation),將某個像素點向外拓展成16個像素點,然後通過這16個像素點和原像素點的某種影響關係決定這16個像素點,以實現圖像的縮放。
而PIL.Image.NEAREST是指縮放爲最低質量,在cozmo上的直觀體現就是e基本都被縮放成c了。
參考:
1.lyrichu,python PIL圖像處理庫簡介(一),https://www.cnblogs.com/lyrichu/p/9124504.html
2.nandina179,雙三次插值算法(bicubic interpolation)與圖形學和計算方法的關係,https://blog.csdn.net/nandina179/article/details/85330552
3.菜鳥不倒,圖像縮放之雙三次插值法,https://blog.csdn.net/qq_29058565/article/details/52769497