opencv-圖像輪廓

輪廓可以簡單認為成將連續的點(連著邊界)連在一起的曲線,具有相同的顏色或者灰度。輪廓在形狀分析和物體的檢測和識別中很有用。
? 為了更加準確,要使用二值化圖像。在尋找輪廓之前要進行閾值化處理或者 Canny 邊界檢測
? 查找輪廓的函數會修改原始圖像。如果你在找到輪廓之后還想使用原始圖像的話,你應該將原始圖像存儲到其他變量中。
? 在 OpenCV 中,查找輪廓就像在黑色背景中超白色物體。你應該記住,要找的物體應該是白色而背景應該是黑色。
讓我們看看如何在一個二值圖像中查找輪廓:
cv2.findContours() 是 OpenCV 中用于查找圖像中輪廓的函數。該函數的基本語法如下:

contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

參數說明:

  • image: 輸入圖像,通常為二值圖像(例如閾值化后的圖像)
  • mode: 輪廓檢索模式,有如下幾種選擇:
    • cv2.RETR_EXTERNAL: 只檢測最外層的輪廓。
    • cv2.RETR_LIST: 檢測所有輪廓,不建立輪廓層次。
    • cv2.RETR_CCOMP: 檢測所有輪廓,建立兩層輪廓層次。
    • cv2.RETR_TREE: 檢測所有輪廓,建立完整的輪廓層次。
  • method: 輪廓逼近方法,有如下幾種選擇:
    • cv2.CHAIN_APPROX_NONE: 存儲所有的輪廓點。
    • cv2.CHAIN_APPROX_SIMPLE: 壓縮水平、垂直和斜率方向的元素,只保留其端點。
    • cv2.CHAIN_APPROX_TC89_L1cv2.CHAIN_APPROX_TC89_KCOS: 應用 Teh-Chin 鏈逼近算法。
  • contours: 輸出參數,存儲檢測到的輪廓。
  • hierarchy: 輸出參數,存儲輪廓的層次信息。
  • offset: 可選參數,偏移值,通常不需要使用。
import cv2
# 讀取圖像
img = cv2.imread( r"C:\Users\mzd\Desktop\opencv\images.jpg")
# 將圖像轉換為灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 使用閾值處理圖像
ret, thresh = cv2.threshold(gray, 127, 255, 0)# 查找輪廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 在原始圖像上繪制輪廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)# 顯示原始圖像和帶有輪廓的圖像
cv2.imshow('Original Image', img)
cv2.imshow('Contour Image', thresh)# 等待用戶按下任意鍵
cv2.waitKey(0)
cv2.destroyAllWindows()

在這里插入圖片描述

這個示例演示了如何使用 cv2.findContours() 函數查找圖像中的輪廓,并使用 cv2.drawContours() 函數在原始圖像上繪制這些輪廓。

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

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

相關文章

uni-app小程序 swiper 分頁器樣式修改

小程序中使用 wx-swiper-dot和wx-swiper-dot-active選擇器 H5中使用uni-swiper-dot和uni-swiper-dot-active選擇器 .swiper {height: 408px;margin-bottom: 28rpx;::v-deep .uni-swiper-dot {background: #e7e7e7;&.uni-swiper-dot-active {background: #b1b1b1;}}// #ifde…

php文件上傳例子

目錄結構&#xff1a; index.html代碼&#xff1a; <!DOCTYPE html> <html><head><title>文件上傳</title><meta charset"utf-8"></head><body><form action"./up.php" method"post" encty…

PHP基礎與安全

基礎 1. 簡介概述 ●PHP是腳本語言-是一門弱類型語言&#xff0c;不需要事先編譯 ●PHP 腳本在服務器上執行&#xff0c;然后向瀏覽器發送回純文本的 HTML 結果 ●超文本預處理器&#xff0c;服務器端腳本語 2.創建&#xff08;聲明&#xff09;PHP變量 ● 變量以 $ 符號開…

安防視頻EasyCVR平臺太陽能供電+4G攝像頭視頻監控方案的建設

在工地、光伏、風電站、水庫河道等場景中&#xff0c;以及一些偏遠地區的項目現場&#xff0c;會存在無網無電情況&#xff0c;大大制約了視頻監控系統建設的效率及可行性。在這種場景中&#xff0c;我們也可以通過太陽能供電4G監控攝像機的方案&#xff0c;滿足偏遠地區無網無…

【bug 回顧】上傳圖片超時

測試 bug 問題分析 - 上傳圖片超時 最近在測試上遇到一個莫名奇妙的問題&#xff0c;最后也沒有得到具體是哪塊的原因&#xff0c;看各位大佬有沒有思路&#xff1f;&#xff1f; 一 、背景 現在我們有三臺服務器&#xff0c;用來布兩套環境。其中另外一臺服務器3配置的 tom…

JVM中判斷對象是否需要回收的方法

在堆里面存放著Java 世界中幾乎所有的對象實例&#xff0c;垃圾收集器在對堆進行回收前&#xff0c;第一件事情就是要確定這些對象之中哪些還“ 存活 ” 著&#xff0c;哪些已經 “ 死去 ”。 引用計數算法 引用計數法是一種內存管理技術&#xff0c;它是通過對每個對象進行引用…

likeshop單商戶商城系統 任意文件上傳漏洞復現

0x01 產品簡介 likeshop單商戶標準商城系統適用于B2C、單商戶、自營商城場景。完美契合私域流量變現閉環交易使用。 系統擁有豐富的營銷玩法&#xff0c;強大的分銷能力&#xff0c;支持電子面單和小程序直播等功能。無論運營還是二開都是性價比極高的100%開源商城系統。 0x02…

java--飛翔的小鳥

游戲玩法&#xff1a;通過鼠標點擊使小鳥上下移動穿過柱子并完成得分&#xff0c;小鳥碰到柱子或掉落到地面上都會結束游戲。 游戲內圖片 Brid類&#xff1a; package bird;import org.omg.CORBA.IMP_LIMIT;import javax.imageio.ImageIO; import java.awt.image.BufferedIma…

前置聲明避免循環依賴

當你有兩個類互相引用的情況時&#xff0c;使用前置聲明可以幫助你避免循環依賴。以下是一個簡單的例子&#xff0c;其中包含兩個頭文件、兩個源文件以及一個 main 函數的示例 Toolnterface.h #pragma once#include <QString>// Forward declaration of QToolBase clas…

Eclipse常用設置-亂碼

在用Eclipse進行Java代碼開發時&#xff0c;經常會遇到一些問題&#xff0c;記錄下來&#xff0c;方便查看。 一、properties文件亂碼 常用的配置文件properties里中文的亂碼&#xff0c;不利于識別。 處理流程&#xff1a;Window -> Preferences -> General -> Ja…

golang學習筆記——羅馬數字轉換器

文章目錄 羅馬數字轉換器代碼 參考LeetCode 羅馬數字轉整數代碼 羅馬數字轉換器 編寫一個程序來轉換羅馬數字&#xff08;例如將 MCLX 轉換成 1,160&#xff09;。 使用映射加載要用于將字符串字符轉換為數字的基本羅馬數字。 例如&#xff0c;M 將是映射中的鍵&#xff0c;其值…

Qt+sqlite3使用事務提升插入效率

參考&#xff1a; 【精選】SQLite批量插入效率_sqlite 批量插入_PengX_Seek的博客-CSDN博客 (1)不使用事務時&#xff1a; clock_t t_start clock();QSqlQuery query(db);QString sql("insert into test(col1,col2) values(1,2);");for (int i 0; i < 1000; i…

c++學習之哈希

目錄 1.關于unordered系列關聯式容器 2.關于unordered_map 3.哈希&#xff08;散列&#xff09;表的實現 一&#xff0c;直接定址法 二&#xff0c;除留余數法 方法一&#xff1a;閉散列&#xff1a;開放定址法 方法二&#xff1a;閉散列&#xff1a;哈希桶/拉鏈法 4.哈希…

機器學習/sklearn 筆記:K-means,kmeans++

1 K-means介紹 1.0 方法介紹 KMeans算法通過嘗試將樣本分成n個方差相等的組來聚類&#xff0c;該算法要求指定群集的數量。它適用于大量樣本&#xff0c;并已在許多不同領域的廣泛應用領域中使用。KMeans算法將一組樣本分成不相交的簇&#xff0c;每個簇由簇中樣本的平均值描…

hadoop shell操作 hdfs處理文件命令 hdfs上傳命令 hadoop fs -put命令hadoop fs相關命令 hadoop(十三)

hadoop fs -help rm 查看rm命令作用 hadoop fs 查看命令 1. 創建文件夾&#xff1a; # hdfs前綴也是可以的。更推薦hadoop hadoop fs -mkdir /sanguo 2.上傳至hdfs命令&#xff1a; 作用&#xff1a; 從本地上傳hdfs系統 &#xff08;本地文件被剪切走&#xff0c;不存在了&…

論防火墻的體系結構

防火墻的體系結構 防火墻的體系結構 雙重宿主主機體系結構。屏蔽主機體系結構。屏蔽子網體系結構。 雙重宿主主機體系結構 雙重宿主主機體系結構是指以一臺具有雙重宿主的主機計算機作為防火墻系統的主體&#xff0c;執行分離外部網絡與內部網絡的任務。該計算機至少有兩個…

【NGINX--4】大規模可擴展的內容緩存

1、緩存區 緩存內容并定義緩存的存儲位置。 使用 proxy_cache_path 指令定義共享內存緩存區和內容的位置&#xff1a; proxy_cache_path /var/nginx/cachekeys_zoneCACHE:60m levels1:2inactive3h max_size20g; proxy_cache CACHE;上述緩存定義示例在文件系統 /var/nginx/ca…

為什么要用多線程?

提高響應速度&#xff1a;對于耗時操作&#xff0c;使用多線程可以使得應用程序更快地響應用戶的請求&#xff0c;從而提高用戶體驗。實現并行計算&#xff1a;多線程可以同時執行多個任務&#xff0c;從而實現并行計算&#xff0c;提高程序的運行效率。提高CPU利用率&#xff…

html屬性值可以不用引號嗎,實例驗證

html屬性值可以不用引號 HTML元素的屬性值可以不適用引號來包裹&#xff0c;瀏覽器一樣可以將其進行渲染。不過&#xff0c;如果這樣寫HTML的代碼的話&#xff0c;屬性與屬性值之間需要用空格來進行隔開&#xff0c;避免后面的屬性變成前面屬性的屬性值。 提示&#xff1a;雖…

達夢列式存儲和clickhouse基準測試

要驗證達夢BigTable和ClickHouse的性能差異&#xff0c;您需要進行一系列基準測試。基準測試通常包括多個步驟&#xff0c;如準備測試環境、設計測試案例、執行測試、收集數據和分析結果。以下是您可以遵循的一般步驟&#xff1a; 準備測試環境&#xff1a; 確保兩個數據庫系統…