❶ 怎麼用python將圖片轉換為文本形式
給你推薦一個博客你看一下吧,裡面有轉換的完整代碼和解釋
python 識別登陸驗證碼圖片(完整代碼)
❷ 怎麼用python顯示一張圖片
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 這兩個庫操作圖片。本人偏愛 matpoltlib,因為它的語法更像 matlab。
一、matplotlib
1. 顯示圖片
復制代碼
import matplotlib.pyplot as plt # plt 用於顯示圖片
import matplotlib.image as mpimg # mpimg 用於讀取圖片
import numpy as np
lena = mpimg.imread('lena.png') # 讀取和代碼處於同一目錄下的 lena.png
# 此時 lena 就已經是一個 np.array 了,可以對它進行任意處理
lena.shape #(512, 512, 3)
plt.imshow(lena) # 顯示圖片
plt.axis('off') # 不顯示坐標軸
plt.show()
復制代碼
2. 顯示某個通道
復制代碼
# 顯示圖片的第一個通道
lena_1 = lena[:,:,0]
plt.imshow('lena_1')
plt.show()
# 此時會發現顯示的是熱量圖,不是我們預想的灰度圖,可以添加 cmap 參數,有如下幾種添加方法:
plt.imshow('lena_1', cmap='Greys_r')
plt.show()
img = plt.imshow('lena_1')
img.set_cmap('gray') # 'hot' 是熱量圖
plt.show()
復制代碼
3. 將 RGB 轉為灰度圖
matplotlib 中沒有合適的函數可以將 RGB 圖轉換為灰度圖,可以根據公式自定義一個:
復制代碼
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
gray = rgb2gray(lena)
# 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))
plt.imshow(gray, cmap='Greys_r')
plt.axis('off')
plt.show()
復制代碼
4. 對圖像進行放縮
這里要用到 scipy
復制代碼
from scipy import misc
lena_new_sz = misc.imresize(lena, 0.5) # 第二個參數如果是整數,則為百分比,如果是tuple,則為輸出圖像的尺寸
plt.imshow(lena_new_sz)
plt.axis('off')
plt.show()
復制代碼
5. 保存圖像
5.1 保存 matplotlib 畫出的圖像
該方法適用於保存任何 matplotlib 畫出的圖像,相當於一個 screencapture。
plt.imshow(lena_new_sz)
plt.axis('off')
plt.savefig('lena_new_sz.png')
5.2 將 array 保存為圖像
from scipy import misc
misc.imsave('lena_new_sz.png', lena_new_sz)
5.3 直接保存 array
讀取之後還是可以按照前面顯示數組的方法對圖像進行顯示,這種方法完全不會對圖像質量造成損失
np.save('lena_new_sz', lena_new_sz) # 會在保存的名字後面自動加上.npy
img = np.load('lena_new_sz.npy') # 讀取前面保存的數組
二、PIL
1. 顯示圖片
from PIL import Image
im = Image.open('lena.png')
im.show()
2. 將 PIL Image 圖片轉換為 numpy 數組
im_array = np.array(im)
# 也可以用 np.asarray(im) 區別是 np.array() 是深拷貝,np.asarray() 是淺拷貝
3. 保存 PIL 圖片
直接調用 Image 類的 save 方法
from PIL import Image
I = Image.open('lena.png')
I.save('new_lena.png')
4. 將 numpy 數組轉換為 PIL 圖片
這里採用 matplotlib.image 讀入圖片數組,注意這里讀入的數組是 float32 型的,范圍是 0-1,而 PIL.Image 數據是 uinit8 型的,范圍是0-255,所以要進行轉換:
import matplotlib.image as mpimg
from PIL import Image
lena = mpimg.imread('lena.png') # 這里讀入的數據是 float32 型的,范圍是0-1
im = Image.fromarray(np.uinit8(lena*255))
im.show()
5. RGB 轉換為灰度圖
from PIL import Image
I = Image.open('lena.png')
I.show()
L = I.convert('L')
L.show()
❸ 如何把圖片的excel轉為Python裡面的字典
如何將Excel導入Python之中呢?很簡單!做法如下:
首先我們要讀取excel要用到xlrd模塊,官網安裝先上官網安裝。
然後就可以跟著裡面的例子稍微試一下就知道怎麼用了。大概的流程是這樣的:
1、導入模塊
import xlrd
2、打開Excel文件讀取數據
data = xlrd.open_workbook('excel.xls')
3、獲取一個工作表
① table = data.sheets()[0] #通過索引順序獲取② table = data.sheet_by_index(0) #通過索引順序獲取③ table = data.sheet_by_name(u'Sheet1')#通過名稱獲取
4、獲取整行和整列的值(返回數組)
table.row_values(i)table.col_values(i)
5、獲取行數和列數
table.nrowstable.ncols
6、獲取單元格
table.cell(0,0).valuetable.cell(2,3).value
相對來說獲取cell比較有用,相當於是給了一個二維數組,剩下的想怎麼做都隨著自己性子來。這全部歸功於代碼的簡潔實用。若其中仍有若干小坑則花點時間自己琢磨下吧。以下列出的方法供人參考:
1、首先就是我的統計是根據姓名統計各個表中的信息的,但是調試發現不同的表中各個名字貌似不能夠匹配,開始懷疑過編碼問題,不過後來發現是因為 空格。因為在excel中輸入的時候很可能會順手在一些名字後面加上幾個空格或是tab鍵,這樣看起來沒什麼差別,但是程序處理的時候這就是兩個完全 不同的串了。我的解決方法是給每個獲取的字元串都加上strip()處理一下。效果良好2、還是字元串的匹配,在判斷某個單元格中的字元串(中文)是否等於我所給出的的時候發現無法匹配,並且各種unicode也不太奏效,網路過一些解決 方案,但是都比較復雜或是沒用。最後我採用了一個比較變通的方式:直接從excel中獲取我想要的值再進行比較,效果是不錯就是通用行不太好,個 呢不能問題還沒解決。
二、寫excel表
寫excel表要用到xlwt模塊,可到官網下載
下載後大致的操作流程如下:
1、導入模塊,復制代碼代碼 :
import xlwt
2、創建workbook,就是excel,這里只需要保存下,然後復制代碼:
workbook = xlwt.Workbook(encoding = 'ascii')
3、接著創建表,然後復制代碼:
worksheet = workbook.add_sheet('My Worksheet')
4、再往單元格內寫入內容,復制代碼代碼:
worksheet.write(0, 0, label = 'Row 0, Column 0 Value')
5、最後保存,復制代碼代碼如下:
workbook.save('Excel_Workbook.xls')
以上便是小編對「如何將Excel導入Python之中呢?」的大致介紹,希望能有所幫助!
❹ 怎樣使用Python圖像處理
Python圖像處理是一種簡單易學,功能強大的解釋型編程語言,它有簡潔明了的語法,高效率的高層數據結構,能夠簡單而有效地實現面向對象編程,下文進行對Python圖像處理進行說明。
當然,首先要感謝「戀花蝶」,是他的文章「用Python圖像處理 」 幫我堅定了用Python和PIL解決問題的想法,對於PIL的一些介紹和基本操作,可以看看這篇文章。我這里主要是介紹點我在使用過程中的經驗。
PIL可以對圖像的顏色進行轉換,並支持諸如24位彩色、8位灰度圖和二值圖等模式,簡單的轉換可以通過Image.convert(mode)函數完 成,其中mode表示輸出的顏色模式。例如''L''表示灰度,''1''表示二值圖模式等。
但是利用convert函數將灰度圖轉換為二值圖時,是採用固定的閾 值127來實現的,即灰度高於127的像素值為1,而灰度低於127的像素值為0。為了能夠通過自定義的閾值實現灰度圖到二值圖的轉換,就要用到 Image.point函數。
深度剖析Python語法功能
深度說明Python應用程序特點
對Python資料庫進行學習研究
Python開發人員對Python經驗之談
對Python動態類型語言解析
Image.point函數有多種形式,這里只討論Image.point(table, mode),利用該函數可以通過查表的方式實現像素顏色的模式轉換。其中table為顏色轉換過程中的映射表,每個顏色通道應當有256個元素,而 mode表示所輸出的顏色模式,同樣的,''L''表示灰度,''1''表示二值圖模式。
可見,轉換過程的關鍵在於設計映射表,如果只是需要一個簡單的箝位值,可以將table中高於或低於箝位值的元素分別設為1與0。當然,由於這里的table並沒有什麼特殊要求,所以可以通過對元素的特殊設定實現(0, 255)范圍內,任意需要的一對一映射關系。
示例代碼如下:
import Image # load a color image im = Image.open(''fun.jpg'') # convert to grey level image Lim = im.convert(''L'') Lim.save(''fun_Level.jpg'') # setup a converting table with constant threshold threshold = 80 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) # convert to binary image by the table bim = Lim.point(table, ''1'') bim.save(''fun_binary.jpg'')
IT部分通常要完成的任務相當繁重但支撐這些工作的資源卻很少,這已經成為公開的秘密。任何承諾提高編碼效率、降低軟體總成本的IT解決方案都應該進行 周到的考慮。Python圖像處理所具有的一個顯著優勢就是可以在企業的軟體創建和維護階段節約大量資金,而這兩個階段的軟體成本佔到了軟體整個生命周期中總成本 的50%到95%。
Python清晰可讀的語法使得軟體代碼具有異乎尋常的易讀性,甚至對那些不是最初接觸和開發原始項目的程序員都 能具有這樣的強烈感覺。雖然某些程序員反對在Python代碼中大量使用空格。
不過,幾乎人人都承認Python圖像處理的可讀性遠勝於C或者Java,後兩 者都採用了專門的字元標記代碼塊結構、循環、函數以及其他編程結構的開始和結束。提倡Python的人還宣稱,採用這些字元可能會產生顯著的編程風格差 異,使得那些負責維護代碼的人遭遇代碼可讀性方面的困難。轉載
❺ 如何用python將圖片轉為字元畫
# coding:utf-8
# 為一張圖片生成對應的字元集圖片
from PIL import Image
import argparse
# 命令行輸入參數處理
parser = argparse.ArgumentParser()
parser.add_argument('file') # 輸入文件
parser.add_argument('-o', '--output') # 輸出文件
parser.add_argument('--width', type=int, default=80) # 輸出字元畫寬
parser.add_argument('--height', type=int, default=80) # 輸出字元畫高
# 獲取參數
args = parser.parse_args()
IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output
ascii_char = list("$@B%8&WM#*/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
# 將256灰度映射到70個字元上
def get_char(r, b, g, alpha=256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]
if __name__ == '__main__':
im = Image.open(IMG)
im = im.resize((WIDTH, HEIGHT), Image.NEAREST)
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j, i)))
txt += '\n'
print txt
# 字元畫輸出到文件
if OUTPUT:
with open(OUTPUT,'w') as f:
f.write(txt)
else:
with open("output.txt", 'w') as f:
f.write(txt)
❻ 請使用Python語言完成圖片內容。不一定要把這個題做出來,只需要給我一個能運行出來的代碼框架就行
新建一個文本測試 文本內容就是你上面的單詞
path 替換成你自己的文本路徑
❼ python怎麼輸入圖片
python導入圖片的方法:
一、直接從源圖片中導入(圖片位於images文件夾內)self.label1=QLabel(self)
self.label1.setPixmap(QPixmap(r"images/head.jpg"))
layout.addWidget(self.label1)
#或者 layout.addWidget(QLabel(self, pixmap=QPixmap("images/head.jpg")))
二、利用qrc資源導入
1、先寫qrc文件
images/head.jpg
images/body.jpg
2、將qrc文件轉化成py文件
轉化命令為:pyrcc5 res.qrc -o res_rc.py
3、導入res_rc.py:import res_rc
4、layout.addWidget(QLabel(self,pixmap=QPixmap(":/images/head.jpg")))
注意需要添加:/符號作為前綴。
❽ 用python解壓圖片並列印代碼
import zipfile
# 傳入壓縮文件zfile.zip獲取相關信息
zip_file = zipfile.ZipFile('zfile.zip')
# 獲取壓縮文件中的內容
f_content = zip_file.namelist()
# 壓縮前的大小
f_size = zip_file.getinfo('zfile/a.txt').file_size
# 壓縮後的大小
c_size = zip_file.getinfo('zfile/a.txt').compress_size
ZipFile 對象有一個 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夾 的字元串的列表。這些字元串可以傳遞給 ZipFile 對象的 getinfo()方法,返回一個關 於特定文件的 ZipInfo 對象。ZipInfo 對象有自己的屬性,諸如表示位元組數的 file_size 和 compress_size,它們分別表示原來文件大小和壓縮後文件大小。ZipFile 對象表示 整個歸檔文件,而 ZipInfo 對象則保存該歸檔文件中每個文件的有用信息。
從 ZIP 文件中解壓縮
ZipFile 對象的 extractall()方法從 ZIP 文件中解壓縮所有文件和文件夾,放到當 前工作目錄中。
import zipfile
zip_file = zipfile.ZipFile('zfile.zip')
# 解壓
zip_extract = zip_file.extractall()
zip_extract.close()
運行這段代碼後, example.zip 的內容將被解壓縮到 C:。 或者, 你可以向 extractall()傳遞的一個文件夾名稱,它將文件解壓縮到那個文件夾,而不是當前工作 目錄。如果傳遞給 extractall()方法的文件夾不存在,它會被創建。例如,如果你用 exampleZip.extractall('C: delicious')取代處的調用,代碼就會從 example.zip 中解壓 縮文件,放到新創建的 C:delicious 文件夾中。
ZipFile 對象的 extract()方法從 ZIP 文件中解壓縮單個文件。
創建和添加到 ZIP 文件
要創建你自己的壓縮 ZIP 文件,必須以「寫模式」打開 ZipFile 對象,即傳入'w' 作為第二個參數(這類似於向 open()函數傳入'w',以寫模式打開一個文本文件)。
如果向 ZipFile 對象的 write()方法傳入一個路徑,Python 就會壓縮該路徑所指 的文件,將它加到 ZIP 文件中。write()方法的第一個參數是一個字元串,代表要添 加的文件名。第二個參數是「壓縮類型」參數,它告訴計算機使用怎樣的演算法來壓 縮文件。可以總是將這個值設置為 zipfile.ZIP_DEFLATED(這指定了 deflate 壓縮 演算法,它對各種類型的數據都很有效)。
import zipfile
zip_file = zipfile.ZipFile('new.zip','w')
# 把zfile整個目錄下所有內容,壓縮為new.zip文件
zip_file.write('zfile',compress_type=zipfile.ZIP_DEFLATED)
# 把c.txt文件壓縮成一個壓縮文件
# zip_file.write('c.txt',compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()
這段代碼將創建一個新的 ZIP 文件,名為 new.zip,它包含 spam.txt 壓縮後的內容。
要記住,就像寫入文件一樣,寫模式將擦除 ZIP 文件中所有原有的內容。如果 只是希望將文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()傳入'a'作為第二 個參數,以追加模式打開 ZIP 文件。