導航:首頁 > 編程語言 > python生成立體圖片程序

python生成立體圖片程序

發布時間:2022-08-31 10:55:14

❶ 如何用python的turtle畫立體五角星

turtle.seth(angle):只改變海龜的行進方向(角度按逆時針),但不行進,angle為絕對度數

❷ 怎麼用python顯示一張圖片

用python顯示一張圖片方法如下:

import matplotlib.pyplot as plt # plt 用於顯示圖片

import matplotlib.image as mpimg # mpimg 用於讀取圖片

import numpy as nplena = mpimg.imread('lena.png') # 讀取和代碼處於同一目錄下的 lena.png# 此時 lena 就已經是一個 np.array 了,可以對它進行任意處理

lena.shape #(512, 512, 3)plt.imshow(lena) # 顯示圖片plt.axis('off') # 不顯示坐標軸

plt.show()

❸ 怎麼用python顯示一張圖片

用python顯示一張圖片方法如下:

import matplotlib.pyplot as plt # plt 用於顯示圖片

import matplotlib.image as mpimg # mpimg 用於讀取圖片

import numpy as nplena = mpimg.imread('lena.png') # 讀取和代碼處於同一目錄下的 lena.png# 此時 lena 就已經是一個 np.array 了,可以對它進行任意處理

lena.shape #(512, 512, 3)plt.imshow(lena) # 顯示圖片plt.axis('off') # 不顯示坐標軸

plt.show()

❹ python生成指定坐標的三角形圖片

=Image.new('RGB',(200,300))m=ImageDraw.Draw(a)m.polygon([(20,20),(35,140),(180,166)],fill=0xff00ff)a.show()
polygon是多邊形的意思,可以添加點畫其他形狀
1m.polygon([(20,20),(35,140),(180,166),(180,20)],fill=0xff00ff)
這是一個四邊形。

❺ python怎麼生成隨機圖形驗證碼

1.安裝pillow模塊
pip install pillow
2.pillow模塊的基本使用
1.創建圖片
from PIL import Image
#定義使用Image類實例化一個長為400px,寬為400px,基於RGB的(255,255,255)顏色的圖片
img1=Image.new(mode="RGB",size=(400,400),color=(255,255,255))
#把生成的圖片保存為"pic.png"格式
with open("pic.png","wb") as f:
img1.save(f,format="png")
#顯示圖片
img1.show()
運行程序,程序會在py文件的同級下生成一個名為"pic.png"的小圖片,圖片長為400px,寬為400px,顏色為白色.
2.創建畫筆
#創建畫筆,用於在圖片上生成內容
draw1=ImageDraw.Draw(img1,mode="RGB")
3.在圖片上生成點
#在(100,100)坐標上生成一個紅點,指定的坐標不能超過圖片的尺寸
draw1.point([100,100],pill="red")
#在(80,80)坐標上生成一個黑點,指定的坐標不能超過圖片的尺寸
draw1.point([80,80],fill=(0,0,0))
4.在圖片上畫線
#第一個括弧裡面的參數是坐標,前兩個數為開始坐標,後兩個數為結束坐標
#括弧里的第二個參數指定顏色,可以直接指定,也可以用RGB來表示顏色
draw1.line((100,100,100,300),fill="red")
draw1.line((100,200,200,100),fill="blue")
運行程序,畫筆會在(100,100)到(100,300)坐標之間畫一條紅色的豎線,在(100,200)到(200,100)坐標之間畫一根藍色的斜線
5.在圖片在畫圓
#括弧里的第一個參數是坐標,前兩個數為起始坐標,後兩個為結束坐標
#用這兩個坐標之間的正方形區域生成一個圓,大括弧里的第二個參數為圓的開始角度
#第三個參數為圓的結束角度,0到360表示所畫的是一個完整的圓形,
#也可以指定的數字來生成一段為圓弧,最後一個參數表示顏色,也可以用RGB來表示想要的顏色
draw1.arc((100,100,300,300),0,360,fill="red")
draw1.arc((0,0,300,300),0,90,fill="blue")
6.在圖片在寫文本
#使用畫筆的text方法在圖片上生成文本
#第一個參數為坐標,第二個參數為所有生成的文本的內容
#第三個參數為文本的顏色
draw1.text([0,0],"python","blue")
7.在圖片在生成指定字體的文本
#先實例化一個字體對象,第一個參數表示字體的路徑,第二個參數表示字體大小
font1=ImageFont.truetype("One Chance.ttf",28)
#在圖片上生成字體
#第一個括弧里的參數表示坐標,第二個參數表示寫入的內容
#第三個參數表示顏色,第四個參數表示使用的字體對象
draw1.text([200,200],"linux","red",font=font1)
圖片驗證碼的實例
#導入random模塊
import random
#導入Image,ImageDraw,ImageFont模塊
from PIL import Image,ImageDraw,ImageFont
#定義使用Image類實例化一個長為120px,寬為30px,基於RGB的(255,255,255)顏色的圖片
img1=Image.new(mode="RGB",size=(120,30),color=(255,255,255))
#實例化一支畫筆
draw1=ImageDraw.Draw(img1,mode="RGB")
#定義要使用的字體
font1=ImageFont.truetype("One Chance.ttf",28)
for i in range(5):
#每循環一次,從a到z中隨機生成一個字母或數字
#65到90為字母的ASCII碼,使用chr把生成的ASCII碼轉換成字元
#str把生成的數字轉換成字元串
char1=random.choice([chr(random.randint(65,90)),str(random.randint(0,9))])
#每循環一次重新生成隨機顏色
color1=(random.randint(0,255),random.randint(0,255),random.randint(0,255))
#把生成的字母或數字添加到圖片上
#圖片長度為120px,要生成5個數字或字母則每添加一個,其位置就要向後移動24px
draw1.text([i*24,0],char1,color1,font=font1)
#把生成的圖片保存為"pic.png"格式
with open("pic.png","wb") as f:
img1.save(f,format="png")

❻ Python之神奇的繪圖庫matplotlib

matplotlib是Python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合互動式地進行制圖。本文將以例子的形式分析matplot中支持的,分析中常用的幾種圖。其中包括填充圖、散點圖(scatter plots)、. 條形圖(bar plots)、等高線圖(contour plots)、 點陣圖和3D圖,下面來一起看看詳細的介紹:

一、填充圖

參考代碼

簡要分析

這里主要是用到了fill_between函數。這個函數很好理解,就是傳入x軸的數組和需要填充的兩個y軸數組;然後傳入填充的范圍,用where=來確定填充的區域;最後可以加上填充顏色啦,透明度之類修飾的參數。

相關推薦:《Python教程》

效果圖

二、散點圖(scatter plots)

參考代碼

簡要分析

1.首先介紹一下numpy 的normal函數,很明顯,這是生成正態分布的函數。這個函數接受三個參數,分別表示正態分布的平均值,標准差,還有就是生成數組的長度。很好記。

2.然後是arctan2函數,這個函數接受兩個參數,分別表示y數組和x數組,然後返回對應的arctan(y/x)的值,結果是弧度制。

3.接下來用到了繪制散點圖的scatter方法,首先當然是傳入x和y數組,接著s參數表示scale,即散點的大小;c參數表示color,我給他傳的是根據角度劃分的一個數組,對應的就是每一個點的顏色(雖然不知道是怎麼對應的,不過好像是一個根據數組內其他元素進行的相對的轉換,這里不重要了,反正相同的顏色賦一樣的值就好了);最後是alpha參數,表示點的透明度。scatter函數的高級用法可以參見官方文檔scatter函數或者help文檔,最後設置下坐標范圍就好了。

效果圖

三、等高線圖(contour plots)

參考代碼

簡要分析

1.首先要明確等高線圖是一個三維立體圖,所以我們要建立一個二元函數f,值由兩個參數控制,(注意,這兩個參數都應該是矩陣)。

2.然後我們需要用numpy的meshgrid函數生成一個三維網格,即,x軸由第一個參數指定,y軸由第二個參數指定。並返回兩個增維後的矩陣,今後就用這兩個矩陣來生成圖像。

3.接著就用到coutourf函數了,所謂contourf,大概就是contour fill的意思吧,只填充,不描邊;這個函數主要是接受三個參數,分別是之前生成的x、y矩陣和函數值;接著是一個整數,大概就是表示等高線的密度了,有默認值;然後就是透明度和配色問題了,cmap的配色方案這里不多研究。

4.隨後就是contour函數了,很明顯,這個函數是用來描線的。用法可以類似的推出來,不解釋了,需要注意的是他返回一個對象,這個對象一般要保留下來個供後續的加工細化。

5.最後就是用clabel函數來在等高線圖上表示高度了,傳入之前的那個contour對象;然後是inline屬性,這個表示是否清除數字下面的那條線,為了美觀當然是清除了,而且默認的也是1;再就是指定線的寬度了。

效果圖

❼ python處理圖片數據

目錄

1.機器是如何存儲圖像的?

2.在Python中讀取圖像數據

3.從圖像數據中提取特徵的方法#1:灰度像素值特徵

4.從圖像數據中提取特徵的方法#2:通道的平均像素值

5.從圖像數據中提取特徵的方法#3:提取邊緣
是一張數字8的圖像,仔細觀察就會發現,圖像是由小方格組成的。這些小方格被稱為像素。

但是要注意,人們是以視覺的形式觀察圖像的,可以輕松區分邊緣和顏色,從而識別圖片中的內容。然而機器很難做到這一點,它們以數字的形式存儲圖像。請看下圖:

機器以數字矩陣的形式儲存圖像,矩陣大小取決於任意給定圖像的像素數。

假設圖像的尺寸為180 x 200或n x m,這些尺寸基本上是圖像中的像素數(高x寬)。

這些數字或像素值表示像素的強度或亮度,較小的數字(接近0)表示黑色,較大的數字(接近255)表示白色。通過分析下面的圖像,讀者就會弄懂到目前為止所學到的知識。

下圖的尺寸為22 x 16,讀者可以通過計算像素數來驗證:

圖片源於機器學習應用課程

剛才討論的例子是黑白圖像,如果是生活中更為普遍的彩色呢?你是否認為彩色圖像也以2D矩陣的形式存儲?

彩色圖像通常由多種顏色組成,幾乎所有顏色都可以從三原色(紅色,綠色和藍色)生成。

因此,如果是彩色圖像,則要用到三個矩陣(或通道)——紅、綠、藍。每個矩陣值介於0到255之間,表示該像素的顏色強度。觀察下圖來理解這個概念:

圖片源於機器學習應用課程

左邊有一幅彩色圖像(人類可以看到),而在右邊,紅綠藍三個顏色通道對應三個矩陣,疊加三個通道以形成彩色圖像。

請注意,由於原始矩陣非常大且可視化難度較高,因此這些不是給定圖像的原始像素值。此外,還可以用各種其他的格式來存儲圖像,RGB是最受歡迎的,所以筆者放到這里。讀者可以在此處閱讀更多關於其他流行格式的信息。

用Python讀取圖像數據

下面開始將理論知識付諸實踐。啟動Python並載入圖像以觀察矩陣:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from skimage.io import imread, imshow
image = imread('image_8_original.png', as_gray=True)
imshow(image)

#checking image shape
image.shape, image

(28,28)

矩陣有784個值,而且這只是整個矩陣的一小部分。用一個LIVE編碼窗口,不用離開本文就可以運行上述所有代碼並查看結果。

下面來深入探討本文背後的核心思想,並探索使用像素值作為特徵的各種方法。

方法#1:灰度像素值特徵

從圖像創建特徵最簡單的方法就是將原始的像素用作單獨的特徵。

考慮相同的示例,就是上面那張圖(數字『8』),圖像尺寸為28×28。

能猜出這張圖片的特徵數量嗎?答案是與像素數相同!也就是有784個。

那麼問題來了,如何安排這784個像素作為特徵呢?這樣,可以簡單地依次追加每個像素值從而生成特徵向量。如下圖所示:

下面來用Python繪制圖像,並為該圖像創建這些特徵:

image = imread('puppy.jpeg', as_gray=True)

image.shape, imshow(image)

(650,450)

該圖像尺寸為650×450,因此特徵數量應為297,000。可以使用NumPy中的reshape函數生成,在其中指定圖像尺寸:

#pixel features

features = np.reshape(image, (660*450))

features.shape, features

(297000,)
array([0.96470588, 0.96470588, 0.96470588, ..., 0.96862745, 0.96470588,
0.96470588])

這里就得到了特徵——長度為297,000的一維數組。很簡單吧?在實時編碼窗口中嘗試使用此方法提取特徵。

但結果只有一個通道或灰度圖像,對於彩色圖像是否也可以這樣呢?來看看吧!

方法#2:通道的平均像素值

在讀取上一節中的圖像時,設置了參數『as_gray = True』,因此在圖像中只有一個通道,可以輕松附加像素值。下面刪除參數並再次載入圖像:

image = imread('puppy.jpeg')
image.shape

(660, 450, 3)

這次,圖像尺寸為(660,450,3),其中3為通道數量。可以像之前一樣繼續創建特徵,此時特徵數量將是660*450*3 = 891,000。

或者,可以使用另一種方法:

生成一個新矩陣,這個矩陣具有來自三個通道的像素平均值,而不是分別使用三個通道中的像素值。

下圖可以讓讀者更清楚地了解這一思路:

這樣一來,特徵數量保持不變,並且還能考慮來自圖像全部三個通道的像素值。

image = imread('puppy.jpeg')
feature_matrix = np.zeros((660,450))
feature_matrix.shape

(660, 450)

現有一個尺寸為(660×450×3)的三維矩陣,其中660為高度,450為寬度,3是通道數。為獲取平均像素值,要使用for循環:

for i in range(0,iimage.shape[0]):
for j in range(0,image.shape[1]):
feature_matrix[i][j] = ((int(image[i,j,0]) + int(image[i,j,1]) + int(image[i,j,2]))/3)

新矩陣具有相同的高度和寬度,但只有一個通道。現在,可以按照與上一節相同的步驟進行操作。依次附加像素值以獲得一維數組:

features = np.reshape(feature_matrix, (660*450))
features.shape

(297000,)

方法#3:提取邊緣特徵

請思考,在下圖中,如何識別其中存在的對象:

識別出圖中的對象很容易——狗、汽車、還有貓,那麼在區分的時候要考慮哪些特徵呢?形狀是一個重要因素,其次是顏色,或者大小。如果機器也能像這樣識別形狀會怎麼樣?

類似的想法是提取邊緣作為特徵並將其作為模型的輸入。稍微考慮一下,要如何識別圖像中的邊緣呢?邊緣一般都是顏色急劇變化的地方,請看下圖:

筆者在這里突出了兩個邊緣。這兩處邊緣之所以可以被識別是因為在圖中,可以分別看到顏色從白色變為棕色,或者由棕色變為黑色。如你所知,圖像以數字的形式表示,因此就要尋找哪些像素值發生了劇烈變化。

假設圖像矩陣如下:

圖片源於機器學習應用課程

該像素兩側的像素值差異很大,於是可以得出結論,該像素處存在顯著的轉變,因此其為邊緣。現在問題又來了,是否一定要手動執行此步驟?

當然不!有各種可用於突出顯示圖像邊緣的內核,剛才討論的方法也可以使用Prewitt內核(在x方向上)來實現。以下是Prewitt內核:

獲取所選像素周圍的值,並將其與所選內核(Prewitt內核)相乘,然後可以添加結果值以獲得最終值。由於±1已經分別存在於兩列之中,因此添加這些值就相當於獲取差異。

還有其他各種內核,下面是四種最常用的內核:

圖片源於機器學習應用課程

現在回到筆記本,為同一圖像生成邊緣特徵:

#importing the required libraries
import numpy as np
from skimage.io import imread, imshow
from skimage.filters import prewitt_h,prewitt_v
import matplotlib.pyplot as plt
%matplotlib inline

#reading the image
image = imread('puppy.jpeg',as_gray=True)

#calculating horizontal edges using prewitt kernel
edges_prewitt_horizontal = prewitt_h(image)
#calculating vertical edges using prewitt kernel
edges_prewitt_vertical = prewitt_v(image)

imshow(edges_prewitt_vertical, cmap='gray')

閱讀全文

與python生成立體圖片程序相關的資料

熱點內容
代碼混淆器php 瀏覽:365
貝恩pdf 瀏覽:207
丙烯pdf 瀏覽:366
雲伺服器華碩 瀏覽:711
sublime3運行python 瀏覽:188
怎麼把安卓視頻傳到蘋果上面 瀏覽:81
手機拍鬼片用什麼app 瀏覽:640
爬山虎app是干什麼用的 瀏覽:505
有哪些寫給程序員的歌 瀏覽:49
成都市命令 瀏覽:993
建立系列文件夾 瀏覽:983
蘋果開機白屏帶文件夾問號 瀏覽:733
體驗服為什麼伺服器會關閉 瀏覽:41
酒店命令 瀏覽:750
中走絲線切割編程視頻 瀏覽:80
衣服壓縮袋手泵原理 瀏覽:714
通達信編程書籍 瀏覽:981
車用壓縮天然氣瓶閥 瀏覽:971
鞋的程序員 瀏覽:259
車的壓縮比是什麼意思 瀏覽:202