欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Opencv圖像處理方法最全總結(jié)

 更新時間:2024年06月11日 11:56:38   作者:程序小旭  
這篇文章主要給大家介紹了關(guān)于Opencv圖像處理方法的相關(guān)資料,OpenCV是一個開源的計算機視覺庫,提供了很多圖像處理、計算機視覺和機器學習等方面的函數(shù)和工具,被廣泛應用于各種計算機視覺領(lǐng)域的研究和應用中,需要的朋友可以參考下

圖像閾值處理

圖像閾值的處理通過cv2.threshold函數(shù)來進行處理,該函數(shù)的具體說明如下所示

ret, dst = cv2.threshold(src, thresh, maxval, type)

  • src: 輸入圖,只能輸入單通道圖像,通常來說為灰度圖

  • dst: 輸出圖

  • thresh: 閾值

  • maxval: 當像素值超過了閾值(或者小于閾值,根據(jù)type來決定),所賦予的值

  • type:二值化操作的類型,包含以下5種類型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV

cv2.THRESH_BINARY 超過閾值部分取maxval(最大值),否則取0
cv2.THRESH_BINARY_INV THRESH_BINARY的反轉(zhuǎn)
cv2.THRESH_TRUNC 大于閾值部分設(shè)為閾值,否則不變
cv2.THRESH_TOZERO 大于閾值部分不改變,否則設(shè)為0
cv2.THRESH_TOZERO_INV THRESH_TOZERO的反轉(zhuǎn)

  • 讀取圖像信息并將其轉(zhuǎn)化為灰度圖
import cv2 #opencv讀取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt#Matplotlib是RGB
%matplotlib inline 
def showimg(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
img_dog = cv2.imread('./res/dog.jpg')
# 轉(zhuǎn)化為灰度圖
img_gray = cv2.cvtColor(img_dog,cv2.COLOR_BGR2GRAY)
img_gray.shape
showimg("dog",img_gray)

  • 測試圖像閾值的處理,并在行內(nèi)繪制經(jīng)過圖像閾值處理之后的圖像信息(彩色圖像進行處理)
ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV)

titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
images = [img_dog, thresh1, thresh2, thresh3, thresh4, thresh5]
# 繪制出所需的圖像信息
for i in range(6):
    plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

圖像平滑處理

首先引出圖像平滑處理的概念 -> 讀入(給出)一張含有多個圖像噪音的圖片。對圖像進行平滑處理可以簡單的理解為使用濾波去除圖像中噪音的過程

  • 讀入并展示含有噪音的經(jīng)典圖像數(shù)據(jù)
img_n = cv2.imread('./res/lenaNoise.png')
showimg('noise',img_n)

濾波可以類比與卷積操作,對圖像中的像素值進行處理
使用均值濾波對圖像進行處理。

cv2.blur(img, (3, 3))

  • img輸入圖像
  • (3,3)(5,5)處理的區(qū)域大小
# 均值濾波
# 簡單的平均卷積操作
blur = cv2.blur(img_n, (3, 3))

cv2.imshow('blur', blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

從而可以看出明顯的平滑處理的樣式

# 方框濾波
# 基本和均值一樣,可以選擇歸一化(True進行平均 False )
box = cv2.boxFilter(img_n,-1,(3,3), normalize=False)  

cv2.imshow('box', box)
cv2.waitKey(0)
cv2.destroyAllWindows()

其他使用較多的方式包括了均值濾波和高斯濾波等一些常規(guī)的方法

# 高斯濾波
# 高斯模糊的卷積核里的數(shù)值是滿足高斯分布,相當于更重視中間的
aussian = cv2.GaussianBlur(img_n, (5, 5), 1)  

cv2.imshow('aussian', aussian)
cv2.waitKey(0)
cv2.destroyAllWindows()
#%%
# 中值濾波
# 相當于用中值代替
median = cv2.medianBlur(img_n, 5)  # 中值濾波

cv2.imshow('median', median)
cv2.waitKey(0)
cv2.destroyAllWindows()

所有的平滑處理結(jié)果進行展示

# 展示所有的
res = np.hstack((blur,aussian,median))
#print (res)
cv2.imshow('median vs average', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

圖像形態(tài)學操作

圖像的形態(tài)學操作大多處理的是黑白背景的圖片

圖像的腐蝕操作 :(即設(shè)置迭代的次數(shù)和操作的大?。Π咨倪吘墔^(qū)域來進行進一步的處理。

dige = cv2.imread('./res/dige.png')

cv2.imshow('img', dige)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.erode(dige,kernel,iterations = 2)

  • 圖像
  • 操作大小
  • 迭代次數(shù)
kernel = np.ones((3,3),np.uint8) 
erosion = cv2.erode(dige,kernel,iterations = 2)

cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

腐蝕操作的一個逆操作可以看作是一個膨脹操作。(使得白色的區(qū)域變大)

在執(zhí)行腐蝕完成之后白色的小區(qū)域雖然去掉了,但是線條的大小變小,因此需要使用膨脹操作

cv2.dilate(erosion,kernel,iterations = 1)

  • erosion經(jīng)過腐蝕操作之后的圖像。
kernel = np.ones((3,3),np.uint8) 
dige_dilate = cv2.dilate(erosion,kernel,iterations = 1)

cv2.imshow('dilate', dige_dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()

完成膨脹操作進行擴充線條的粗細。

開運算與閉運算

開運算(cv2.MORPH_OPEN):先腐蝕,再膨脹 閉運算(cv2.MORPH_CLOSE):先膨脹,再腐蝕

本質(zhì)就是一個綜合進行處理的過程信息。cv2.morphologyEx()

# 開:先腐蝕,再膨脹
img = cv2.imread('dige.png')

kernel = np.ones((5,5),np.uint8) 
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 閉:先膨脹,再腐蝕
img = cv2.imread('dige.png')

kernel = np.ones((5,5),np.uint8) 
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()

梯度運算

梯度(cv2.MORPH_GRADIENT)=膨脹-腐蝕:簡單理解是梯度運算是用來篩選圖片的邊界區(qū)域的。

  • 水平連接經(jīng)過膨脹和腐蝕的兩個區(qū)域。
    res = np.hstack((dilate,erosion))
# 梯度=膨脹-腐蝕
pie = cv2.imread('./res/pie.png')
kernel = np.ones((7,7),np.uint8) 
dilate = cv2.dilate(pie,kernel,iterations = 5)
erosion = cv2.erode(pie,kernel,iterations = 5)

res = np.hstack((dilate,erosion))

cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

  • 執(zhí)行梯度運算來進行篩選。
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)

cv2.imshow('gradient', gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()

總結(jié) 

到此這篇關(guān)于Opencv圖像處理方法的文章就介紹到這了,更多相關(guān)Opencv圖像處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用技巧-查找文件?

    python使用技巧-查找文件?

    這篇文章主要分享的是python使用技巧查找文件,下面我們就來介紹針對python查找文件的相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • opencv鎖定鼠標定位的實現(xiàn)

    opencv鎖定鼠標定位的實現(xiàn)

    本文主要介紹了opencv鎖定鼠標定位的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python 制作糗事百科爬蟲實例

    Python 制作糗事百科爬蟲實例

    本文是結(jié)合前面的三篇關(guān)于python制作爬蟲的基礎(chǔ)文章,給大家分享的一份爬取糗事百科的小段子的源碼,有需要的小伙伴可以參考下
    2016-09-09
  • python 輸出所有大小寫字母的方法

    python 輸出所有大小寫字母的方法

    今天小編就為大家分享一篇python 輸出所有大小寫字母的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 10個Python自動化辦公的腳本分享

    10個Python自動化辦公的腳本分享

    在日常辦公中,我們常常會被繁瑣、重復的任務占據(jù)大量時間,本文為大家分享了10個實用的?Python?自動化辦公案例及源碼,希望對大家有所幫助
    2025-02-02
  • python循環(huán)神經(jīng)網(wǎng)絡RNN函數(shù)tf.nn.dynamic_rnn使用

    python循環(huán)神經(jīng)網(wǎng)絡RNN函數(shù)tf.nn.dynamic_rnn使用

    這篇文章主要為大家介紹了python循環(huán)神經(jīng)網(wǎng)絡RNN的tf.nn.dynamic_rnn使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 解決NameError:name'pip'is not defined使用pip時報錯問題

    解決NameError:name'pip'is not defined使用pip

    使用pip時遇到NameError:name ‘pip’ is not defined錯誤通常是由于在Python環(huán)境內(nèi)直接嘗試運行pip命令導致的,正確的做法是在Python外部的命令行中運行pip命令,這個錯誤提醒我們在使用pip時,應確保在正確的環(huán)境中執(zhí)行相關(guān)命令
    2024-10-10
  • 使用selenium+chromedriver+xpath爬取動態(tài)加載信息

    使用selenium+chromedriver+xpath爬取動態(tài)加載信息

    這篇文章主要介紹了使用selenium+chromedriver+xpath爬取動態(tài)加載信息
    2022-02-02
  • Python實現(xiàn)郵件發(fā)送功能的方法詳解

    Python實現(xiàn)郵件發(fā)送功能的方法詳解

    本文將學會各種類型的郵件發(fā)送方式,比如普通文本郵件、帶附件的郵件等等,如何通過程序發(fā)送郵件現(xiàn)在我們還不太了解,接下來就會為大家進行詳細的介紹
    2022-05-05
  • 解決python中的冪函數(shù)、指數(shù)函數(shù)問題

    解決python中的冪函數(shù)、指數(shù)函數(shù)問題

    今天小編就為大家分享一篇解決python中的冪函數(shù)、指數(shù)函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評論