OpenCV 功能函數介紹

一, 二值化函數

功能:

用于對圖像進行二值化處理

參數:

cv2.threshold(輸入你的圖像所對應的灰度圖,

? ? ? ? ? ? ? ? ? ? ? 閾值:是浮點還是整數取決予圖像的數據類型

? ? ? ? ? ? ? ? ? ? ? 最大值;高于閾值的像素值,

? ? ? ? ? ? ? ? ? ? ? 閾值類型:cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV、? ? ? ? ? ? ? ? ?cv2.THRESH_TRUNC、cv2.THRESH_TOZERO?和?cv2.THRESH_TOZERO_INV

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??)

返回值:

二值化的返回值有2個

1:實際使用的閾值

2:二值化的圖像

注意:調用二值化函數使用的圖像一定要是灰度化后的圖像

應用:

import cv2img = cv2.imread("./women.png.")img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)ret, img_threshold = cv2.threshold(img_gray,120,255,cv2.THRESH_BINARY)print(ret)cv2.imshow("img",img)
cv2.imshow("img_gary",img_gray)
cv2.imshow("img_threshold",img_threshold)
cv2.waitKey(0)

可以通過修改閾值呈現不同的效果

1.使用cv2.THRESH_BINARY

2.使用cv2.THRESH_BINARY_INV

3.使用THRESH_TRUNC

二.自適應二值化函數 ?功能、參數、返回值、應用

功能:

與二值化算法相比,自適應二值化更加適合用在明暗分布不均的圖片

參數:

cv2.adaptiveThreshold(輸入你的圖像所對應的灰度圖,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?最大值,#通常為255

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?自適應方法,#cv2.ADAPTIVE_THRESH_MEAN_C? ?|? ? ? ? ? ? ????????????????????????????????????????????????????????????????cv2.ADAPTIVE_THRESH_GAUSSIAN_C

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?二值化類型,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?核的大小:最好是奇數

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?最終的閾值:從計算出的平均值或加權和中減去的常數

返回值:

自適應二值化的圖像

應用:

import cv2img = cv2.imread("./women.png.")img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)img_adapt = cv2.adaptiveThreshold(img_gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,3)cv2.imshow("img",img)
cv2.imshow("img_gary",img_gray)
cv2.imshow("img_threshold",img_adapt)
cv2.waitKey(0)

可以通過修改閾值和自適應方法呈現不同的效果

1.cv2.ADAPTIVE_THRESH_GAUSSIAN_C

2.cv2.ADAPTIVE_THRESH_MEAN_C

三,腐蝕函數

功能:

將二值化圖像中的白色部分盡可能的壓縮

參數:

cv2.erode(讀取圖片,

? ? ? ? ? ? ? ? ? ?kernel: 結構元素,核,

? ? ? ? ? ? ? ? ? ?iterations: 迭代次數,次數越多效果越明顯

????????????????????)

kernel:

cv2.getStructuringElement(cv2.MORPH_ELLIPSE,

????????????????????????????????????????????????(3, 3)大小

)

返回值:

腐蝕后的圖像

應用:

import cv2img = cv2.imread("./123.png.")kernal = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))img_erode = cv2.erode(img,kernal)cv2.imshow("img",img)
cv2.imshow("img_gary",img_erode)
cv2.waitKey(0)

四,膨脹函數

功能:

將二值化圖像中的白色部分盡可能的擴張

參數:

cv2.dilate(

????????????????????????讀取圖片,

? ? ? ? ? ? ? ? ? ?kernel: 結構元素,核,

? ? ? ? ? ? ? ? ? ?iterations: 迭代次數,次數越多效果越明顯

)

返回值:

膨脹后的圖片

應用:

import cv2img = cv2.imread("./123.png.")kernal = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))img_dilate = cv2.dilate(img,kernal)cv2.imshow("img",img)
cv2.imshow("img_gary",img_dilate)
cv2.waitKey(0)

五,仿射變換函數

?功能:

用于對圖像進行仿射變換(Affine Transformation)的函數,仿射變換包括平移、旋轉、縮放以及剪切等操作。

參數:

cv2.warpAffine(輸入的圖像,

????????????????????????變換矩陣,:通過其他函數(如 cv2.getRotationMatrix2D())計算得到的,用于描述仿射變換

? ? ? ? ? ? ? ? ? ? ? ??輸出圖像的大小,

????????????????????????插值方法(默認為線性),:cv2.INTER_LINEAR(線性插值)、cv2.INTER_NEAREST(最近鄰插值)、cv2.INTER_CUBIC(三次樣條插值)

????????????????????????邊緣填充方法,:cv2.BORDER_CONSTANT(常量填充)、cv2.BORDER_REFLECT(反射)、cv2.BORDER_REFLECT_101(反射101)

????????????????????????邊界顏色 :borderMode 為 cv2.BORDER_CONSTANT

)

cv2.getRotationMatrix2D(center:旋轉的中心點, angle:旋轉角度, scale:縮放因子)

返回值:

輸出圖像

應用:

import cv2img = cv2.imread("./women.png")M = cv2.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,0.5)
img_warp = cv2.warpAffine(img,M,(700,700),flags=cv2.INTER_LINEAR,borderMode=cv2.BORDER_WRAP)cv2.imshow("img",img)
cv2.imshow("img_gary",img_warp)
cv2.waitKey(0)

修改縮放因子

六,透視變換函數

功能:

用于對圖像進行透視變換的函數

而透視變換是把一個圖像投影到一個新的視平面的過程

參數:

cv2.warpPerspective(src, M, dsize, dst=None, flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT, borderValue=None)

cv2.warpPerspective(輸入圖像,

????????????????????????????????????透視變換矩陣,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??輸出圖像的尺寸,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??輸出圖像,這是一個可選參數。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?插值方法,:cv2.INTER_LINEAR(線性插值)、cv2.INTER_NEAREST(最近鄰插值)、cv2.INTER_CUBIC(三次樣條插值)

返回值:

圖像

應用:

import cv2
import numpy as npimg = cv2.imread("./223.png")points1 = np.array([[80, 300], [950, 50], [150, 620], [1060,400]],dtype=np.float32)points2 = np.array([[0, 0], [img.shape[1], 0], [0, img.shape[0]], [img.shape[1], img.shape[0]]],dtype=np.float32)
M = cv2.getPerspectiveTransform(points1, points2)img_warp = cv2.warpPerspective(img, M,(img.shape[1], img.shape[0]))cv2.imshow("img",img)
cv2.imshow("img1",img_warp)
cv2.waitKey(0)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62940.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62940.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62940.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python】使用Selenium的find_element模塊獲取網頁上的大段文字和表格的方法(建議收藏!)

發現了一個使用Selenium的find_element模塊,快速獲取文字和表格的方法,很實在,以后爬網的時候,就不用beautifulSoup 和 pandas的read_html 混起來用了! 文字部分:實現網絡節點下,某個節點下的其…

APP滲透測試記錄(一、Android應用基本構造)

Android應用基本構造 雷電模擬機進入 adb shell# 如果不是root權限 su一下 su 1.了解APK文件 安卓應用的擴展名為.apk(Android Application Package),它是一個包含多個文件和文件夾的數據存檔文件。 1.1 apk文件解壓后的目錄結構 AndroidManifest.xml:包含應用的大部分…

【AI知識】有監督學習之回歸任務(附線性回歸代碼及可視化)

1. 回歸的基本概念 在機器學習的有監督學習中,回歸(Regression)是一種常見的任務,它的目標是通過觀察數據來建立一個模型,用一個或多個自變量來預測因變量的值。 回歸分析通常用于: a.預測,基于…

fastadmin批量壓縮下載遠程視頻文件

后端代碼 // 批量下載并壓縮 public function downloadAll(){$ids input(ids);$row $this->model->where(id, in, $ids)->field(id,title,video_url)->select();if (!$row) {$this->error(記錄不存在);}$arr [];$tempFiles []; // 用來存儲臨時下載的視頻文…

邊緣計算+人工智能:讓設備更聰明的秘密

引言:日常生活中的“智能”設備 你是否發現,身邊的設備正變得越來越“聰明”? 早上醒來時,智能音箱已經根據你的日程播放舒緩音樂;走進廚房,智能冰箱提醒你今天的食材庫存;而在城市道路上&…

JVM 雙親委派模型以及垃圾回收機制

目錄 1. JVM 內存區域劃分 2. JVM 中類加載的過程 1) 類加載的基本流程 2) 雙親委派模型 3. JVM 中垃圾回收機制 1) 找到垃圾 a) 引用計數 b) 可達性分析 2) 釋放垃圾 1. JVM 內存區域劃分 一個運行起來的 Java 進程,其實就是一個 JVM 虛擬機。 而進程是…

ansible自動化運維(四)jinjia2模板

Jinjia2模板 前面說到playbook組成的時候,有介紹到template模塊,而template模塊對模板文件進行渲染時,使用的就是jinja2模板引擎,jinja2本身就是基于python的模板引擎,所以下面先來了解一下jinjia2模板的一些用法 基…

通過k-means對相似度較高的語句進行分類

本文介紹了如何使用K-Means算法對相似度較高的語句進行分類,并附上java案例代碼 import java.util.ArrayList; import java.util.List; import java.util.Random;public class KMeansTextClustering {public static void main(String[] args) {// 初始化語句數據集…

Oracle 19c rac 補丁升級,從19.7 to19.22-集群

1. 補丁包概述 數據庫環境 角色 數據庫 IP地址 數據庫版本 主機名 數據庫名稱 源端 RAC 172.30.21.166/167 19.7 hfcwdb66/hfcwdb67 hfdb 將以下補丁包上傳到/soft下 上傳到兩個節點的soft目錄下:p6880880_190000_Linux-x86-64.zip (更新o…

Windows安裝Jira

下載 Download Jira Data Center | Atlassian https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-10.3.0-x64.exe 以管理員身份安裝,否則彈出以下提醒 創建和配置MySQL數據庫:參照 Connecting Jira applicat…

uniapp - 微信小程序

一、background-image 大圖不顯示的問題 解決方法: 1、使用網絡地址;2、使用 base64 urlTobase64(filePath) {// #ifdef MP-WEIXINlet img ${filePath},imgBase64 wx.getFileSystemManager().readFileSync(img, "base64"),base64Url data:…

DETR: End-to-End Object Detection with Transformers論文學習

論文地址:https://arxiv.org/pdf/2005.12872 代碼地址:https://github.com/facebookresearch/detr 相關學習視頻:https://space.bilibili.com/94779326/lists?sid1531941 標題前言: DETR 是 Facebook 團隊于 2020 年提出的基于…

LeetCode 24反轉鏈表

單鏈表反轉:詳細解析與代碼實現 在數據結構的學習過程中,鏈表是一個非常重要且有趣的部分,而單鏈表的反轉操作更是常考的基礎知識點。今天就來和大家詳細講講如何實現單鏈表的反轉,并通過代碼示例來加深理解呀。 題目 給定單鏈…

Redis學習筆記之——學習計劃

Redis——Remote Dictionary Server,開源、基于內存、速度快、key-value... Redis做為一個高性能的鍵值存儲系統,廣泛應用于緩存、會話存儲、分布式鎖以及其他需要快速訪問的數據場景中。熟悉掌握redis,似乎已成為廣大碼農們必備的一項技能。…

網絡安全教學博客(二):常見網絡安全威脅剖析

在上一篇博客中,我們了解了網絡安全的基礎概念和重要性。今天,讓我們深入探討一下常見的網絡安全威脅,以便我們能夠更好地識別和防范它們。 惡意軟件(Malware) 病毒(Virus):病毒是一…

Vue3狀態管理:Pinia架構設計分析

Vue3狀態管理:Pinia架構設計分析 介紹 在Vue.js開發中,狀態管理是一個非常重要的部分。隨著Vue3的發布,Pinia作為一種新的狀態管理架構也相繼問世。本文將對Pinia架構進行深入分析,幫助讀者了解其設計原理、特點以及在實際項目中的應用。 架構…

【IDEA】啟動報錯

今天啟動IDEA報錯 報錯信息: Cannot connect to already running IDE instance. Exception: Process 5,444 is still running 打開任務管理器,關掉進程ID5444的任務

socket編程UDP-實現停等機制(接收確認、超時重傳)

在下面博客中,我介紹了利用UDP模擬TCP連接、按數據包發送文件的過程,并附上完整源碼。 socket編程UDP-文件傳輸&模擬TCP建立連接脫離連接(進階篇)_udp socket發送-CSDN博客 下面博客實現的是滑動窗口機制: sock…

uniapp小程序的錨點定位(將頁面滾動到目標位置)

小程序中,a頁面跳轉到b頁面,跳轉后滾動定位到b頁面的特定位置。 1.uni.pageScrollTo傳遞一個scrollTop參數可以滾動到特定位置。2.可以通過 uni.createSelectorQuery()等獲取定位元素的位置信息。3.uni.getSystemInfoSync()獲取設備的導航欄和狀態欄高度…

php基礎:命名空間

1.PHP 命名空間可以解決以下兩類問題: 1.用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。 2.為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,以提高源代碼的可讀…