Python?OpenCV中常用圖片處理函數(shù)小結(jié)
在計(jì)算機(jī)視覺(jué)和圖像處理領(lǐng)域,OpenCV(Open Source Computer Vision Library)是一個(gè)非常強(qiáng)大和流行的開(kāi)源庫(kù)。它提供了豐富的函數(shù)和工具,用于處理圖像和視頻數(shù)據(jù)。本文將介紹一些常用的OpenCV函數(shù),包括圖像讀取、顯示、保存、調(diào)整大小、轉(zhuǎn)換顏色空間、圖像濾波、邊緣檢測(cè)等,并提供詳細(xì)的示例代碼可以更好地理解和應(yīng)用。
安裝OpenCV庫(kù)
在開(kāi)始之前,需要確保已經(jīng)安裝了OpenCV庫(kù)。
可以使用pip來(lái)安裝OpenCV:
pip install opencv-python
圖像讀取、顯示和保存
在OpenCV中,可以使用cv2.imread()函數(shù)讀取圖像,使用cv2.imshow()函數(shù)顯示圖像,使用cv2.imwrite()函數(shù)保存圖像。
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 顯示圖像 cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows() # 保存圖像 cv2.imwrite('output.jpg)
調(diào)整圖像大小
在圖像處理中,經(jīng)常需要調(diào)整圖像的大小以適應(yīng)不同的需求??梢允褂胏v2.resize()函數(shù)來(lái)調(diào)整圖像的大小。
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 調(diào)整圖像大小為寬度為300像素,高度自動(dòng)調(diào)整 resized_image = cv2.resize(image, (300, 0)) # 顯示調(diào)整大小后的圖像 cv2.imshow('Resized Image', resized_image) cv2.waitKey(0) cv2.destroyAllWindows()
轉(zhuǎn)換顏色空間
在圖像處理中,經(jīng)常需要將圖像從一種顏色空間轉(zhuǎn)換到另一種顏色空間。OpenCV提供了cv2.cvtColor()函數(shù)來(lái)實(shí)現(xiàn)顏色空間的轉(zhuǎn)換。
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 將圖像從BGR顏色空間轉(zhuǎn)換為灰度顏色空間 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 顯示灰度圖像 cv2.imshow('Gray Image', gray_image) cv2.waitKey(0) cv2.destroyAllWindows()
圖像濾波
圖像濾波是圖像處理中常用的技術(shù)之一,用于平滑圖像、去除噪聲、邊緣檢測(cè)等。OpenCV提供了多種圖像濾波函數(shù),包括高斯濾波、中值濾波等。
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 高斯濾波 blurred_image = cv2.GaussianBlur(image, (5, 5), 0) # 顯示濾波后的圖像 cv2.imshow('Blurred Image', blurred_image) cv2.waitKey(0) cv2.destroyAllWindows()
邊緣檢測(cè)
邊緣檢測(cè)是圖像處理中的重要任務(wù)之一,可以幫助識(shí)別圖像中的物體邊界和輪廓。OpenCV提供了多種邊緣檢測(cè)算法,包括Sobel算子、Canny邊緣檢測(cè)等。
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 將圖像轉(zhuǎn)換為灰度圖像 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 使用Canny邊緣檢測(cè)算法檢測(cè)邊緣 edges = cv2.Canny(gray_image, 100, 200) # 顯示邊緣檢測(cè)結(jié)果 cv2.imshow('Edges', edges) cv2.waitKey(0) cv2.destroyAllWindows()
圖像旋轉(zhuǎn)和仿射變換
除了調(diào)整大小和顏色空間轉(zhuǎn)換外,有時(shí)候還需要對(duì)圖像進(jìn)行旋轉(zhuǎn)或者仿射變換。OpenCV提供了cv2.rotate()函數(shù)來(lái)實(shí)現(xiàn)圖像的旋轉(zhuǎn),以及cv2.warpAffine()函數(shù)來(lái)實(shí)現(xiàn)仿射變換。
import cv2 import numpy as np # 讀取圖像 image = cv2.imread('example.jpg') # 獲取圖像的高度和寬度 height, width = image.shape[:2] # 旋轉(zhuǎn)圖像90度 rotated_image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) # 定義旋轉(zhuǎn)矩陣(逆時(shí)針旋轉(zhuǎn)45度) rotation_matrix = cv2.getRotationMatrix2D((width/2, height/2), 45, 1) # 進(jìn)行仿射變換 affine_transformed_image = cv2.warpAffine(image, rotation_matrix, (width, height)) # 顯示旋轉(zhuǎn)后的圖像和仿射變換后的圖像 cv2.imshow('Rotated Image', rotated_image) cv2.imshow('Affine Transformed Image', affine_transformed_image) cv2.waitKey(0) cv2.destroyAllWindows()
圖像輪廓和形狀檢測(cè)
在圖像處理和計(jì)算機(jī)視覺(jué)中,常常需要檢測(cè)圖像中的輪廓和形狀。OpenCV提供了cv2.findContours()函數(shù)來(lái)尋找圖像中的輪廓,以及cv2.drawContours()函數(shù)來(lái)繪制輪廓。
import cv2 # 讀取圖像 image = cv2.imread('example.jpg') # 將圖像轉(zhuǎn)換為灰度圖像 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 使用Canny邊緣檢測(cè)算法檢測(cè)邊緣 edges = cv2.Canny(gray_image, 100, 200) # 尋找圖像中的輪廓 contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 繪制輪廓 contour_image = cv2.drawContours(image.copy(), contours, -1, (0, 255, 0), 2) # 顯示輪廓圖像 cv2.imshow('Contours', contour_image) cv2.waitKey(0) cv2.destroyAllWindows()
圖像特征提取和匹配
圖像特征提取和匹配是計(jì)算機(jī)視覺(jué)中的重要任務(wù),可以用于圖像識(shí)別、目標(biāo)跟蹤等應(yīng)用。OpenCV提供了多種特征提取和匹配算法,包括SIFT、SURF、ORB等。
import cv2 # 讀取圖像 image1 = cv2.imread('example1.jpg') image2 = cv2.imread('example2.jpg') # 將圖像轉(zhuǎn)換為灰度圖像 gray_image1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY) gray_image2 = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY) # 創(chuàng)建SIFT檢測(cè)器 sift = cv2.SIFT_create() # 檢測(cè)關(guān)鍵點(diǎn)和描述符 keypoints1, descriptors1 = sift.detectAndCompute(gray_image1, None) keypoints2, descriptors2 = sift.detectAndCompute(gray_image2, None) # 創(chuàng)建匹配器 bf = cv2.BFMatcher() # 使用KNN匹配 matches = bf.knnMatch(descriptors1, descriptors2, k=2) # 應(yīng)用比率測(cè)試 good_matches = [] for m, n in matches: if m.distance < 0.75 * n.distance: good_matches.append([m]) # 繪制匹配結(jié)果 match_image = cv2.drawMatchesKnn(image1, keypoints1, image2, keypoints2, good_matches, None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS) # 顯示匹配結(jié)果 cv2.imshow('Matches', match_image) cv2.waitKey(0) cv2.destroyAllWindows()
總結(jié)
本文介紹了Python中使用OpenCV庫(kù)進(jìn)行圖像處理的一些常用函數(shù)和技術(shù),包括圖像讀取、顯示、保存、調(diào)整大小、轉(zhuǎn)換顏色空間、圖像濾波、邊緣檢測(cè)、圖像旋轉(zhuǎn)和仿射變換、圖像輪廓和形狀檢測(cè)、圖像特征提取和匹配等。通過(guò)合理地應(yīng)用這些函數(shù)和技術(shù),可以實(shí)現(xiàn)各種圖像處理和計(jì)算機(jī)視覺(jué)任務(wù),為圖像分析、目標(biāo)識(shí)別、圖像檢測(cè)等領(lǐng)域的應(yīng)用提供支持。希望本文能夠幫助大家更好地理解和應(yīng)用OpenCV庫(kù),在實(shí)際的項(xiàng)目中發(fā)揮其作用。
以上就是Python OpenCV中常用圖片處理函數(shù)小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Python OpenCV圖片處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python使用imageio庫(kù)處理圖像與視頻的操作詳解
imageio 是一個(gè) Python 庫(kù),用于讀取和寫(xiě)入多種圖像和視頻格式,它功能強(qiáng)大、易于使用,廣泛應(yīng)用于圖像處理、視頻編輯和數(shù)據(jù)可視化等領(lǐng)域,本篇文章將介紹 imageio 的基礎(chǔ)功能、常見(jiàn)用法以及高級(jí)操作,需要的朋友可以參考下2024-12-12超全面python常見(jiàn)報(bào)錯(cuò)以及解決方案梳理必收藏
使用python難免會(huì)出現(xiàn)各種各樣的報(bào)錯(cuò),以下是Python常見(jiàn)的報(bào)錯(cuò)以及解決方法(持續(xù)更新),快進(jìn)入收藏吃灰吧2022-03-03python 用 xlwings 庫(kù) 生成圖表的操作方法
這篇文章主要介紹了python 用 xlwings 庫(kù) 生成圖表的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12使用Gitee自動(dòng)化部署python腳本的詳細(xì)過(guò)程
小編最近在自學(xué)python,在學(xué)習(xí)過(guò)程中有好多意向不到的收獲,真的很開(kāi)心,今天重點(diǎn)給大家分享使用Gitee自動(dòng)化部署python腳本的詳細(xì)過(guò)程,包括安裝環(huán)境搭建及一些注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧2021-05-05DRF之請(qǐng)求與響應(yīng)的實(shí)現(xiàn)
本文主要介紹了DRF請(qǐng)求與響應(yīng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07pandas中std和numpy的np.std區(qū)別及說(shuō)明
這篇文章主要介紹了pandas中std和numpy的np.std區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08Python使用captcha庫(kù)制作帶參數(shù)輸入驗(yàn)證碼案例
這篇文章主要介紹了Python使用captcha庫(kù)制作驗(yàn)證碼,帶參數(shù)輸入,本文通過(guò)實(shí)例案例解析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05