訂閱
糾錯
加入自媒體

基本的圖像處理操作

Python中的圖像處理基礎

圖像處理是一種對圖像執(zhí)行操作以從中提取信息或增強圖像的方法。圖像處理是當今計算機視覺中最熱門的話題之一,因為它被認為是計算機視覺、OCR 和其他相機相關領域的基礎。

讓我們開始實際處理圖像。

提示

只是在這里向你展示一個代碼片段,但在本文的末尾,提供了的git 存儲庫,你可以在其中找到此文中的所有代碼。你可以直接復制粘貼!

讓我們開始吧!

如何讀取圖像?

你可以通過 3 種類型讀取圖像。

1. 使用 open-cv

OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。OpenCV 旨在為計算機視覺應用程序提供通用基礎架構(gòu),并加速機器感知在商業(yè)產(chǎn)品中的使用。

這是讀取圖像的最常用方法。

import cv2

#read image by opencv

img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")

cv2.imshow("img",img_1)

cv2.waitKey(0)

cv2.destroyAllWindows()


cv2 讀取圖像

運行代碼后,將打開一個單獨的窗口,你將看到你的圖像。

· Waitley 代表你希望在屏幕上停留多長時間的時間。

· destroyAllWindows() 是用于在時間結(jié)束后刪除圖像的命令。

· 輸出圖像是數(shù)組的形式。

2. Pillow 庫

PIL(Python Imaging Library)為 Python 添加了許多圖像處理功能。Pillow 是 PIL 的一個分支,增加了一些用戶友好的特性。

# read image by PIL

from PIL import Image

# creating a object

img = Image.open(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")

img.show()

type(img)

輸出:

· 輸出格式為JPG格式[PIL.JpegImagePlugin.JpegImageFile

3. matplotlib庫

matplotlib 庫中的圖像模塊用于在 Python 中處理圖像。

#read image by matplotlib

import matplotlib.pyplot as plt

import matplotlib.image as mpimg

from matplotlib.pyplot import figure

figure(figsize=(4, 3), dpi=80)

img = mpimg.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg')

imgplot = plt.imshow(img)

plt.show()

輸出:

· 輸出圖像是數(shù)組的形式。

使圖像模糊

1. 高斯模糊

使圖像模糊的最簡單方法是使用高斯濾波器。高斯模糊只是一種借助高斯函數(shù)模糊圖像的方法。模糊圖像使邊緣更牢固。

#gaussian blurr

import cv2

img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")

blur = cv2.blur(img_1,(5,5))

cv2.imshow("img",blur)

cv2.waitKey(0)

cv2.destroyAllWindows()

2. 內(nèi)核模糊

你可以自定義模糊率和其他內(nèi)容。

#Kernel blurr

import numpy as np

kernel = np.ones((5,5),np.float32)/25

dst = cv2.filter2D(img_1,-1,kernel)

cv2.imshow("img",dst)

cv2.waitKey(0)

cv2.destroyAllWindows()

3. 中值模糊

##median blurr

img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")

median = cv2.medianBlur(img_1,17)

cv2.imshow("img",median)

cv2.waitKey(0)

cv2.destroyAllWindows()

· 這些是你可以使圖像模糊并更改模糊強度的方法。

將圖像轉(zhuǎn)換為黑白

· 我們以 RGB 三種顏色讀取圖像。很多時候我們想使用它的基礎版本,比如黑白。

######converting image into black and white

import cv2
 

img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")

grayImage = cv2.cvtColor(img_1, cv2.COLOR_BGR2GRAY)
(thresh, blackAndWhiteImage) = cv2.threshold(grayImage, 127, 255, cv2.THRESH_BINARY)

# cv2.imshow('Black white image', blackAndWhiteImage)

cv2.imshow('Gray image', grayImage)
 

cv2.waitKey(0)

cv2.destroyAllWindows()

· 你可以通過上面的代碼改變灰度的強度。

裁剪圖像

#Cropping Image

img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
x,y,c = img_1.shape

new_img = img_1[50:580, 100:300]  

cv2.imshow('Gray image', new_img)  

cv2.waitKey(0)

cv2.destroyAllWindows()  

· 裁剪非常簡單,因為你只需要提供從哪里開始和從哪里結(jié)束的坐標。

· 你可以使用 cv2.imwrite 存儲裁剪的圖像以供進一步處理。

編輯應用程序等對比效果

· 對比度決定圖像中陰影的數(shù)量。

· 在圖像特征的灰度基礎上進行區(qū)分,使用對比度。

######contrast

from PIL import Image, ImageEnhance
 

# Opening Image

im = Image.open(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
 

# Creating object of Contrast class

im3 = ImageEnhance.Contrast(im)
 

# showing resultant image

im3.enhance(4.9).show()

銳化圖像

· 很多時候,由于相機鏡頭沒有對焦,圖像會變得模糊。銳化效果銳化邊緣以獲得更好的外觀。

#sharpning an image

import numpy as np

import cv2

img1 = cv2.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg',1)

# Creating our sharpening filter

filter = np.a(chǎn)rray([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]])

# Applying cv2.filter2D function on our Cybertruck image

sharpen_img_1=cv2.filter2D(img1,-1,filter)

sharpen_img_1 = cv2. resize(sharpen_img_1, (960, 840))

cv2.imshow("sharp",sharpen_img_1)

cv2.waitKey(0)

cv2.destroyAllWindows()  

壓紋濾鏡

import cv2

img1 = cv2.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg',1)

(b,g,r)=cv2.split(img1)

r_new = r*0.393 + g*0.769 + b*0.189

g_new = r*0.349 + g*0.686 + b*0.168

b_new = r*0.272 + g*0.534 + b*0.131

img_new=cv2.merge([b_new, g_new, r_new])

cv2.imshow("img",img_new)

cv2.waitKey(0)

cv2.destroyAllWindows()

小提示:內(nèi)核中這些不同值的組合是生成你當前在 Instagram、Snapchat 和其他社交媒體上使用的許多濾鏡的基礎。

以任意角度旋轉(zhuǎn)圖像

· 通過這種簡單的 cv2 方法,可以實現(xiàn)所有圖像數(shù)據(jù)增強,如旋轉(zhuǎn)、翻轉(zhuǎn)、垂直和水平。

# Creating our emboss filter

img_1 = cv2.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg',1)

filter = np.a(chǎn)rray([[0,1,0],[0,0,0],[0,-1,0]])

# Applying cv2.filter2D function on our Cybertruck image

emboss_img_1=cv2.filter2D(img_1,-1,filter)

emboss_img_1=emboss_img_1+128

emboss_img_1 = cv2. resize(emboss_img_1, (660, 640))

cv2.imshow("dsnfj",emboss_img_1)

cv2.waitKey(0)

cv2.destroyAllWindows()

縮。{(diào)整圖像大小

· 對于更大尺寸的圖像,數(shù)據(jù)要求更多。所以縮小有時可以提高它的可見性和功能。

# import the Python Image

# processing Library

from PIL import Image

# Giving The Original image Directory

# Specified

Original_Image = Image.open(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")

# Rotate Image By 180 Degree

rotated_image1 = Original_Image.rotate(180)

# This is Alternative Syntax To Rotate

# The Image

rotated_image2 = Original_Image.transpose(Image.ROTATE_90)

# This Will Rotate Image By 60 Degree

rotated_image3 = Original_Image.rotate(60)

rotated_image1.show()

rotated_image2.show()

rotated_image3.show()

在圖像上寫文字

水印或任何其他文本是圖像中的重要因素之一。下面的程序?qū)⒆屇懔私馊绾卧趫D像上編寫文本。

###shrink image

img_1 = cv2.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg',1)

img_shrinked = cv2.resize(img_1,(150, 150), interpolation = cv2.INTER_AREA)

cv2.imshow('img',img_shrinked)

cv2.waitKey(0)

cv2.destroyAllWindows()

這些是我覺得有趣的圖像處理操作。這些所有操作都基于許多圖像編輯應用程序。你可以通過結(jié)合所有技術(shù)來創(chuàng)建相同的應用程序。

       原文標題 : 基本的圖像處理操作

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號