最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python圖像常規(guī)操作

 更新時間:2017年11月11日 17:32:04   作者:MingChaoSun  
這篇文章主要介紹了python圖像常規(guī)操作,比較全面,涉及讀取和存儲,生成縮略圖,調整尺寸與旋轉,繪制圖像輪廓等相關內容,具有一定參考價值,需要的朋友可以了解下。

使用python進行基本的圖像操作與處理

前言:

與早期計算機視覺領域多數(shù)程序都是由 C/C++ 寫就的情形不同。隨著計算機硬件速度越來越快,研究者在考慮選擇實現(xiàn)算法語言的時候會更多地考慮編寫代碼的效率和易用性,而不是像早年那樣把算法的執(zhí)行效率放在首位。這直接導致近年來越來越多的研究者選擇 Python 來實現(xiàn)算法。

今天在計算機視覺領域,越來越多的研究者使用 Python 開展研究,所以有必要去學習一下十分易用的python在圖像處理領域的使用,這篇博客將會介紹如何使用Python的幾個著名的圖像處理庫完成最基本的圖像操作與處理。

使用PIL進行基本圖像操作

PIL簡介:

PIL(Python Imaging Library Python,圖像處理類庫)提供了通用的圖像處理功能,以及大量有用的基本圖像操作,比如圖像縮放、裁剪、旋轉、顏色轉換等。

PIL讀取與存儲圖像:

利用 PIL 中的函數(shù),我們可以從大多數(shù)圖像格式的文件中讀取數(shù)據(jù),然后寫入最常見的圖像格式文件中。PIL 中最重要的模塊為 Image 。

下面這個程序我使用PIL讀取一張jpg圖片將其灰度化之后存為一個png文件:

# -*- coding: utf-8 -*-
from PIL import Image
import os
#打開圖像得到一個PIL圖像對象
img = Image.open("./source/test.jpg")
#將其轉為一張灰度圖
img = img.convert('L')
#存儲該張圖片
try:
  img.save("test.png")
except IOError:
  print "cannot convert"

Test.jpg

Test.png

PIL生成縮略圖:

# -*- coding: utf-8 -*-
from PIL import Image
import os
#打開圖像得到一個PIL圖像對象
img = Image.open("./source/test.jpg")
#創(chuàng)建最長邊為128的縮略圖
img.thumbnail((128,128))
#存儲該張圖片
try:
  img.save("test.png")
except IOError:
  print "cannot convert"

Test.png

PIL調整尺寸與旋轉:

# -*- coding: utf-8 -*-
from PIL import Image
import os
#打開圖像得到一個PIL圖像對象
img = Image.open("./source/test.jpg")
#修改圖片大小,參數(shù)為一元組
img = img.resize((100,200))
#使圖片逆時針選擇45度
img = img.rotate(45)
#存儲該張圖片
try:
  img.save("test.png")
except IOError:
  print "cannot convert"

Test.png

PIL復制粘貼圖像區(qū)域:

# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
from PIL import Image
import os
#打開圖像得到一個PIL圖像對象
img = Image.open("./source/test.jpg")
#從img中裁剪指定區(qū)域
region = img.crop((300,300,500,500))
#使裁剪部分逆時針選擇145度
region = region.rotate(145)
#將該區(qū)域粘貼至指定區(qū)域
img.paste(region,(100,100,300,300));
#存儲該張圖片
try:
  img.save("test.png")
except IOError:
  print "cannot convert"

Test.png

元組的使用中,坐標原點為左上角,區(qū)域劃分如下圖所示

使用Matplotlib進行基本圖像操作

Matplotlib簡介:

我們處理數(shù)學運算、繪制圖表,或者在圖像上繪制點、直線和曲線時, Matplotlib是個很好的類庫,具有比 PIL 更強大的繪圖功能。Matplotlib 可以繪制出較好的條形圖、餅狀圖、散點圖等,但是對于大多數(shù)計算機視覺應用來說,僅僅需要用到幾個繪圖命令。比如,我們想用點和線來表示一些事物,比如興趣點、對應點以及檢測出的物體。

使用Matplotlib繪制圖像、點、線

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#打開圖像得到一個PIL圖像對象
img = Image.open("./source/test.jpg")
# 讀取圖像到數(shù)組中
im = array(img)
# 繪制圖像
imshow(im)
# 一些點
x = [100,100,400,400]
y = [200,500,200,500]
# 使用紅色星狀標記繪制點
plot(x,y,'r*')
# 繪制連接前兩個點的線
plot(x[:2],y[:2])
# 添加標題,顯示繪制的圖像
title('Plotting: "Test.jpg"')
show()

show() 命令首先打開圖形用戶界面(GUI),然后新建一個圖像窗口。該圖形用戶界面會循環(huán)阻斷腳本,然后暫停,直到最后一個圖像窗口關閉。在每個腳本里,你只能調用一次 show() 命令,而且通常是在腳本的結尾調用。

也可以使用axis(‘off')命令使坐標軸不顯示。

運行結果

在繪圖時,有很多選項可以控制圖像的顏色和樣式。

如:

plot(x,y)      #默認為藍色實線
plot(x,y,'r*')   #紅色星狀標記
plot(x,y,'go-')   #帶有圓圈標記的綠線
plot(x,y,'ks:')   #帶有正方形標記的黑色虛線

標記 顏色
‘b' 藍色
‘g' 綠色
‘r' 紅色
‘c' 青色
‘m' 品紅
‘y' 黃色
‘k' 黑色
‘w' 白色

標記 線型
‘-‘ 實線
‘–' 虛線
‘:' 點線

標記 形狀
‘.'
‘o' 圓圈
's' 正方形
‘*' 星形
‘+' 加號
‘x' 叉號

使用Matplotlib繪制圖像輪廓

繪制圖像的輪廓(或者其他二維函數(shù)的等輪廓線)在工作中非常有用。因為繪制輪廓需要對每個坐標 [x, y] 的像素值施加同一個閾值,所以首先需要將圖像灰度化,之后使用contour獲得輪廓圖像

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 讀取圖像到數(shù)組中,并灰度化
im = array(Image.open('./source/test.jpg').convert('L'))
#顯示時拋棄顏色信息
gray()
# 顯示輪廓圖像
contour(im, origin='image')
# 在原點的左上角顯示
axis('equal')
#關閉坐標軸
axis('off')
show()

運行結果

使用Matplotlib繪制直方圖

圖像的直方圖用來表征該圖像像素值的分布情況。用一定數(shù)目的小區(qū)間(bin)來指定表征像素值的范圍,每個小區(qū)間會得到落入該小區(qū)間表示范圍的像素數(shù)目。(灰度)圖像的直方圖可以使用 hist() 函數(shù)繪制:

hist() 函數(shù)的第二個參數(shù)指定小區(qū)間的數(shù)目。需要注意的是,因為 hist() 只接受一維數(shù)組作為輸入,所以我們在繪制圖像直方圖之前,必須先對圖像進行壓平處理。flatten() 方法將任意數(shù)組按照行優(yōu)先準則轉換成一維數(shù)組。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 讀取圖像到數(shù)組中,并灰度化
im = array(Image.open('./source/test.jpg').convert('L'))
# 直方圖圖像
hist(im.flatten(),128)
# 顯示
show()

運行結果

使用Matplotlib進行交互式標注

PyLab 庫中的 ginput() 函數(shù)可以實現(xiàn)交互式標注,用來標記一些點或者是一些訓練數(shù)據(jù)。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 讀取圖像到數(shù)組中
im = array(Image.open('./source/test.jpg'))
# 顯示圖像
imshow(im)
print 'Please click 3 points'
#獲取點擊并將點擊坐標保存在[x,y]列表中
x = ginput(3)
#輸出保存的數(shù)據(jù)
print 'you clicked:',x
show()

上面的腳本首先繪制一幅圖像,然后等待用戶在繪圖窗口的圖像區(qū)域點擊三次。程 序將這些點擊的坐標 [x, y] 自動保存在 x 列表里。

運行結果

you clicked: [(295.22704081632651, 210.72448979591837), (405.43112244897952, 66.846938775510239), (439.1045918367347, 180.11224489795921)]

總結

本篇博客介紹了一些python基本的圖像操作,除了上述的PIL和Matplotlib,還經常會使用numpy直接操作圖像數(shù)組來達到操作圖像的目的,使用scipy完成更多更復雜的計算,我會把我的學習過程記錄下來,希望對大家有所幫助~

以上就是本文關于python圖像常規(guī)操作的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

python使用鄰接矩陣構造圖代碼示例

在Python web中實現(xiàn)驗證碼圖片代碼分享

python好玩的項目—色情圖片識別代碼分享

Python生成數(shù)字圖片代碼分享

有什么問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!

相關文章

  • python 利用瀏覽器 Cookie 模擬登錄的用戶訪問知乎的方法

    python 利用瀏覽器 Cookie 模擬登錄的用戶訪問知乎的方法

    今天小編就為大家分享一篇python 利用瀏覽器 Cookie 模擬登錄的用戶訪問知乎的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 使用Python自動生成HTML的方法示例

    使用Python自動生成HTML的方法示例

    這篇文章主要介紹了使用Python自動生成HTML的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Python scipy實現(xiàn)差分進化算法

    Python scipy實現(xiàn)差分進化算法

    差分進化算法是廣義的遺傳算法的一種,核心思想是變異,這篇文章主要為大家介紹的則是著名的scipy庫中對差分進化算法的實現(xiàn),希望對大家有所幫助
    2023-08-08
  • Python全棧之路正則函數(shù)

    Python全棧之路正則函數(shù)

    這篇文章主要為大家介紹了Python正則函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Python數(shù)據(jù)分析Matplotlib?柱狀圖繪制

    Python數(shù)據(jù)分析Matplotlib?柱狀圖繪制

    本文主要介紹了Python數(shù)據(jù)分析Matplotlib柱狀圖繪制,Matplotlib提供了bar()方法繪制柱狀圖,下面具體繪制介紹需要的小伙伴可以參考以一下
    2022-05-05
  • python中的標準庫html

    python中的標準庫html

    html庫是用于解析HTML的一個工具,是python自帶的標準庫之一,今天通過本文給大家介紹下python中的標準庫html,感興趣的朋友一起看看吧
    2022-04-04
  • python沒有gpu,如何改用cpu跑代碼

    python沒有gpu,如何改用cpu跑代碼

    這篇文章主要介紹了python沒有gpu,如何改用cpu跑代碼?今天小編就為大家分享一下解決方案。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 利用Python編寫的實用運維腳本分享

    利用Python編寫的實用運維腳本分享

    Python在很大程度上可以對shell腳本進行替代。筆者一般單行命令用shell,復雜點的多行操作就直接用Python了。本文歸納了Python中一些實用腳本操作,需要的可以參考一下
    2022-05-05
  • Python單元測試的9個技巧技巧

    Python單元測試的9個技巧技巧

    這篇文章主要給大家分享的是Python單元測試常見的幾個技巧,文章會講解requests的一些細節(jié)實現(xiàn)以及pytest的使用等,感興趣的小伙伴不妨和小編一起閱讀下面文章 的具體內容吧
    2021-09-09
  • matplotlib實現(xiàn)矩陣和圖像的可視化表示

    matplotlib實現(xiàn)矩陣和圖像的可視化表示

    這篇文章主要為大家詳細介紹了如何利用matplotlib實現(xiàn)矩陣和圖像的可視化表示,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下
    2024-03-03

最新評論

呈贡县| 天柱县| 德清县| 平塘县| 哈密市| 长岭县| 九龙县| 枞阳县| 长丰县| 石柱| 白河县| 涪陵区| 鹤岗市| 司法| 丰县| 渝北区| 革吉县| 邹平县| 大邑县| 洛扎县| 嘉兴市| 安康市| 汉阴县| 德钦县| 长海县| 溧水县| 鸡西市| 上虞市| 来安县| 抚顺市| 布尔津县| 锦屏县| 新安县| 和顺县| 延川县| 新邵县| 凤台县| 武隆县| 阿拉善右旗| 柳州市| 延长县|