国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OpenCV圖像預處理常用函數(shù)及流程

這篇具有很好參考價值的文章主要介紹了OpenCV圖像預處理常用函數(shù)及流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

OpenCV圖像預處理常用函數(shù)及流程

1.OpenCV環(huán)境配置

在PyCharm終端中,運行如下命令

pip install opencv-python   # 安裝opencv包
pip install opencv-contrib-python  # 安裝opencv輔助包

由于默認使用的為外網(wǎng)資源,下載速度和穩(wěn)定性較差,具體看網(wǎng)絡狀態(tài)。如下命令為使用清華鏡像下載安裝相應的包

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple  # 安裝opencv包
pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple  # 安裝opencv輔助包

在終端中運行命令時,Windows10系統(tǒng)可能會存在如下報錯:無法加載激活文件,因此在此系統(tǒng)上禁止運行腳本。此情況是因為windows新的權(quán)限執(zhí)行策略的改變,需要在PowerShell中進行權(quán)限的更改??赏ㄟ^開始菜單欄找到Windows PowerShell。注意使用以管理員身份運行,否則無法更改執(zhí)行策略。

OpenCV圖像預處理常用函數(shù)及流程

在PowerShell中執(zhí)行如下命令:

Get-ExecutionPolicy

如果輸出值為

Restricted

則表明目前系統(tǒng)上禁止運行沒有數(shù)字簽名的腳本。需要運行如下命令,將執(zhí)行策略更改為remotesigned模式

Set-ExecutionPolicy Bypass

之后重啟Pycharm,重新執(zhí)行OpenCV的安裝命令即可。

2.圖像預處理流程及對應函數(shù)

OpenCV英文官方文檔鏈接:OpenCV: OpenCV-Python Tutorials

OpenCV中文文檔:OpenCV官方文檔_w3cschool

OpenCV中文文檔:OpenCV中文官方文檔 (woshicver.com)

(1)圖像讀取與顏色空間轉(zhuǎn)換

img_bgr = cv2.imread("1.jpg")  # 讀取彩色圖像,在OpenCV中,圖像以BGR形式存儲
img_gray = cv2.imread("1.jpg", cv2.IMREAD_GRAYSCALE)  # 讀取灰度圖像

img_hsv = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2HSV)  # 顏色空間的轉(zhuǎn)換,從BGR轉(zhuǎn)換為HSV
img_gray1 = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY)  # 顏色空間的轉(zhuǎn)換,從BGR轉(zhuǎn)換為GRAY

(2)圖像的顯示

cv2.imshow("img_bgr", img_bgr)  # 顯示圖像,參數(shù)分別為窗口名稱以及圖像變量
cv2.waitKey(0)  # 圖像顯示時長,0表示等待鍵盤操作
cv2.destroyAllWindows()  # 顯示結(jié)束,銷毀窗口

(3)圖像基本屬性

# 圖像的高度和寬度
img_bgr.shape   # (1106, 656, 3)  返回結(jié)果時一個tuple類型,第一個數(shù)字表示圖像的高度,第二個數(shù)字表示圖像的寬度,第三個數(shù)字表示圖像的通道數(shù),BGR為3個通道,GRAY為2個通道
h,w = img_bgr.shape[:2]  # (1106, 656)

# 獲取圖像的圖層信息
img_b = img_bgr[:, :, 0]  # B通道
img_g = img_bgr[:, :, 1:2]  # G通道
img_r = img_bgr[:, :, 2:3]  # R通道

# 圖像的size
img_bgr.size   # 2176608   即1106*656*3

# 直接獲取圖像的局部信息
img_bgr[0:100,0:500]  # 沿h方向0到100,沿w方向0到500的范圍

# 在做預處理的時候,通常會使用到numpy模塊,用來創(chuàng)建數(shù)組(圖像)
np.zeros((100, 200), dtype=np.uint8)  # 表示創(chuàng)建沿h=100,w=200的全黑圖像

(4)圖像濾波

常用濾波算法包含如下幾類:均值濾波、中值濾波、高斯濾波、雙邊濾波等文章來源地址http://www.zghlxwxcb.cn/news/detail-446842.html

# medianBlur(src, ksize, dst=None): 中值濾波可有效去除椒鹽噪聲,且能夠保證圖像的細節(jié)信息,不改變圖像邊緣線條的粗細
# src:待濾波圖像,ksize:濾波核,為int類型數(shù)據(jù)
img_median_blur = cv2.medianBlur(img_bgr, 3)

# blur(src, ksize, dst=None, anchor=None, borderType=None):  均值濾波在去除噪聲的同時,會使得圖像信息模糊
# src:待濾波圖像,ksize:濾波核,為tuple類型數(shù)據(jù)
img_blur = cv2.blur(img_bgr, (3, 3))

# GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)  高斯濾波則可以有效去除高斯噪聲,會使圖像在一定程度上模糊
# src:待濾波圖像,ksize:濾波核,為tuple類型數(shù),sigmax:沿x方向的高斯標準差
img_gaussian = cv2.GaussianBlur(img_blur, (3, 3), sigmaX=1)

# bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)  雙邊濾波是對高斯濾波的改進算法,主要去除高斯噪聲,同時較好的保留了圖像的邊緣信息
# src:待濾波圖像
# d:濾波時選取的空間距離參數(shù),表示濾波時使用像素的鄰域直徑,如果是非正數(shù),則會從sigmaSpace中計算得出。相當于高斯濾波中的濾波核。通常選取d=5,如果d過大,會導致濾波速度較慢
# sigmaColor:顏色空間標準差,代表濾波處理時選取的顏色差值范圍,值越大表示鄰域內(nèi)參與到的濾波的像素值越多
# sigmaSpace:坐標空間標準差,代表濾波處理時選取的坐標范圍,值越大,表示越遠區(qū)域內(nèi)的像素值差不多的像素能夠互相影響。
img_bilater = cv2.bilateralFilter(img, 5, 75, 75)

(5)圖像二值化

# threshold(src, thresh, maxval, type, dst=None):
# src:待二值化圖像,thresh:閾值
# maxval:使用THRESH_BINARY 和 THRESH_BINARY_INV 二值化方法時,將超過閾值部分的像素值設置為maxval所表示的像素值
# type:二值化所使用的方法包含THRESH_BINARY 和 THRESH_BINARY_INV,THRESH_OTSU,THRESH_TRIANGLE,THRESH_TRUNC,具體用法可參見官方文檔
_, img_threshold = cv2.threshold(img_gray, 100, 255, cv2.THRESH_BINARY)

# 這里需要注意,threshold()函數(shù)主要用來處理二通道的圖像, 即灰度圖

(6)圖像形態(tài)學處理

# 形態(tài)學處理即對圖形進行腐蝕和膨脹處理,隨之帶來的概念有開運算和閉運算。一下以二值化圖像為例
# 腐蝕:黑色區(qū)域變多,而白色區(qū)域變少
# 膨脹:與腐蝕相反,白色區(qū)域變多,黑色區(qū)域變少
# 開運算:先腐蝕再膨脹
# 閉運算:先膨脹再腐蝕

# erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)
# src:待腐蝕的圖像,kernel:腐蝕使用的核,iterations:腐蝕次數(shù)

# dilate(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)
# src:待膨脹的圖像,kernel:膨脹使用的核,iterations:膨脹次數(shù)

# morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None):
# src:待處理的圖像,kernel:處理時使用的核,iterations:次數(shù)
# op:MORPH_ERODE 腐蝕、MORPH_DILATE 膨脹、MORPH_OPEN 開運算、MORPH_CLOSE 閉運算

kernel = np.ones((3, 3))  # 定義一個全1的腐蝕核
cv2.erode(img_bgr, kernel, iterations=2)  # 對img_bgr進行腐蝕,腐蝕兩次
cv2.dilate(img_bgr, kernel, iterations=2)  # 對img_bgr進行膨脹,膨脹兩次
cv2.morphologyEx(img_bgr, cv2.MORPH_OPEN, kernel, iterations=2)  # 進行兩次開運算
cv2.morphologyEx(img_bgr, cv2.MORPH_CLOSE, kernel, iterations=2)  # 進行兩次閉運算

(7)圖像的邊緣提取

# Canny(image, threshold1, threshold2, edges=None, apertureSize=None, L2gradient=None):
# image:待處理的圖像
# threshold1,threshold2:我們就可以設置兩個閾值,一個低閾值,一個高閾值。低閾值用來過濾噪聲和突變不明顯的線條,高閾值用來保留輪廓線。在低閾值和高閾值之間,且和輪廓線相鄰的線條可保留,否則舍棄

canny = cv2.Canny(img_bgr, 100, 200)

(8)圖像的輪廓提取

# findContours(image, mode, method, contours=None, hierarchy=None, offset=None):
# image:待處理圖像
# mode:輪廓的檢索模式,包含cv2.RETR_EXTERNAL表示只檢測外輪廓,cv2.RETR_TREE建立一個等級樹結(jié)構(gòu)的輪廓,cv2.RETR_LIST檢測的輪廓不建立等級關(guān)系,cv2.RETR_CCOMP建立兩個等級的輪廓,具體參見官網(wǎng)
# method:輪廓的近似辦法, cv2.CHAIN_APPROX_NONE存儲所有的輪廓點,cv2.CHAIN_APPROX_SIMPLE壓縮水平方向,垂直方向,對角線方向的元素,只保留該方向的終點坐標

contours, _ = cv2.findContours(img_threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cv2.drawContours(img_bgr, contours, -1, (255, 0, 0), 2)

# 這里需要注意的是,findContours()主要針對二通道圖像,灰度圖

(9)仿射變換

# getPerspectiveTransform(src, dst, solveMethod=None):   求取變換矩陣
# src:原圖上選取的點,dst:轉(zhuǎn)換后對應的坐標點,返回值為一個二維矩陣

# warpPerspective(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=None):  進行仿射變換
# src:要進行仿射變換的圖像,M:變換矩陣,dsize:變換后圖像的尺寸

src = np.float32([[748, 120], [750, 1300], [115, 1280], [110, 121]])  # 確定原圖上的四個點,這里隨意選取的點
dst = np.float32([[660, 0], [660, 1110], [0, 1110], [0, 0]])  # 確定仿射變換后對應的四個點,
M = cv2.getPerspectiveTransform(src, dst)  # 確定放射變換矩陣
img_p = cv2.warpPerspective(img_bgr, M, (660, 1110))  # 進行透視變換

(10)霍夫圓變換

# HoughCircles(image, method, dp, minDist, circles=None, param1=None, param2=None, minRadius=None, maxRadius=None):
# image:要檢測的圓的圖像,minDist:檢測到的圓之間的最小中心距離,minRadius、maxRadius檢測到圓的最小半徑和最大半徑
# method:檢測方法,當前有cv2.HOUGH_GRADIENT和cv2.HOUGH_GRADIENT_ALT 2種方法,后者是前者的改進方法
# dp:檢測圓心的累加器精度和圖像精度比的倒數(shù),比如dp=1時累加器和輸入圖像有相同的分辨率,dp=2時累加器是輸入圖像一半大的寬高;method=cv2.HOUGH_GRADIENT_ALT時推薦設置dp=1.5
# param1:特定方法參數(shù),和method配合;當method=cv2.HOUGH_GRADIENT或method=cv2.HOUGH_GRADIENT_ALT時,該參數(shù)是canny檢測的高閾值,低閾值是該參數(shù)的一半;method=cv2.HOUGH_GRADIENT_ALT時,內(nèi)部使用Scharr計算圖像梯度,這個值通常要設置得更大。
# param2:特定方法參數(shù),和method配合;當method=cv2.OUGH_GRADIENT,它表示檢測階段圓心的累加器閾值,越小就會檢測到更多的圓,越大能通過檢測的圓就更加精確。當method=cv2.HOUGH_GRADIENT_ALT時,該參數(shù)可以看做是圓的“完美性”度量,它越接近1算法選擇的圓形形狀越好,一般可以設置在0.9。如果想要更好地檢測小圓,可以設置在0.85、0.8甚至更小,通過限制搜索范圍[minRadius,maxRadius]可以避免出現(xiàn)許多假圓。
# 具體可參考官方文檔,及如下博文:https://blog.csdn.net/juzicode00/article/details/122263456

cv2.HoughCircles(img_bgr, cv2.HOUGH_GRADIENT, 1, 100, param1=150, param2=200, minRadius=50, maxRadius=80)  # 檢測圓的最大半徑80,最小半徑50,檢測到的兩個圓之間的距離最小為100,內(nèi)置canny算法的高閾值為150,低閾值為75

(11)霍夫直線檢測

# HoughLines(image, rho, theta, threshold, lines=None, srn=None, stn=None, min_theta=None, max_theta=None):
# image:要檢測直線的圖像,rho累加器的距離分辨率,以像素為單位,theta:以弧度表示的參數(shù)的分辨率,threshold:閾值,被認為是一條直線的最低投票數(shù)

cv2.HoughLines(img_bgr, 1, np.pi / 180, 100, min_theta=np.pi / 6, max_theta=np.pi / 3)  # 檢測角度在30°到60°之間的直線

到了這里,關(guān)于OpenCV圖像預處理常用函數(shù)及流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 機器學習流程—數(shù)據(jù)預處理 縮放和轉(zhuǎn)換

    相信機器學習的從業(yè)者,一定聽到到過“特征縮放”這個術(shù)語,它被認為是數(shù)據(jù)處理周期中不可跳過的部分,因進行相應的操作們可以實現(xiàn) ML 算法的穩(wěn)定和快速訓練。在本文中,我們將了解在實踐中用于執(zhí)行特征縮放的不同技術(shù)。 不同評價指標往往具有不同的 量綱 和量綱單

    2024年03月11日
    瀏覽(22)
  • 使用 SKimage 的圖像預處理

    使用 SKimage 的圖像預處理

    介紹 圖像是視覺對象的二維表示,例如照片、繪畫或素描。在數(shù)字成像中,圖像存儲為像素值數(shù)組,其中每個像素代表圖像亮度和顏色的樣本。每個像素的顏色可以由一個或多個通道表示,如傳統(tǒng)彩色圖像中的紅色、綠色和藍色 (RGB) 通道。在本文中,你將學習各種圖像預處

    2024年02月03日
    瀏覽(28)
  • 關(guān)于圖像分割的預處理 transform

    關(guān)于圖像分割的預處理 transform

    目錄 1. 介紹 2. 關(guān)于分割中的 resize 問題 3. 分割的 transform 3.1 隨機縮放?RandomResize 3.2 隨機水平翻轉(zhuǎn)?RandomHorizontalFlip 3.3?隨機豎直翻轉(zhuǎn)?RandomVerticalFlip 3.4 隨機裁剪?RandomCrop 3.5 ToTensor 3.6 normalization 3.7?Compose 3.8 中心裁剪 3.9 Resize 縮放 4. 預處理結(jié)果可視化 圖像分割的預處理不像

    2024年02月04日
    瀏覽(28)
  • 計算機視覺(2)——圖像預處理

    計算機視覺(2)——圖像預處理

    二、圖像預處理 2.1 介紹? 2.2 特征提取方法 2.2.1 直方圖 2.2.2 CLAHE 2.2.3 形態(tài)學運算 2.2.4 空間域處理及其變換 2.2.5 空間域分析及變換? (1) 均值濾波 (2)中值濾波 (3)高斯濾波 (4)?梯度Prewitt濾波 (5)?梯度Sobel濾波 (6)?梯度Laplacian濾波 (7)?其他濾波? 2.2.6 頻域分

    2024年02月03日
    瀏覽(32)
  • 圖像預處理 Tricks【1】:Contours

    圖像預處理 Tricks【1】:Contours

    輪廓可以簡單地理解為連接所有連續(xù)點(沿物體邊界)的曲線,這些點通常具有相同的顏色或強度。 輪廓在圖像分析中具有重要意義,是物體形狀分析和對象檢測和識別的有用工具,是理解圖像語義信息的重要依據(jù)。 本文主要介紹了在 opencv 中,一些重要的用于處理物體輪廓

    2024年02月11日
    瀏覽(28)
  • 【CV學習筆記】圖像預處理warpaffine

    【CV學習筆記】圖像預處理warpaffine

    在學習圖像預處理的時候發(fā)現(xiàn),之前用的圖像預處理方法一般為 resize和letter box,這兩種方法比較低效,后來在手寫AI中接觸到了warpaffine,只需要一步就能夠?qū)D像進行預處理,同時還能很方便的進行cuda加速,于是便記錄下來。 歡迎正在學習或者想學的CV的同學進群一起討論與

    2023年04月08日
    瀏覽(69)
  • 【Computer Vision】圖像數(shù)據(jù)預處理詳解

    【Computer Vision】圖像數(shù)據(jù)預處理詳解

    活動地址:[CSDN21天學習挑戰(zhàn)賽](https://marketing.csdn.net/p/bdabfb52c5d56532133df2adc1a728fd) 作者簡介 :在校大學生一枚,華為云享專家,阿里云星級博主,騰云先鋒(TDP)成員,云曦智劃項目總負責人,全國高等學校計算機教學與產(chǎn)業(yè)實踐資源建設專家委員會(TIPCC)志愿者,以及編程

    2024年02月06日
    瀏覽(25)
  • Pytorch學習筆記(3):圖像的預處理(transforms)

    Pytorch學習筆記(3):圖像的預處理(transforms)

    ? 目錄 ?一、torchvision:計算機視覺工具包 ?二、transforms的運行機制 (1)torchvision.transforms:常用的圖像預處理方法 (2)transforms運行原理? ?三、數(shù)據(jù)標準化 transforms.Normalize() 四、數(shù)據(jù)增強 ?4.1 transforms—數(shù)據(jù)裁剪 (1)transforms.CentorCrop (2)transforms.RandomCrop (3)RandomResiz

    2023年04月13日
    瀏覽(31)
  • 醫(yī)學nii圖像 預處理——圖像裁剪 重采樣 灰度區(qū)域 歸一化 修改圖像尺寸

    鄙人主要研究方向為醫(yī)學圖像配準,在使用CT數(shù)據(jù)集之前需要對數(shù)據(jù)進行預處理。 常規(guī)預處理步驟:(*代表本代碼有) 1. 裁剪出ROI區(qū)域 。 目的:減小圖像尺寸,減小內(nèi)存消耗,減小無關(guān)信息,可提高實驗精度 2. 重采樣 。 一般會重采樣到各向同性,例如,將圖像重采樣到每體

    2024年02月12日
    瀏覽(27)
  • 【3D 圖像分割】基于 Pytorch 的 VNet 3D 圖像分割7(數(shù)據(jù)預處理)

    【3D 圖像分割】基于 Pytorch 的 VNet 3D 圖像分割7(數(shù)據(jù)預處理)

    在上一節(jié):【3D 圖像分割】基于 Pytorch 的 VNet 3D 圖像分割6(數(shù)據(jù)預處理) 中,我們已經(jīng)得到了與 mhd 圖像同 seriesUID 名稱的 mask nrrd 數(shù)據(jù)文件了,可以說是一一對應了。 并且, mask 的文件,還根據(jù)結(jié)節(jié)被多少人同時標注,區(qū)分成了4個文件夾,分別是標注了一、二、三、四次,

    2024年02月07日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包