如何用Python幫你打碼-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何用Python幫你打碼,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),平定企業(yè)網(wǎng)站建設(shè),平定品牌網(wǎng)站建設(shè),網(wǎng)站定制,平定網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,平定網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

引言

所謂的像素圖,就是對(duì)圖像做一個(gè)顆?;男Ч?,使其產(chǎn)生一種妙不可言的朦朧感。費(fèi)話不多說(shuō),先來(lái)看一張效果圖。

如何用Python幫你打碼

如何用Python幫你打碼

怎么樣,效果還不錯(cuò)吧?現(xiàn)在,我們用Python來(lái)實(shí)現(xiàn)這種像素化的效果。

1 環(huán)境

  • 操作系統(tǒng):Windows

  • Python版本:3.7.3

2 需求分析

一個(gè)最簡(jiǎn)單的實(shí)現(xiàn)思路,在打開(kāi)圖片后,把圖片分割成一些像素塊,再對(duì)這些像素塊中的圖像信息進(jìn)行處理(修改圖像中的RGB值)即可。

這里我們使用Numpy庫(kù)和PIL庫(kù)來(lái)實(shí)現(xiàn)這個(gè)需求,后者用來(lái)圖像的讀取與保存,涉及到的所有圖像處理動(dòng)作均借助Numpy來(lái)實(shí)現(xiàn)。

有關(guān)NumPy模塊、PIL模塊的介紹,可參考如下。

NumPy(Numerical Python) 是 Python 語(yǔ)言的一個(gè)擴(kuò)展程序庫(kù),支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。

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

這兩個(gè)模塊非Python內(nèi)置,都屬于第三方模塊,可直接采用如下方式進(jìn)行安裝。

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

3 代碼實(shí)現(xiàn)

首先導(dǎo)入我們要用到的模塊

import numpy as np
from PIL import Image

接下來(lái),我們要處理圖片,首先得打開(kāi)一張圖片,如下

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

然后把圖像轉(zhuǎn)換化Numpy數(shù)組進(jìn)行下一步的處理

im1 = np.array(data)

這里處理的核心思想,也很簡(jiǎn)單,主要通過(guò)中間值的RGB,對(duì)所選范圍塊的RGB進(jìn)行重新賦值。

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

這里的x、y是分別指的我們圖像的橫向、縱向像素點(diǎn)的坐標(biāo)值、而pixel指的是我們要以多大的像素塊,來(lái)處理這張圖像,我們?cè)O(shè)置的單位像素塊(Pixel數(shù)值)越小,生成的像素圖越精確。

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

我們需要圖像的指定一個(gè)處理范圍,并對(duì)該范圍內(nèi)的每一個(gè)坐標(biāo)(像素)點(diǎn)進(jìn)行像素化的處理。

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

在處理完成之后,我們?cè)侔袾umpy數(shù)組轉(zhuǎn)換回圖像。

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: 處理的起始坐標(biāo)(像素)點(diǎn),元組形式

:param End_coordinate: 處理的終止坐標(biāo)(像素)點(diǎn),元組形式

:return:

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

'''

# 讀取圖片,并由 PIL image 轉(zhuǎn)換為 NumPy array

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

# 遍歷所要處理范圍內(nèi)的所有坐標(biāo)(像素)點(diǎn)

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

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

# 通過(guò)中間值的RGB,對(duì)所選范圍塊的RGB進(jìn)行重新賦值

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

# 將NumPy array 轉(zhuǎn)換為 PIL image

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

# 展示處理后的圖像

im2.show()

if __name__ == '__main__':

# 設(shè)置好要處理的像素范圍,并以多大的像素塊來(lái)生成最終效果圖

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

使用了PIL加上Numpy的配合,短短幾行代碼實(shí)現(xiàn)了圖像像素化的處理。當(dāng)然這只是一種簡(jiǎn)單地實(shí)現(xiàn),要想實(shí)現(xiàn)更豐富的處理效果,還可以借助CV2來(lái)實(shí)現(xiàn)。

上述就是小編為大家分享的如何用Python幫你打碼了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

名稱欄目:如何用Python幫你打碼-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article36/dcpgsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、服務(wù)器托管、做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化