91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python幫你打碼

發布時間:2021-10-25 19:19:01 來源:億速云 閱讀:216 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關如何用Python幫你打碼,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

引言

所謂的像素圖,就是對圖像做一個顆粒化的效果,使其產生一種妙不可言的朦朧感。費話不多說,先來看一張效果圖。

如何用Python幫你打碼

如何用Python幫你打碼

怎么樣,效果還不錯吧?現在,我們用Python來實現這種像素化的效果。

1 環境

  • 操作系統:Windows

  • Python版本:3.7.3

2 需求分析

一個最簡單的實現思路,在打開圖片后,把圖片分割成一些像素塊,再對這些像素塊中的圖像信息進行處理(修改圖像中的RGB值)即可。

這里我們使用Numpy庫和PIL庫來實現這個需求,后者用來圖像的讀取與保存,涉及到的所有圖像處理動作均借助Numpy來實現。

有關NumPy模塊、PIL模塊的介紹,可參考如下。

NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。

PIL(Python Imaging Library)是Python常用的圖像處理庫,而Pillow是PIL的一個友好Fork,提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。

這兩個模塊非Python內置,都屬于第三方模塊,可直接采用如下方式進行安裝。

pip install numpy
pip install Pillow
注意,要想使用PIL模塊,是需要直接install Pillow模塊的。

3 代碼實現

首先導入我們要用到的模塊

import numpy as np
from PIL import Image

接下來,我們要處理圖片,首先得打開一張圖片,如下

data = Image.open("P:\Personal\LuoShen.xpg")

然后把圖像轉換化Numpy數組進行下一步的處理

im1 = np.array(data)

這里處理的核心思想,也很簡單,主要通過中間值的RGB,對所選范圍塊的RGB進行重新賦值。

im1[y:y + pixel, x:x + pixel] = im1[y + (pixel // 2)][x + (pixel // 2)]

這里的x、y是分別指的我們圖像的橫向、縱向像素點的坐標值、而pixel指的是我們要以多大的像素塊,來處理這張圖像,我們設置的單位像素塊(Pixel數值)越小,生成的像素圖越精確。

當然了,若單位像素塊設置的太小,生成圖像就看不出效果了,至于多大的數值合適,需要自行嘗試。不同尺寸的圖像,要達到最佳的像素化的顯示效果,所需要設置的單位像素塊的大小也是不同的,實踐出真知。

我們需要圖像的指定一個處理范圍,并對該范圍內的每一個坐標(像素)點進行像素化的處理。

for y in range(Start_coordinate[1], End_coordinate[1], pixel):
 for x in range(Start_coordinate[0], End_coordinate[0], pixel):
 pass

在處理完成之后,我們再把Numpy數組轉換回圖像。

im2 = Image.fromarray(im1.astype(np.uint8))

最后展示出處理后的圖像

im2.show()

4 代碼全景展示

import numpy as np

from PIL import Image

def to_pixelBlock(pixel, Start_coordinate, End_coordinate):

'''

:param pixel: 單位像素塊的元素大小

:param Start_coordinate: 處理的起始坐標(像素)點,元組形式

:param End_coordinate: 處理的終止坐標(像素)點,元組形式

:return:

通過中間值的RGB,對所選范圍塊的RGB進行重新賦值,設置的單位像素塊(Pixel數值)越小,生成的像素圖越精確

'''

# 讀取圖片,并由 PIL image 轉換為 NumPy array

im1 = np.array(Image.open("P:\Personal\LuoShen.jpg"))

# 遍歷所要處理范圍內的所有坐標(像素)點

for y in range(Start_coordinate[1], End_coordinate[1], pixel):

for x in range(Start_coordinate[0], End_coordinate[0], pixel):

# 通過中間值的RGB,對所選范圍塊的RGB進行重新賦值

im1[y:y + pixel, x:x + pixel] = im1[y + (pixel // 2)][x + (pixel // 2)]

# 將NumPy array 轉換為 PIL image

im2 = Image.fromarray(im1.astype(np.uint8))

# 展示處理后的圖像

im2.show()

if __name__ == '__main__':

# 設置好要處理的像素范圍,并以多大的像素塊來生成最終效果圖

to_pixelBlock(10, (0, 0), (1280, 800)


使用了PIL加上Numpy的配合,短短幾行代碼實現了圖像像素化的處理。當然這只是一種簡單地實現,要想實現更豐富的處理效果,還可以借助CV2來實現。

上述就是小編為大家分享的如何用Python幫你打碼了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台山市| 成安县| 商都县| 会理县| 甘孜县| 天祝| 临邑县| 电白县| 玉环县| 民县| 南投市| 洛南县| 盘锦市| 阿巴嘎旗| 南部县| 商都县| 筠连县| 墨竹工卡县| 安乡县| 喀什市| 台东县| 宜兰市| 襄樊市| 将乐县| 宣城市| 东至县| 乌兰浩特市| 东台市| 建瓯市| 和平区| 和静县| 开平市| 介休市| 义马市| 鄂尔多斯市| 离岛区| 宁明县| 繁峙县| 古浪县| 元氏县| 灵宝市|