python保存圖片函數(shù) python生成的圖片怎么保存

python讀取保存多幀圖片數(shù)量少了

cv2.imshow("left", img_left)

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了城固免費(fèi)建站歡迎大家使用!

filename3=str(number)+'n3'+'.jpg' #打印第number張圖片+增值方式+保存類型

cv2.imwrite(savedpath + filename3, img_left)

"""

# 數(shù)據(jù)增強(qiáng)實(shí)現(xiàn)

"""

import cv2

import numpy as np

import os

# 圖像平移

def img_translation(image):

# 圖像平移 下、上、右、左平移

M = np.float32([[1, 0, 0], [0, 1, 100]])

img_down = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

M = np.float32([[1, 0, 0], [0, 1, -100]])

img_up = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

M = np.float32([[1, 0, 100], [0, 1, 0]])

img_right = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

M = np.float32([[1, 0, -100], [0, 1, 0]])

img_left = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

# 保存圖片,需要保存上述的哪一圖片,就在cv2.imwrite()中,將哪一圖片名放入。

# filename='xxx' +'.jpeg'

# cv2.imwrite(savedpath + filename, img_left)

# 顯示圖形

cv2.imshow("down", img_down)

filename0=str(number)+'n0'+'.jpg'

cv2.imwrite(savedpath + filename0, img_down)

cv2.imshow("up", img_up)

filename1=str(number)+'n1'+'.jpg'

cv2.imwrite(savedpath + filename1, img_up)

cv2.imshow("right", img_right)

filename2=str(number)+'n2'+'.jpg'

cv2.imwrite(savedpath + filename2, img_right)

cv2.imshow("left", img_left)

filename3=str(number)+'n3'+'.jpg'

cv2.imwrite(savedpath + filename3, img_left)

# 圖像縮放

def img_scale(image):

result = cv2.resize(image, (224, 224))

cv2.imshow("scale", result)

filename=str(number)+'n5'+'.jpg'

cv2.imwrite(savedpath + filename, result)

# 圖像翻轉(zhuǎn)

def img_flip(image):

# 0以X軸為對(duì)稱軸翻轉(zhuǎn),0以Y軸為對(duì)稱軸翻轉(zhuǎn), 0X軸Y軸翻轉(zhuǎn)

horizontally = cv2.flip(image, 0) # 水平鏡像

vertically = cv2.flip(image, 1) # 垂直鏡像

hv = cv2.flip(image, -1) # 水平垂直鏡像

# 顯示圖形

cv2.imshow("Horizontally", horizontally)

filename1=str(number)+'n6'+'.jpg'

cv2.imwrite(savedpath + filename1, horizontally)

cv2.imshow("Vertically", vertically)

filename2=str(number)+'n7'+'.jpg'

cv2.imwrite(savedpath + filename2, vertically)

cv2.imshow("Horizontally Vertically", hv)

filename3=str(number)+'n8'+'.jpg'

cv2.imwrite(savedpath + filename3, hv)

# 圖像旋轉(zhuǎn)

def img_rotation(image):

# 原圖的高、寬 以及通道數(shù)

rows, cols, channel = image.shape

# 繞圖像的中心旋轉(zhuǎn)

# 參數(shù):旋轉(zhuǎn)中心 旋轉(zhuǎn)度數(shù) scale

M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 30, 1)

# 參數(shù):原始圖像 旋轉(zhuǎn)參數(shù) 元素圖像寬高

rotated = cv2.warpAffine(image, M, (cols, rows))

# 顯示圖像

cv2.imshow("rotated", rotated)

filename1=str(number)+'n9'+'.jpg'

cv2.imwrite(savedpath + filename1, rotated)

#選裝60度

W = cv2.getRotationMatrix2D((cols / 2, rows / 2), 60, 1)

# 參數(shù):原始圖像 旋轉(zhuǎn)參數(shù) 元素圖像寬高

rotated1 = cv2.warpAffine(image, W, (cols, rows))

cv2.imshow("rotated", rotated)

filename2=str(number)+'n12'+'.jpg'

cv2.imwrite(savedpath + filename2, rotated1)

#選裝145度

W = cv2.getRotationMatrix2D((cols / 2, rows / 2), 60, 1)

# 參數(shù):原始圖像 旋轉(zhuǎn)參數(shù) 元素圖像寬高

rotated2 = cv2.warpAffine(image, W, (cols, rows))

cv2.imshow("rotated", rotated)

filename3=str(number)+'n13'+'.jpg'

cv2.imwrite(savedpath + filename3, rotated2)

# 圖像加噪

def img_noise(image, mean=0, var=0.001):

'''

添加高斯噪聲

mean : 均值

var : 方差

'''

image = np.array(image / 255, dtype=float)

noise = np.random.normal(mean, var ** 0.5, image.shape)

out = image + noise

if out.min() 0:

low_clip = -1.

else:

low_clip = 0.

out = np.clip(out, low_clip, 1.0)

out = np.uint8(out * 255)

cv2.imshow("noise", out)

filename3=str(number)+'n10'+'.jpg'

cv2.imwrite(savedpath + filename3, out)

# 圖像亮度調(diào)節(jié)

def img_brightness(image):

contrast = 1 # 對(duì)比度

brightness = 100 # 亮度

pic_turn = cv2.addWeighted(image, contrast, image, 0, brightness)

# cv2.addWeighted(對(duì)象,對(duì)比度,對(duì)象,對(duì)比度)

'''cv2.addWeighted()實(shí)現(xiàn)的是圖像透明度的改變與圖像的疊加'''

cv2.imshow('bright', pic_turn) # 顯示圖片

filename3=str(number)+'n11'+'.jpg'

cv2.imwrite(savedpath + filename3, pic_turn)

if __name__ == '__main__':

i = 0

path = '../Data/'

print(path)

savedpath = './result_new/'

filelist = os.listdir(path)

total_num = len(filelist)

for item in filelist:

number = i + 1

i = number

print("######")

print("打印到第",i,"張圖片")

src = cv2.imread(path + item)

img_translation(src)

img_scale(src)

img_flip(src)

img_rotation(src)

img_noise(src)

img_brightness(src)

cv2.waitKey(0)

cv2.destroyAllWindows()

代碼較為繁瑣,有空之后進(jìn)行優(yōu)化

輸出結(jié)果

python畫出來的愛心怎么保存下來

使用matplotlib畫圖保存方法:

首先,import頭文件如下:

import matplotlib

matplotlib.use('Agg')

import matplotlib.pyplot as plt

from matplotlib.pyplot

import plot,savefig

畫圖:fig, ax = plt.subplots(figsize=(12, 12))

ax.imshow(im, aspect='equal') #im表示顯示的圖像

保存圖片:savefig("D:/1.jpg")

展示圖片:plt.show()

python:PIL圖像處理

PIL (Python Imaging Library)

Python圖像處理庫,該庫支持多種文件格式,提供強(qiáng)大的圖像處理功能。

PIL中最重要的類是Image類,該類在Image模塊中定義。

從文件加載圖像:

如果成功,這個(gè)函數(shù)返回一個(gè)Image對(duì)象?,F(xiàn)在你可以使用該對(duì)象的屬性來探索文件的內(nèi)容。

format 屬性指定了圖像文件的格式,如果圖像不是從文件中加載的則為 None 。

size 屬性是一個(gè)2個(gè)元素的元組,包含圖像寬度和高度(像素)。

mode 屬性定義了像素格式,常用的像素格式為:“L” (luminance) - 灰度圖, “RGB” , “CMYK”。

如果文件打開失敗, 將拋出IOError異常。

一旦你擁有一個(gè)Image類的實(shí)例,你就可以用該類定義的方法操作圖像。比如:顯示

( show() 的標(biāo)準(zhǔn)實(shí)現(xiàn)不是很有效率,因?yàn)樗鼘D像保存到一個(gè)臨時(shí)文件,然后調(diào)用外部工具(比如系統(tǒng)的默認(rèn)圖片查看軟件)顯示圖像。該函數(shù)將是一個(gè)非常方便的調(diào)試和測(cè)試工具。)

接下來的部分展示了該庫提供的不同功能。

PIL支持多種圖像格式。從磁盤中讀取文件,只需使用 Image 模塊中的 open 函數(shù)。不需要提供文件的圖像格式。PIL庫將根據(jù)文件內(nèi)容自動(dòng)檢測(cè)。

如果要保存到文件,使用 Image 模塊中的 save 函數(shù)。當(dāng)保存文件時(shí),文件名很重要,除非指定格式,否則PIL庫將根據(jù)文件的擴(kuò)展名來決定使用哪種格式保存。

** 轉(zhuǎn)換文件到JPEG **

save 函數(shù)的第二個(gè)參數(shù)可以指定使用的文件格式。如果文件名中使用了一個(gè)非標(biāo)準(zhǔn)的擴(kuò)展名,則必須通過第二個(gè)參數(shù)來指定文件格式。

** 創(chuàng)建JPEG縮略圖 **

需要注意的是,PIL只有在需要的時(shí)候才加載像素?cái)?shù)據(jù)。當(dāng)你打開一個(gè)文件時(shí),PIL只是讀取文件頭獲得文件格式、圖像模式、圖像大小等屬性,而像素?cái)?shù)據(jù)只有在需要的時(shí)候才會(huì)加載。

這意味著打開一個(gè)圖像文件是一個(gè)非??斓牟僮鳎粫?huì)受文件大小和壓縮算法類型的影響。

** 獲得圖像信息 **

Image 類提供了某些方法,可以操作圖像的子區(qū)域。提取圖像的某個(gè)子區(qū)域,使用 crop() 函數(shù)。

** 復(fù)制圖像的子區(qū)域 **

定義區(qū)域使用一個(gè)包含4個(gè)元素的元組,(left, upper, right, lower)。坐標(biāo)原點(diǎn)位于左上角。上面的例子提取的子區(qū)域包含300x300個(gè)像素。

該區(qū)域可以做接下來的處理然后再粘貼回去。

** 處理子區(qū)域然后粘貼回去 **

當(dāng)往回粘貼時(shí),區(qū)域的大小必須和參數(shù)匹配。另外區(qū)域不能超出圖像的邊界。然而原圖像和區(qū)域的顏色模式無需匹配。區(qū)域會(huì)自動(dòng)轉(zhuǎn)換。

** 滾動(dòng)圖像 **

paste() 函數(shù)有個(gè)可選參數(shù),接受一個(gè)掩碼圖像。掩碼中255表示指定位置為不透明,0表示粘貼的圖像完全透明,中間的值表示不同級(jí)別的透明度。

PIL允許分別操作多通道圖像的每個(gè)通道,比如RGB圖像。 split() 函數(shù)創(chuàng)建一個(gè)圖像集合,每個(gè)圖像包含一個(gè)通道。 merge() 函數(shù)接受一個(gè)顏色模式和一個(gè)圖像元組,然后將它們合并為一個(gè)新的圖像。接下來的例子交換了一個(gè)RGB圖像的三個(gè)通道。

** 分離和合并圖像通道 **

對(duì)于單通道圖像, split() 函數(shù)返回圖像本身。如果想處理各個(gè)顏色通道,你可能需要先將圖像轉(zhuǎn)為RGB模式。

resize() 函數(shù)接受一個(gè)元組,指定圖像的新大小。

rotate() 函數(shù)接受一個(gè)角度值,逆時(shí)針旋轉(zhuǎn)。

** 基本幾何變換 **

圖像旋轉(zhuǎn)90度也可以使用 transpose() 函數(shù)。 transpose() 函數(shù)也可以水平或垂直翻轉(zhuǎn)圖像。

** transpose **

transpose() 和 rotate() 函數(shù)在性能和結(jié)果上沒有區(qū)別。

更通用的圖像變換函數(shù)為 transform() 。

PIL可以轉(zhuǎn)換圖像的像素模式。

** 轉(zhuǎn)換顏色模式 **

PIL庫支持從其他模式轉(zhuǎn)為“L”或“RGB”模式,其他模式之間轉(zhuǎn)換,則需要使用一個(gè)中間圖像,通常是“RGB”圖像。

ImageFilter 模塊包含多個(gè)預(yù)定義的圖像增強(qiáng)過濾器用于 filter() 函數(shù)。

** 應(yīng)用過濾器 **

point() 函數(shù)用于操作圖像的像素值。該函數(shù)通常需要傳入一個(gè)函數(shù)對(duì)象,用于操作圖像的每個(gè)像素:

** 應(yīng)用點(diǎn)操作 **

使用以上技術(shù)可以快速地對(duì)圖像像素應(yīng)用任何簡(jiǎn)單的表達(dá)式??梢越Y(jié)合 point() 函數(shù)和 paste 函數(shù)修改圖像。

** 處理圖像的各個(gè)通道 **

注意用于創(chuàng)建掩碼圖像的語法:

Python計(jì)算邏輯表達(dá)式采用短路方式,即:如果and運(yùn)算符左側(cè)為false,就不再計(jì)算and右側(cè)的表達(dá)式,而且返回結(jié)果是表達(dá)式的結(jié)果。比如 a and b 如果a為false則返回a,如果a為true則返回b,詳見Python語法。

對(duì)于更多高級(jí)的圖像增強(qiáng)功能,可以使用 ImageEnhance 模塊中的類。

可以調(diào)整圖像對(duì)比度、亮度、色彩平衡、銳度等。

** 增強(qiáng)圖像 **

PIL庫包含對(duì)圖像序列(動(dòng)畫格式)的基本支持。支持的序列格式包括 FLI/FLC 、 GIF 和一些實(shí)驗(yàn)性的格式。 TIFF 文件也可以包含多個(gè)幀。

當(dāng)打開一個(gè)序列文件時(shí),PIL庫自動(dòng)加載第一幀。你可以使用 seek() 函數(shù) tell() 函數(shù)在不同幀之間移動(dòng)。

** 讀取序列 **

如例子中展示的,當(dāng)序列到達(dá)結(jié)尾時(shí),將拋出EOFError異常。

注意當(dāng)前版本的庫中多數(shù)底層驅(qū)動(dòng)只允許seek到下一幀。如果想回到前面的幀,只能重新打開圖像。

以下迭代器類允許在for語句中循環(huán)遍歷序列:

** 一個(gè)序列迭代器類 **

PIL庫包含一些函數(shù)用于將圖像、文本打印到Postscript打印機(jī)。以下是一個(gè)簡(jiǎn)單的例子。

** 打印到Postscript **

如前所述,可以使用 open() 函數(shù)打開圖像文件,通常傳入一個(gè)文件名作為參數(shù):

如果打開成功,返回一個(gè)Image對(duì)象,否則拋出IOError異常。

也可以使用一個(gè)file-like object代替文件名(暫可以理解為文件句柄)。該對(duì)象必須實(shí)現(xiàn)read,seek,tell函數(shù),必須以二進(jìn)制模式打開。

** 從文件句柄打開圖像 **

如果從字符串?dāng)?shù)據(jù)中讀取圖像,使用StringIO類:

** 從字符串中讀取 **

如果圖像文件內(nèi)嵌在一個(gè)大文件里,比如 tar 文件中。可以使用ContainerIO或TarIO模塊來訪問。

** 從tar文檔中讀取 **

** 該小節(jié)不太理解,請(qǐng)參考原文 **

有些解碼器允許當(dāng)讀取文件時(shí)操作圖像。通常用于在創(chuàng)建縮略圖時(shí)加速解碼(當(dāng)速度比質(zhì)量重要時(shí))和輸出一個(gè)灰度圖到激光打印機(jī)時(shí)。

draft() 函數(shù)。

** Reading in draft mode **

輸出類似以下內(nèi)容:

注意結(jié)果圖像可能不會(huì)和請(qǐng)求的模式和大小匹配。如果要確保圖像不大于指定的大小,請(qǐng)使用 thumbnail 函數(shù)。

Python2.7 教程 PIL

Python 之 使用 PIL 庫做圖像處理

來自

python怎么保存生成的圖像?

要使用python,必須先安裝python,一般是2.7版本以上,不管是在windows系統(tǒng),還是linux系統(tǒng),安裝都是非常簡(jiǎn)單的。

要使用python進(jìn)行各種開發(fā),就必須安裝對(duì)應(yīng)的庫。(推薦學(xué)習(xí):Python視頻教程)

這和matlab非常相似,只是matlab里面叫工具箱(toolbox),而python里面叫庫或包。安裝這些庫,一般都是使用pip來安裝。

使用python進(jìn)行數(shù)字圖片處理,還得安裝Pillow包。雖然python里面自帶一個(gè)PIL(python images library), 但這個(gè)庫現(xiàn)在已經(jīng)停止更新了,所以使用Pillow, 它是由PIL發(fā)展而來的。

圖片的打開與顯示

雖然使用的是Pillow,但它是由PIL fork而來,因此還是要從PIL中進(jìn)行import. 使用open()函數(shù)來打開圖片,使用show()函數(shù)來顯示圖片。

這種圖片顯示方式是調(diào)用操作系統(tǒng)自帶的圖片瀏覽器來打開圖片,有些時(shí)候這種方式不太方便,因此我們也可以使用另上一種方式,讓程序來繪制圖片。

這種方法雖然復(fù)雜了些,但推薦使用這種方法,它使用一個(gè)matplotlib的庫來繪制圖片進(jìn)行顯示。matplotlib是一個(gè)專業(yè)繪圖的庫,相當(dāng)于matlab中的plot,可以設(shè)置多個(gè)figure,設(shè)置figure的標(biāo)題,甚至可以使用subplot在一個(gè)figure中顯示多張圖片。

python中保存圖片的方法:

1、使用io模塊的imsave(fname,arr)函數(shù)來保存生成的圖片。

第一個(gè)參數(shù)表示保存的路徑和名稱,第二個(gè)參數(shù)表示需要保存的數(shù)組變量。

示例:

2、使用plt.savefig()方法保存

python如何保存img文件

python保存img文件有兩種方法:

1、使用matplotlib模塊的“matplotlib.image.imsave()”函數(shù)可以保存圖片

示例代碼如下:

2、使用opencv模塊“opencv.imwrite()”函數(shù)可以保存圖片

、

更多Python知識(shí),請(qǐng)關(guān)注:Python自學(xué)網(wǎng)?。?/p>

python之pyplot

1、 定義x和y,畫圖展示,保存圖片

其中dpi參數(shù)指定圖像的分辨率為120

2、 優(yōu)化繪圖線條風(fēng)格

線條顏色color

線條標(biāo)記marker

線條風(fēng)格linestyle

3、 坐標(biāo)軸的控制

坐標(biāo)軸范圍和標(biāo)題

坐標(biāo)圖上標(biāo)記

坐標(biāo)間隔設(shè)定

函數(shù)plt.xticks()和plt.xticks()用來實(shí)現(xiàn)對(duì)x軸和y軸坐標(biāo)間隔(也就是軸記號(hào))的設(shè)定。用法上,函數(shù)的輸入是兩個(gè)列表,第一個(gè)表示取值,第二個(gè)表示標(biāo)記。當(dāng)然如果你的標(biāo)記就是取值本身,則第二個(gè)列表可以忽略

多圖與子圖

figure() 函數(shù)可以幫助我們同時(shí)處理生成多個(gè)圖,而subplot()函數(shù)則用來實(shí)現(xiàn),在一個(gè)大圖中,出現(xiàn)多個(gè)小的子圖。需要注意的是, figure() 中的參數(shù)為圖片序號(hào),一般是按序增加的,這里面還涉及一個(gè)當(dāng)前圖的概念,其中 subplot() 的參數(shù)有3個(gè),分別為行數(shù)、列數(shù)、以及子圖序號(hào)。比如 subplot(1,2,1) 表示這是一個(gè)1行,2列布局的圖(兩個(gè)子圖,在同一行,分居左右),其中,當(dāng)前處理的子圖是第一個(gè)圖(也就是左圖)。

這樣,我們就用一個(gè)腳本畫了兩張圖fig.1和fig.2。其中,fig.1包含了分居左右的兩個(gè)子圖,分別是y1和y3的曲線;fig.2是一張整圖,畫的是y2曲線。

如果想要某個(gè)子圖占據(jù)整行或者整列,可以采用下面

第三個(gè)圖,實(shí)際上相當(dāng)于將前面的兩個(gè)小的子圖看作是一個(gè)整圖

分享名稱:python保存圖片函數(shù) python生成的圖片怎么保存
文章轉(zhuǎn)載:http://muchs.cn/article22/hjohjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站建設(shè)、建站公司、小程序開發(fā)

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作