91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python圖像處理基本操作有哪些

發布時間:2021-06-08 14:36:01 來源:億速云 閱讀:284 作者:小新 欄目:開發技術

這篇文章主要介紹python圖像處理基本操作有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、PIL庫對圖像的基本操作

1、讀取圖片

PIL網上有很多介紹,這里不再講解。直接操作,讀取一張圖片,將其轉換為灰度圖像,并打印出來。

from  PIL  import Image
import matplotlib.pyplot as plt
pil_im = Image.open("empire.jpeg")
pil_image = pil_im.convert("L")
plt.gray()
plt.imshow(pil_image)
plt.show()

輸出如下所示:

python圖像處理基本操作有哪些

2、轉換圖片格式

PIL可以將圖像保存為多種格式,下面將PNG格式文件保存為JPG格式:

from PIL import Image
import glob
import os
filelist = glob.glob("E:/pythonProject1/filelist/*.png")
for infile in filelist:
    outfile = os.path.splitext(infile)[0]+'.jpg'
 
    if infile  != outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print("cannot convert", infile)

輸出結果如下所示:

python圖像處理基本操作有哪些

3、輸出文件夾中所有圖片的文件名列表

import os
def get_imlist(path):
    """返回目錄中所有JPG圖像的文件名列表"""
    return [os.path.join(path,f)for f in os.listdir(path) if f.endswith('.jpg')]
print(get_imlist("E:/pythonProject1/filelist/"))

輸出為文件名列表

二、Matplotlib

1、繪制圖像、點和線

from PIL import Image
from pylab import *
 
#讀取圖像到數組中
im = array(Image.open("empire.jpeg"))
 
#繪制圖像
imshow(im)
 
#一些點
x = [100, 100, 400, 400]
y = [200, 500, 200, 500]
 
#使用紅色星狀標記繪制點
plot(x, y)#默認為藍色實線
# plot(x, y, 'r*')#紅色星狀標記
# plot(x, y, 'go-')#帶有圓圈標記的綠線
# plot(x, y, 'ks')#帶有正方形標記的黑色虛線
 
#繪制連接前三個點的線
plot(x[:3], y[:3])
axis('off')
 
#添加標題,顯示繪制的圖像
titles = ['empire']
plt.title = titles
show()

上面的代碼首先繪制出原始圖像,然后在 x 和 y 列表中給定點的 x 坐標和 y 坐標上繪制出紅色星狀標記點,最后在兩個列表表示的前兩個點之間繪制一條線段。該例子的繪制結果下圖:

python圖像處理基本操作有哪些

2、圖像輪廓和直方圖

繪制輪廓需要對每個坐標 [x, y] 的像素值施加同一個閾值,所以首先需要將圖像灰度化,這里用 PIL 的 convert() 方法將圖像轉換成灰度圖像。圖像的直方圖用來表征該圖像像素值的分布情況。

from PIL import Image
from pylab import *
 
# 讀取圖像到數組中
im = array(Image.open("empire.jpeg").convert('L'))
 
#創建一個圖像
figure()
#不使用顏色信息
gray()
#在原點的左上角顯示輪廓圖像
contour(im, origin = 'image')#檢測圖像輪廓
axis('equal')
axis('off')
show()
#新建一個圖像
figure
hist(im.flatten(), 128)#繪制圖像直方圖
show()

圖像輪廓圖輸出如下所示:

python圖像處理基本操作有哪些

輸出圖像直方圖如下所示:

python圖像處理基本操作有哪些

3、交互式標注

在一幅圖像中標記一些點,或者標注一些訓練數據。PyLab 庫中的 ginput() 函數就可以實現交互式標注。在圖像點擊三次,則程序會自動將這3個點的坐標點[x, y]保存到x列表里。

from PIL import Image
from pylab import *
 
im = array(Image.open("empire.jpeg"))
imshow(im)
print("please click 3 points")
x = ginput(3)
print("you clicked",x)
show()

三、Numpy

1、圖像數組表示

對于圖像數據,下面的例子闡述了這一點

from PIL import Image
import numpy as np
 
im = np.array(Image.open("empire.jpeg"))
print(im.shape,im.dtype)

輸出為:
(1024, 683, 3) uint8

 每行的第一個元組表示圖像數組的大小(行、列、顏色通道),緊接著的字符串表示數組元素的數據類型。因為圖像通常被編碼成無符號八位整數(uint8),載入圖像并將其轉換到數組中,數組的數據類型為“uint8”。

2、灰度變換

對圖像進行灰度變換,如下所示:

from PIL import Image
import numpy as np
 
im = np.array(Image.open("empire.jpeg"))
print(im.shape,im.dtype)
 
from PIL import Image
from matplotlib.pylab import plt
from numpy import *
 
im1 = array(Image.open('empire.jpeg').convert('L'))
im2 = 255 - im1 #對圖像進行反向處理
im3 = (100.0/255) * im1 + 100 #將圖像值變換到100-200之間
im4 = 255.0 * (im1/255) ** 2 #對圖像像素值求平方后得到的圖像
 
images = [im1, im2, im3, im4]
titles = ["f(x) = x", "f(x) = 255 - x", "f(x) = (100/255)*x +100", "f(x) = 255*(x/255)^2"]
#輸出圖中的最大像素值和最小像素值
print(int(im1.min()),int(im1.max()))
print(int(im2.min()),int(im2.max()))
print(int(im3.min()),int(im3.max()))
print(int(im4.min()),int(im4.max()))
 
for i in range(4):
    plt.subplot(2, 2, i+1)#2行2列,按編號順序排列
    plt.imshow(images[i])#顯示圖像
    plt.title(titles[i])#顯示標題
    plt.gray()
    # plt.xticks([])
    # plt.yticks([])
    plt.axis('equal')
    plt.axis('off')
plt.show()

輸出接入如下所示:

python圖像處理基本操作有哪些

以上是“python圖像處理基本操作有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

信宜市| 宁德市| 迁西县| 琼中| 昌平区| 五河县| 二连浩特市| 丰县| 中江县| 共和县| 京山县| 舞阳县| 内丘县| 龙陵县| 石林| 澄江县| 和龙市| 宁城县| 齐河县| 乐至县| 溆浦县| 正宁县| 长宁区| 桃源县| 河池市| 宜良县| 龙胜| 普兰县| 华宁县| 商城县| 拜泉县| 昆山市| 盱眙县| 滦平县| 台中市| 新密市| 云阳县| 南京市| 隆林| 霍州市| 新乡市|