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

溫馨提示×

溫馨提示×

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

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

python opencv、scikit-image和PIL圖像處理庫有什么區別

發布時間:2021-06-11 14:38:38 來源:億速云 閱讀:482 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“python opencv、scikit-image和PIL圖像處理庫有什么區別”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“python opencv、scikit-image和PIL圖像處理庫有什么區別”這篇文章吧。

進行深度學習時,對圖像進行預處理的過程是非常重要的,使用pytorch或者TensorFlow時需要對圖像進行預處理以及展示來觀看處理效果,因此對python中的圖像處理框架進行圖像的讀取和基本變換的掌握是必要的,接下來python中幾個基本的圖像處理庫進行縱向對比。

比較的圖像處理框架:

  • PIL

  • scikit-image

  • opencv-python

PIL:

由于PIL僅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基礎上創建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了許多新特性,因此,我們可以直接安裝使用Pillow。

摘自廖雪峰的官方網站

scikit-image

scikit-image is a collection of algorithms for image processing. It is available free of charge and free of restriction. We pride ourselves on high-quality, peer-reviewed code, written by an active community of volunteers.
摘自官網的介紹,scikit-image的更新還是比較頻繁的,代碼質量也很好。

opencv-python

opencv的大名就不要多說了,這個是opencv的python版

# Compare Image-Processing Modules
# Use Transforms Module of torchvision
#        &&&
# 對比python中不同的圖像處理模塊
# 并且使用torchvision中的transforms模塊進行圖像處理

# packages
from PIL import Image
from skimage import io, transform
import cv2

import torchvision.transforms as transforms
import matplotlib.pyplot as plt
%matplotlib inline

img_PIL = Image.open('./images/dancing.jpg')
img_skimage = io.imread('./images/dancing.jpg')
img_opencv = cv2.imread('./images/dancing.jpg')
img_plt = plt.imread('./images/dancing.jpg')

loader = transforms.Compose([
  transforms.ToTensor()]) # 轉換為torch.tensor格式


print('The shape of \n img_skimage is {}\n img_opencv is {}\n img_plt is {}\n'.format(img_skimage.shape, img_opencv.shape, img_plt.shape))
print('The type of \n img_skimage is {}\n img_opencv is {}\n img_plt is {}\n'.format(type(img_skimage), type(img_opencv), type(img_plt)))
The shape of
img_skimage is (444, 444, 3)
img_opencv is (444, 444, 3)
img_plt is (444, 444, 3)
The size of
img_PIL is (444, 444)
The mode of
img_PIL is RGB
The type of
img_skimage is <class 'numpy.ndarray'>
img_opencv is <class 'numpy.ndarray'>
img_plt is <class 'numpy.ndarray'>
img_PIL if <class 'PIL.JpegImagePlugin.JpegImageFile'>
# 定義一個圖像顯示函數
def my_imshow(image, title=None):
  plt.imshow(image)
  if title is not None:
    plt.title(title)
  plt.pause(0.001) # 這里延時一下,否則圖像無法加載

plt.figure()
my_imshow(img_skimage, title='img_skimage')
# 可以看到opencv讀取的圖像打印出來的顏色明顯與其他不同
plt.figure()
my_imshow(img_opencv, title='img_opencv')
plt.figure()
my_imshow(img_plt, title='img_plt')

# opencv讀出的圖像顏色通道為BGR,需要對此進行轉換
img_opencv = cv2.cvtColor(img_opencv, cv2.COLOR_BGR2RGB)
plt.figure()
my_imshow(img_opencv, title='img_opencv_new')

python opencv、scikit-image和PIL圖像處理庫有什么區別

toTensor = transforms.Compose([transforms.ToTensor()])

# 尺寸變化、縮放
transform_scale = transforms.Compose([transforms.Scale(128)])
temp = transform_scale(img_PIL)
plt.figure()
my_imshow(temp, title='after_scale')

# 隨機裁剪
transform_randomCrop = transforms.Compose([transforms.RandomCrop(32, padding=4)])
temp = transform_scale(img_PIL)
plt.figure()
my_imshow(temp, title='after_randomcrop')

# 隨機進行水平翻轉(0.5幾率)
transform_ranHorFlip = transforms.Compose([transforms.RandomHorizontalFlip()])
temp = transform_scale(img_PIL)
plt.figure()
my_imshow(temp, title='after_ranhorflip')

# 隨機裁剪到特定大小
transform_ranSizeCrop = transforms.Compose([transforms.RandomSizedCrop(128)])
temp = transform_ranSizeCrop(img_PIL)
plt.figure()
my_imshow(temp, title='after_ranSizeCrop')

# 中心裁剪
transform_centerCrop = transforms.Compose([transforms.CenterCrop(128)])
temp = transform_centerCrop(img_PIL)
plt.figure()
my_imshow(temp, title='after_centerCrop')

# 空白填充
transform_pad = transforms.Compose([transforms.Pad(4)])
temp = transform_pad(img_PIL)
plt.figure()
my_imshow(temp, title='after_padding')

# 標準化是在整個數據集中對所有圖像進行取平均和均方差,演示圖像數量過少無法進行此操作
# print(train_data.mean(axis=(0,1,2))/255)
# print(train_data.std(axis=(0,1,2))/255)
# transform_normal = transforms.Compose([transforms.Normalize()])

# Lamdba使用用戶自定義函數來對圖像進行剪裁
# transform_pad = transforms.Compose([transforms.Lambda()])

python opencv、scikit-image和PIL圖像處理庫有什么區別

以上是“python opencv、scikit-image和PIL圖像處理庫有什么區別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

桃源县| 长葛市| 驻马店市| 江山市| 吐鲁番市| 元江| 桓仁| 滦平县| 隆尧县| 鹤岗市| 清苑县| 广宁县| 体育| 盐城市| 大新县| 客服| 江都市| 祁东县| 嘉鱼县| 凤冈县| 库尔勒市| 太保市| 乌拉特中旗| 伊宁县| 苗栗县| 高清| 特克斯县| 博湖县| 犍为县| 仙桃市| 密云县| 镇安县| 闽清县| 垣曲县| 元谋县| 吴川市| 门头沟区| 淮滨县| 苗栗县| 修水县| 米林县|