亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

educoder之Python數(shù)值計(jì)算庫(kù)Numpy圖像處理詳解

 更新時(shí)間:2023年04月21日 11:31:01   作者:實(shí)力  
這篇文章主要為大家介紹了educoder之Python數(shù)值計(jì)算庫(kù)Numpy圖像處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

NumPy   Python數(shù)值計(jì)算重要庫(kù)

在圖像處理領(lǐng)域,NumPy可以幫助我們高效地對(duì)圖像進(jìn)行處理。通過(guò)使用NumPy中的數(shù)組操作,我們可以快速地完成各種基本的圖像處理任務(wù),例如圖像的裁剪、縮放、翻轉(zhuǎn)、色彩模式轉(zhuǎn)換等

讀取和顯示圖像

首先,在處理圖像之前,我們需要將圖像加載到Python程序中。在Python中,可以使用PIL(Python Imaging Library)或OpenCV等庫(kù)來(lái)讀取圖像。下面是使用PIL庫(kù)讀取一張圖片并在窗口中顯示的示例代碼:

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
# 讀入圖片
img = Image.open('test.jpg') 
# 顯示圖片
plt.imshow(np.asarray(img))
plt.show()

圖像的大小調(diào)整

接下來(lái),我們看一下如何通過(guò)NumPy來(lái)調(diào)整圖像的大小。有時(shí)候,我們需要將一個(gè)大尺寸的圖像縮放成小尺寸的圖像。在這里,我們將使用ndarray對(duì)象的resize()方法以及scipy.interpolate中的interpolate()方法實(shí)現(xiàn)圖像的縮放。

from scipy import interpolate
# 將圖像放大兩倍
scale_factor = 2
image_arr = np.array(img)
width, height = image_arr.shape[:2]
new_width, new_height = int(scale_factor * width), int(scale_factor * height)
# 采用scipy.interpolate的interpolate()方法實(shí)現(xiàn)縮放
a, b = np.linspace(0, width, width), np.linspace(0, height, height)
x, y = np.meshgrid(a,b)
f = interpolate.interp2d(x, y, image_arr, kind='cubic')
new_x, new_y = np.linspace(0, width, new_width), np.linspace(0, height, new_height)
new_image_arr = f(new_x, new_y)
# 重新轉(zhuǎn)為圖像格式,顯示出來(lái)觀察。
new_image = Image.fromarray(np.uint8(new_image_arr))
plt.imshow(np.asarray(new_image))
plt.show()

圖像的翻轉(zhuǎn)

在有些場(chǎng)景下,我們需要將圖像水平或垂直翻轉(zhuǎn)。NumPy中提供了flip()方法來(lái)實(shí)現(xiàn)圖像的翻轉(zhuǎn)操作。

# 將圖像水平翻轉(zhuǎn)
img_flip_horizontal = np.fliplr(image_arr)
# 將圖像垂直翻轉(zhuǎn)
img_flip_vertical = np.flipud(image_arr)

圖像縮放和裁剪

調(diào)整圖像大小是常見的圖像處理任務(wù),除此之外,您還可能需要對(duì)圖像進(jìn)行裁剪或者縮放的同時(shí)進(jìn)行裁剪。在這里,我們使用與之前一樣的方法,即resize()實(shí)現(xiàn)圖像縮放,并且結(jié)合crop()方法對(duì)圖片進(jìn)行裁剪。

# 圖像縮放并裁剪
scale_factor = 2
crop_area = (50, 100, 250, 350)
image_arr = np.array(img)
width, height = image_arr.shape[1], image_arr.shape[0]
new_width, new_height = int(scale_factor * width), int(scale_factor * height)
new_image_arr = np.asarray(Image.fromarray(image_arr).resize((new_width, new_height)))
# 裁剪圖像
left, upper, right, lower = crop_area
cropped_image_arr = new_image_arr[upper:lower, left:right]
# 顯示處理過(guò)的圖片
plt.imshow(np.asarray(Image.fromarray(cropped_image_arr)))

顏色通道處理

在一些情況下,我們需要進(jìn)行圖像顏色通道處理。例如,我們可能需要將圖像轉(zhuǎn)換為灰度圖像或?qū)θ齻€(gè)顏色通道分別進(jìn)行操作,這可以用于實(shí)現(xiàn)許多視覺(jué)處理等算法中。

# 灰度化
gray_image_arr = np.dot(image_arr, [0.2989, 0.5870, 0.1140])
gray_image = Image.fromarray(np.uint8(gray_image_arr))
plt.imshow(np.asarray(gray_image))
# 顏色通道處理
red_channel_arr = np.zeros_like(image_arr)
red_channel_arr[:, :, 0] = image_arr[:, :, 0]
red_channel_image = Image.fromarray(np.uint8(red_channel_arr))
plt.imshow(np.asarray(red_channel_image))
green_channel_arr = np.zeros_like(image_arr)
green_channel_arr[:, :, 1] = image_arr[:, :, 1]
green_channel_image = Image.fromarray(np.uint8(green_channel_arr))
plt.imshow(np.asarray(green_channel_image))
blue_channel_arr = np.zeros_like(image_arr)
blue_channel_arr[:, :, 2] = image_arr[:, :, 2]
blue_channel_image = Image.fromarray(np.uint8(blue_channel_arr))
plt.imshow(np.asarray(blue_channel_image))

圖像濾波

圖像濾波是另一個(gè)有用的圖像處理任務(wù)。NumPy中提供了多種圖像濾波的方法,其中之一是卷積操作。下面的代碼演示如何使用3x3卷積核進(jìn)行圖像平滑化。

# 圖像平滑化
kernel = np.ones((3, 3), np.float32) / 9
smooth_image_arr = cv2.filter2D(image_arr, -1, kernel)
# 顯示濾波過(guò)后的圖片
plt.imshow(smooth_image_arr)

以上就是educoder之Python數(shù)值計(jì)算庫(kù)Numpy圖像處理詳解的詳細(xì)內(nèi)容,更多關(guān)于Python 數(shù)值計(jì)算庫(kù) Numpy的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 2020新版本pycharm+anaconda+opencv+pyqt環(huán)境配置學(xué)習(xí)筆記,親測(cè)可用

    2020新版本pycharm+anaconda+opencv+pyqt環(huán)境配置學(xué)習(xí)筆記,親測(cè)可用

    這篇文章主要介紹了2020新版本pycharm+anaconda+opencv+pyqt環(huán)境配置學(xué)習(xí)筆記,親測(cè)可用,特此分享到腳本之家平臺(tái),需要的朋友可以參考下
    2020-03-03
  • Python+matplotlib繪制不同大小和顏色散點(diǎn)圖實(shí)例

    Python+matplotlib繪制不同大小和顏色散點(diǎn)圖實(shí)例

    這篇文章主要介紹了Python+matplotlib繪制不同大小和顏色散點(diǎn)圖實(shí)例,matplotlib的用法是比較多種多樣的,下面一起看看其中的一個(gè)實(shí)例吧
    2018-01-01
  • Python?文檔解析lxml庫(kù)的使用詳解

    Python?文檔解析lxml庫(kù)的使用詳解

    lxml 是 Python 常用的文檔解析庫(kù),能夠高效地解析 HTML/XML 文檔,常用于 Python 爬蟲,這篇文章主要介紹了Python?文檔解析:lxml庫(kù)的使用,需要的朋友可以參考下
    2022-09-09
  • Python中如何將一個(gè)類方法變?yōu)槎鄠€(gè)方法

    Python中如何將一個(gè)類方法變?yōu)槎鄠€(gè)方法

    這篇文章主要介紹了Python中如何將一個(gè)類方法變?yōu)槎鄠€(gè)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 完美解決Python2操作中文名文件亂碼的問(wèn)題

    完美解決Python2操作中文名文件亂碼的問(wèn)題

    下面小編就為大家?guī)?lái)一篇完美解決Python2操作中文名文件亂碼的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧

    詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧

    這篇文章主要介紹了詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python OpenCV 直方圖的計(jì)算與顯示的方法示例

    Python OpenCV 直方圖的計(jì)算與顯示的方法示例

    這篇文章主要介紹了Python OpenCV 直方圖的計(jì)算與顯示的方法示例,主要介紹用NumPy和Matplotlib計(jì)算和繪制直方圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    JSON(JavaScript Object Nonation)是利用鍵值對(duì)+嵌套來(lái)表示數(shù)據(jù)的一種格式,以其輕量、易解析的優(yōu)點(diǎn),這篇文章主要介紹了利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換,需要的朋友可以參考下
    2019-07-07
  • 詳解python中的time和datetime的常用方法

    詳解python中的time和datetime的常用方法

    Python time time() 返回當(dāng)前時(shí)間的時(shí)間戳(1970紀(jì)元后經(jīng)過(guò)的浮點(diǎn)秒數(shù))。這篇文章主要介紹了python之time和datetime的常用方法 ,需要的朋友可以參考下
    2019-07-07
  • 一文秒懂pandas中iloc()函數(shù)

    一文秒懂pandas中iloc()函數(shù)

    iloc[]函數(shù)屬于pandas庫(kù)全稱為index?location,即對(duì)數(shù)據(jù)進(jìn)行位置索引,從而在數(shù)據(jù)表中提取出相應(yīng)的數(shù)據(jù),本文通過(guò)實(shí)例代碼介紹pandas中iloc()函數(shù),感興趣的朋友一起看看吧
    2023-04-04

最新評(píng)論