python圖片轉字元畫
⑴ python的圖片轉字元
from PILimport Image
ascii_char =list("!~#$%^&**()_+`=][\{}|;':<>?/")
#字元與RGB的對應的映射關系
def get_char(r,g,b,alpha=256):
if alpha ==0 :
return ' '
lenght =len(ascii_char)
gray =int(0.2126 * r +0.7152 * g +0.0722 * b)
unit = (256.0 +1)/lenght
return ascii_char[int(gray/unit)]
if __name__ =='__main__':
im = Image.open(r"C:\Users\鵬COMPUTER\Desktop\timg.jpg")
#這里是轉換圖片的大小,然後第二個參數表示圖片的質量,一共有4種,低質量Image.NEARSET,雙線性Image.BILINEAR,三次樣條插值Image.BICUBIC,高質量Image.ANTIALIAS
im = im.resize((60,30),Image.NEAREST)
txt =""
for iin range(30):
for jin range(60):
#im.getpixel:根據坐標取得RGB對應的r,g,b三個值,這里的getpixel((i,j))的兩個括弧非常重要
txt += get_char(*im.getpixel((j,i)))
txt +='\n'
print(txt)
with open(r"C:\Users\鵬COMPUTER\Desktop\m.txt",'w')as f:
f.write(txt)
這是輸出的字元串:
⑵ 花了2萬多買的Python70個項目,現在分享給大家,練手進廠靠它了
前言:
不管學習哪門語言都希望能做出實際的東西來,這個實際的東西當然就是項目啦,不用多說大家都知道學編程語言一定要做項目才行。
這里整理了70個Python實戰項目列表,都有完整且詳細的教程,你可以從中選擇自己想做的項目進行參考學習練手,你也可以從中尋找靈感去做自己的項目。
1、【Python 圖片轉字元畫】
2、【200行Python代碼實現2048】
3、【Python3 實現火車票查詢工具】
4、【高德API+Python解決租房問題 】
5、【Python3 色情圖片識別】
6、【Python 破解驗證碼】
7、【Python實現簡單的Web伺服器】
8、【pygame開發打飛機 游戲 】
9、【Django 搭建簡易博客】
10、【Python基於共現提取《釜山行》人物關系】
11、【基於scrapy爬蟲的天氣數據採集(python)】
12、【Flask 開發輕博客】
13、【Python3 圖片隱寫術】
14、【Python 實現簡易 Shell】
15、【使用 Python 解數學方程】
16、【PyQt 實現簡易瀏覽器】
17、【神經網路實現手寫字元識別系統 】
18、【Python 實現簡單畫板】
19、【Python實現3D建模工具】
20、【NBA常規賽結果預測——利用Python進行比賽數據分析】
21、【神經網路實現人臉識別任務】
22、【Python文本解析器】
23、【Python3 & OpenCV 視頻轉字元動畫】
24、【Python3 實現淘女郎照片爬蟲 】
25、【Python3實現簡單的FTP認證伺服器】
26、【基於 Flask 與 MySQL 實現番劇推薦系統】
27、【Python 實現埠掃描器】
28、【使用 Python 3 編寫系列實用腳本】
29、【Python 實現康威生命 游戲 】
30、【川普撞臉希拉里(基於 OpenCV 的面部特徵交換) 】
31、【Python 3 實現 Markdown 解析器】
32、【Python 氣象數據分析 -- 《Python 數據分析實戰》】
33、【Python實現鍵值資料庫】
34、【k-近鄰演算法實現手寫數字識別系統】
35、【ebay在線拍賣數據分析】
36、【Python 實現英文新聞摘要自動提取 】
37、【Python實現簡易區域網視頻聊天工具】
38、【基於 Flask 及爬蟲實現微信 娛樂 機器人】
39、【Python實現Python解釋器】
40、【Python3基於Scapy實現DDos】
41、【Python 實現密碼強度檢測器】
42、【使用 Python 實現深度神經網路】
43、【Python實現從excel讀取數據並繪製成精美圖像】
44、【人機對戰初體驗:Python基於Pygame實現四子棋 游戲 】
45、【Python3 實現可控制肉雞的反向Shell】
46、【Python打造漏洞掃描器 】
47、【Python應用馬爾可夫鏈演算法實現隨機文本生成】
48、【數獨 游戲 的Python實現與破解】
49、【使用Python定製詞雲】
50、【Python開發簡單計算器】
51、【Python 實現 FTP 弱口令掃描器】
52、【Python實現Huffman編碼解壓縮文件】
53、【Python實現Zip文件的暴力破解 】
54、【Python3 智能裁切圖片】
55、【Python實現網站模擬登陸】
56、【給Python3爬蟲做一個界面.妹子圖網實戰】
57、【Python 3 實現圖片轉彩色字元】
58、【自聯想器的 Python 實現】
59、【Python 實現簡單濾鏡】
60、【Flask 實現簡單聊天室】
61、【基於PyQt5 實現地圖中定位相片拍攝位置】
62、【Python實現模板引擎】
63、【Python實現遺傳演算法求解n-queens問題】
64、【Python3 實現命令行動態進度條】
65、【Python 獲取掛號信息並郵件通知】
66、【Python實現java web項目遠端自動化更新部署】
67、【使用 Python3 編寫 Github 自動周報生成器】
68、【使用 Python 生成分形圖片】
69、【Python 實現 Redis 非同步客戶端】
70、【Python 實現中文錯別字高亮系統】
最後:
以上項目列表希望可以給你在Python學習中帶來幫助~
獲取方式:轉發 私信「1」
⑶ 如何利用Python實現圖片轉字元畫詳解
# -*- coding: utf-8 -*-from PIL import Image
codeLib = '''@B%8&WM#*/\|()1{}[]?-_+~<>i!lI;:,"^`'. '''#生成字元畫所需的字元集count = len(codeLib)def transform1(image_file):
image_file = image_file.convert("L")#轉換為黑白圖片,參數"L"表示黑白模式
codePic = ''
for h in range(0,image_file.size[1]): #size屬性表示圖片的解析度,'0'為橫向大小,'1'為縱向
for w in range(0,image_file.size[0]):
gray = image_file.getpixel((w,h)) #返回指定位置的像素,如果所打開的圖像是多層次的圖片,那這個方法就返回一個元組
codePic = codePic + codeLib[int(((count-1)*gray)/256)]#建立灰度與字元集的映射
codePic = codePic+'\r\n'
return codePicdef transform2(image_file):
codePic = ''
for h in range(0,image_file.size[1]): for w in range(0,image_file.size[0]):
g,r,b = image_file.getpixel((w,h))
gray = int(r* 0.299+g* 0.587+b* 0.114)
codePic = codePic + codeLib[int(((count-1)*gray)/256)]
codePic = codePic+'\r\n'
return codePic
fp = open(u'暴走.jpg','rb')
image_file = Image.open(fp)
image_file=image_file.resize((int(image_file.size[0]*0.75), int(image_file.size[1]*0.5)))#調整圖片大小print u'Info:',image_file.size[0],' ',image_file.size[1],' ',count
tmp = open('tmp.txt','w')
tmp.write(transform1(image_file))
tmp.close()
⑷ python如何把一個字元串批量切割並轉化成圖片
當然可以。
先根據字元的長度,將字元分成N個組,每組一個字元。
然後根據電腦顯示器的大小,創建一個圖片框,高度和長度分別設置為電腦顯示器的25%。
再將字元顯示到圖片框中,保存圖片框的內容為圖片文件即可。
⑸ 怎麼用python將圖片轉換為文本形式
ocr有開源的模塊。也有國產的。總體來講,國產的更准確。不過最好事先做一次圖像處理。
幾年前試過python調用開源模塊識別。現在是什麼情形不太清楚了。
⑹ 用python繪制字元畫
python是數據統計分析軟體,也只能用來對統計分析的結果數據進行繪圖,以展示數據的某種趨勢或數據項的分布(如折線圖、直方圖、餅圖、散點圖)。
你所說的字元畫是一種什麼樣的圖形?什麼樣的畫?
你想要實現什麼樣的目標?
⑺ 用Python做一個網站,照片生成漫畫頭像,有這個網站就夠了。
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理
對於動漫,大家一定都不陌生,我周圍的不少單身碼農都是動漫迷。我也是一個資深動漫迷,動漫裡面有好多漂亮的小姐姐,比如斗破蒼穹的美杜莎,雲韻,蕭薰兒,天行九歌裡面紫女,焰靈姬。當然女孩也有自己的動漫情懷,部門裡面還有小姐姐喜歡cosplay呢~~
於是乎我想既然Python無所不能,不如用Python做一個小程序幫小姐姐的頭像轉成漫畫,以後也可以搭訕一下部門的小姐姐,吹噓一把!哈哈,想想都幸福,於是熬了一夜,總於完成了這個小程序。
1
首先,我們來看一下,漫畫和我們的照片的區別,如下圖所示:
2
圖片轉漫畫——減少色彩
圖片轉漫畫——減少色彩
有了上述的兩個細節的描述,我們接下來的程序,也將圍繞著這兩點進行展開。
其對應的程序入下圖所示:
上述程序中,我們需要注意的一點就是對於輸入的圖片我們必須要調整圖片尺寸為4的整數倍,因為在金字塔下采樣的過程中,圖片會默認降到原先尺寸的1/4大小,如果無法除盡的話,程序會自動向上取整,這樣的話,我們上采樣之後,模糊的圖片和最初輸入的圖片在解析度上會有些許的差別,這樣會使後面的程序保存。
3
完成了上面幾步之後,我們接著要進行增強輪廓了。我們的程序如下圖所示:
上述的程序中,我們利用opencv的自適應閾值函數來分割輪廓,然後將我們的輪廓圖片和模糊後的圖片按照輪廓圖片的數值進行與操作,最終得到我們的漫畫圖片。
以上便是程序的核心部分,接下來我們用Python裡面的著名框架flask程序做一個簡單額網站頁面。
4
對於flask程序,想必大家或多或少都有一定的了解,我們所使用的flask程序非常簡單,我簡單的說一下思路和步驟:
⑻ 如何用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處理圖片數據
目錄
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的圖像處理庫pillow
找到easy_install.exe工具。在windows下安裝Python後,在其安裝路徑下的scripts文件中默認安裝好了easy_install工具。完整路徑如下例:D:\Python27\Scripts\easy_install.exe;其中為我python的安裝路徑,大家可以根據自己的安裝路徑更改。
使用easy_install.exe工具一鍵安裝pip.打開cmd,輸入安裝命令。操作命令如下圖所示:
pip安裝成功後,在cmd下執行pip,將會有如下提示。
再通過pip進行一鍵安裝Pillow。pip類似RedHat裡面的yum,安裝Python包非常方便。操作命令如下圖所示:
5
到這一步就安裝好了。馬上用起來吧,下圖是用這個庫將圖片轉換的字元畫。轉換後有點大,分割成兩張了。