<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在影象處理領域,NumPy可以幫助我們高效地對影象進行處理。通過使用NumPy中的陣列操作,我們可以快速地完成各種基本的影象處理任務,例如影象的裁剪、縮放、翻轉、色彩模式轉換等
首先,在處理影象之前,我們需要將影象載入到Python程式中。在Python中,可以使用PIL(Python Imaging Library)或OpenCV等庫來讀取影象。下面是使用PIL庫讀取一張圖片並在視窗中顯示的範例程式碼:
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()
接下來,我們看一下如何通過NumPy來調整影象的大小。有時候,我們需要將一個大尺寸的影象縮放成小尺寸的影象。在這裡,我們將使用ndarray物件的resize()方法以及scipy.interpolate中的interpolate()方法實現影象的縮放。
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()方法實現縮放 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) # 重新轉為影象格式,顯示出來觀察。 new_image = Image.fromarray(np.uint8(new_image_arr)) plt.imshow(np.asarray(new_image)) plt.show()
在有些場景下,我們需要將影象水平或垂直翻轉。NumPy中提供了flip()方法來實現影象的翻轉操作。
# 將影象水平翻轉 img_flip_horizontal = np.fliplr(image_arr) # 將影象垂直翻轉 img_flip_vertical = np.flipud(image_arr)
調整影象大小是常見的影象處理任務,除此之外,您還可能需要對影象進行裁剪或者縮放的同時進行裁剪。在這裡,我們使用與之前一樣的方法,即resize()實現影象縮放,並且結合crop()方法對圖片進行裁剪。
# 影象縮放並裁剪 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] # 顯示處理過的圖片 plt.imshow(np.asarray(Image.fromarray(cropped_image_arr)))
在一些情況下,我們需要進行影象顏色通道處理。例如,我們可能需要將影象轉換為灰度影象或對三個顏色通道分別進行操作,這可以用於實現許多視覺處理等演演算法中。
# 灰度化 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))
影象濾波是另一個有用的影象處理任務。NumPy中提供了多種影象濾波的方法,其中之一是折積操作。下面的程式碼演示如何使用3x3折積核進行影象平滑化。
# 影象平滑化 kernel = np.ones((3, 3), np.float32) / 9 smooth_image_arr = cv2.filter2D(image_arr, -1, kernel) # 顯示濾波過後的圖片 plt.imshow(smooth_image_arr)
以上就是educoder之Python數值計算庫Numpy影象處理詳解的詳細內容,更多關於Python 數值計算庫 Numpy的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45