在當前的計算機領域,圖像處理是一個非常重要的領域,涵蓋了許多重要的應用場景,例如醫學影像診斷、圖像識別、安全監控等等。針對這些場景,我們需要對圖像進行一些處理,例如增強對比度、降噪、分割等等。Python語言在圖像處理方面也具有非常大的優勢,它具有豐富的圖像處理模塊,可以輕鬆實現各種圖像處理任務。
一、PIL模塊:圖像讀取和基本處理
PIL(Python Imaging Library)是一個常用的Python圖像處理的模塊,它可以輕鬆實現圖像讀取、圖像縮放、調整圖像對比度、圖像旋轉等基本的圖像處理任務。
from PIL import Image # 讀取圖像 im = Image.open('test.jpg') # 縮放圖像 im_resized = im.resize((100, 100)) # 調整對比度 im_contrasted = Image.eval(im, lambda x: x * 1.2) # 旋轉圖像 im_rotated = im.rotate(45)
通過上述代碼我們可以看到,通過PIL模塊可以輕鬆實現圖像處理的各種任務,只需要調用對應的方法即可。
二、OpenCV模塊:高級圖像處理
OpenCV(Open Source Computer Vision Library)是一個計算機視覺庫,它被廣泛應用在機器視覺、自動駕駛、圖像識別、安全監控等領域。OpenCV具有非常強的圖像處理能力,例如圖像分割、特徵提取、目標檢測、圖像跟蹤等等。在Python中,我們可以通過使用OpenCV的Python介面cv2來實現高級圖像處理任務。
import cv2 # 讀取圖像 img = cv2.imread("test.jpg") # 轉換為灰度圖像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 邊緣檢測 canny = cv2.Canny(gray, 100, 200) # 顯示圖像 cv2.imshow("Image", canny) cv2.waitKey(0)
通過上述代碼我們可以看到,使用OpenCV可以輕鬆實現圖像邊緣檢測等高級圖像處理任務,同時還可以輸出更為精細的圖像處理結果。
三、Scikit-image模塊:圖像分割和特徵提取
Scikit-image是一套基於Python的開源圖像處理工具,它可以實現圖像處理的多種任務,包括圖像分割和特徵提取等。Scikit-image提供了一系列基於Numpy和Scipy的極易使用的API,可以幫助我們快速實現各種圖像處理任務。
from skimage import data, segmentation, color from skimage.future import graph # 讀取圖像 img = data.coffee() # 生成超像素 labels1 = segmentation.slic(img, compactness=30, n_segments=400) # 計算顏色直方圖 edges = color.rgb2gray(img) edges = segmentation.mark_boundaries(edges, labels1, color=(1, 0, 0)) # 創建圖像圖 g = graph.rag_mean_color(img, labels1) # 合併相近的超像素 labels2 = graph.cut_normalized(labels1, g) # 更新文本 titles = ['Original', 'Superpixels', 'Edges', 'Final'] imgs = [img, labels1, edges, color.label2rgb(labels2, img, kind='avg')] fig, axs = plt.subplots(ncols=4, figsize=(10, 5)) for i, (title, img) in enumerate(zip(titles, imgs)): axs[i].imshow(img) axs[i].set_title(title) axs[i].axis('off') plt.tight_layout() plt.show()
通過上述代碼,我們可以看到,通過使用Scikit-image模塊可以輕鬆將圖像分割成不同的超像素,並計算各個超像素的顏色直方圖,最終得到一個較為準確的圖像分割結果。
四、結語
圖像處理是一個非常重要的領域,對於許多應用場景都至關重要。Python語言在圖像處理方面提供了豐富的模塊,可以輕鬆實現各種圖像處理任務,例如PIL模塊、OpenCV模塊、Scikit-image模塊等等。如果你還沒有接觸過這些模塊,趕快學習起來吧!
原創文章,作者:DJNP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133892.html