OpenCV2D 特征框架 (11)特征檢測與描述用于檢測二值圖像中連通區域(即“斑點”或“blob”)的類cv::SimpleBlobDetector的使用

  • 操作系統:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 編程語言:C++11

算法描述

cv::SimpleBlobDetector 是 OpenCV 中用于檢測二值圖像中連通區域(即“斑點”或“blob”)的類。這些連通區域可以是白色前景中的黑色斑點,也可以是黑色背景中的白色斑點。SimpleBlobDetector 可以識別不同形狀、大小和亮度的斑點,并且可以設置參數來過濾掉不符合特定條件的斑點。

從 OpenCV 3.0 開始,SimpleBlobDetector 的創建方式有所變化。它現在是一個工廠方法 create 返回的一個指針對象,而不是直接實例化類的對象。這允許通過修改參數來配置檢測器的行為,而無需改變代碼邏輯。

下面是一些重要的成員函數和屬性:

  • 構造函數:
    在 OpenCV 3.x 和更新版本中,推薦使用 cv::SimpleBlobDetector::create() 方法來創建 SimpleBlobDetector 對象,該方法返回一個指向 Ptrcv::SimpleBlobDetector 類型的智能指針。
  • 成員函數:
    • void detect(const cv::Mat& image, std::vectorcv::KeyPoint& keypoints) 檢測輸入圖像中的斑點,并將結果存儲在 keypoints 向量中。每個 cv::KeyPoint 表示一個斑點的位置、大小和其他信息。
    • void setParams(const SimpleBlobDetector::Params& params) 設置斑點檢測器的參數。這通常是在創建檢測器之后立即調用,以配置其行為。
    • Params getParams() const 獲取當前設置的參數。
  • 成員類型:
    • struct Params 包含了可以調整的各種參數,例如斑點的最小面積、最大面積、圓度范圍、凸性等。你可以通過修改 Params 結構體內的成員變量來自定義斑點檢測的過程。

代碼示例

#include <opencv2/features2d.hpp>
#include <opencv2/opencv.hpp>using namespace cv;int main()
{// 加載圖像并轉換為灰度圖Mat image = imread( "/media/dingxin/data/study/OpenCV/sources/images/smarties.png", IMREAD_GRAYSCALE );if ( image.empty() ){std::cout << "Could not open or find the image" << std::endl;return -1;}// 配置斑點檢測器參數SimpleBlobDetector::Params params;// 改變默認參數params.filterByArea = true;params.minArea      = 100;params.filterByCircularity = true;params.minCircularity      = 0.1;params.filterByConvexity = true;params.minConvexity      = 0.87;params.filterByInertia = true;params.minInertiaRatio = 0.01;// 創建斑點檢測器Ptr< SimpleBlobDetector > detector = SimpleBlobDetector::create( params );// 檢測斑點std::vector< KeyPoint > keypoints;detector->detect( image, keypoints );// 繪制斑點并顯示Mat outputImage;drawKeypoints( image, keypoints, outputImage, Scalar::all( -1 ), DrawMatchesFlags::DEFAULT );imshow( "Detected Blobs", outputImage );waitKey( 0 );return 0;
}

運行結果

在這里插入圖片描述

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

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

相關文章

關于deepin上運行Qt開發的程序

國產化替代是將來各單位的主流趨勢&#xff0c;探索自行開發應用程序在國產操作系統上正常運行是將來的主要工作之一。本文淺嘗gui程序在統信社區版——deepin上遇到的小問題。 使用Qt在deepin上做了一個類似gif的幀動畫彈窗&#xff0c;在編譯運行時&#xff0c;程序可以正常…

Unity自學之旅05

Unity自學之旅05 Unity學習之旅⑤&#x1f4dd; AI基礎與敵人行為&#x1f94a; AI導航理論知識&#xff08;基礎&#xff09;開始實踐 &#x1f383; 敵人游戲機制追蹤玩家攻擊玩家子彈碰撞完善游戲失敗條件 &#x1f917; 總結歸納 Unity學習之旅⑤ &#x1f4dd; AI基礎與敵…

我想通過python語言,學習數據結構和算法該如何入手?

學習數據結構和算法是編程中的重要基礎&#xff0c;Python 是一個非常適合入門的語言。以下是學習數據結構和算法的步驟和建議&#xff1a; 1. 掌握 Python 基礎 確保你對 Python 的基本語法、數據類型、控制結構&#xff08;如循環、條件語句&#xff09;、函數等有扎實的理…

淺談Unity中Canvas的三種渲染模式

Overview UGUI通過 Canvas 組件渲染和管理UI元素。Canvas 是 UI 元素的容器&#xff0c;它決定了 UI 元素的渲染方式以及它們在屏幕上的顯示效果。Canvas 有三種主要的渲染模式&#xff0c;每種模式有不同的用途和特點。本文將介紹這三種渲染模式 1. Screen Space - Overlay 模…

Unity中在UI上畫線

在UI中畫一條曲線 我封裝了一個組件,可以實現基本的畫線需求. 效果 按住鼠標左鍵隨手一畫. 用起來也很簡單,將組件掛到空物體上就行了,紅色的背景是Panel. 你可以將該組件理解為一個Image,只不過形狀更靈活一些罷了,所以它要放在下面的層級(不然可能會被擋住). 代碼 可以…

2024.1.22 安全周報

政策/標準/指南最新動態 01 工信部印發《關于加強互聯網數據中心客戶數據安全保護的通知》 原文: https://www.secrss.com/articles/74673 互聯網數據中心作為新一代信息基礎設施&#xff0c;承載著千行百業的海量客戶數據&#xff0c;是關系國民經濟命脈的重要戰略資源。…

探索 LLM:從基礎原理到 RAG 實現的深度解析

一.LLM基礎知識 1.1 大語言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09; 他是模型&#xff0c;是 AI 能力的核心。他是語言模型&#xff0c;其核心能力在于語言能力。他是大語言模型&#xff0c;與傳統模型相比&#xff0c;它最大的特點就是“大”。 1…

Mac cursor設置jdk、Maven版本

基本配置 – Cursor 使用文檔 首先是系統用戶級別的設置參數&#xff0c;運行cursor&#xff0c;按下ctrlshiftp&#xff0c;輸入Open User Settings(JSON)&#xff0c;在彈出的下拉菜單中選中下面這樣的&#xff1a; 在打開的json編輯器中追加下面的內容&#xff1a; {"…

ARM64平臺Flutter環境搭建

ARM64平臺Flutter環境搭建 Flutter簡介問題背景搭建步驟1. 安裝ARM64 Android Studio2. 安裝Oracle的JDK3. 安裝 Dart和 Flutter 開發插件4. 安裝 Android SDK5. 安裝 Flutter SDK6. 同意 Android 條款7. 運行 Flutter 示例項目8. 修正 aapt2 報錯9. 修正 CMake 報錯10. 修正 N…

selenium clear()方法清除文本框內容

在使用Selenium進行Web自動化測試時&#xff0c;清除文本框內容是一個常見的需求。這可以通過多種方式實現&#xff0c;取決于你使用的是哪種編程語言&#xff08;如Python、Java等&#xff09;以及你的具體需求。以下是一些常見的方法&#xff1a; 1. 使用clear()方法 clear…

基于海思soc的智能產品開發(視頻的后續開發)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 前面我們討論了camera&#xff0c;也討論了屏幕驅動&#xff0c;這些都是基礎的部分。關鍵是&#xff0c;我們拿到了這些視頻數據之后&#xff0c;…

vue3+webOffice合集

1、webOffice 初始化 1&#xff09;officeType: 文檔位置&#xff1a;https://solution.wps.cn/docs/web/quick-start.html#officetype 2&#xff09;appId: 前端使用appId 后端需要用到AppSecret 3&#xff09;fileId: 由后端返回&#xff0c;前端無法生成&#xff0c;與上傳文…

2025牛客寒假算法營2

A題 知識點&#xff1a;模擬 打卡。檢查給定的七個整數是否僅包含 1,2,3,5,6 即可。為了便于書寫&#xff0c;我們可以反過來&#xff0c;檢查這七個整數是否不為 4 和 7。 時間 O(1)&#xff1b;空間 O(1)。 #include <bits/stdc.h> using namespace std;signed main()…

記錄一次k8s起不來的排查過程

我在k8s集群&#xff0c;重啟了一個node宿主機&#xff0c;竟然發現kubelet起不來了&#xff01;報錯如下 這個報錯很模糊&#xff0c;怎么排查呢。這樣&#xff0c;開兩個界面&#xff0c;一個重啟kubelet&#xff0c;一個看系統日志(/var/log/message:centos&#xff0c;/va…

Docker Desktop 在Windows 環境中開發、測試和運行容器化的應用程序

Docker 為 Windows 提供了專門的桌面版工具&#xff0c;稱為 Docker Desktop&#xff0c;它允許你在 Windows 環境中開發、測試和運行容器化的應用程序。 如何在 Windows 上使用 Docker Docker Desktop Docker Desktop 是一個專為 Windows 設計的應用程序&#xff0c;它簡化了…

仿 RabbitMQ 的消息隊列3(實戰項目)

七. 消息存儲設計 上一篇博客已經將消息統計文件的讀寫代碼實現了&#xff0c;下一步我們將實現創建隊列文件和目錄。 實現創建隊列文件和目錄 初始化 0\t0 這樣的初始值. //創建隊列對應的文件和目錄&#xff1a;public void createQueueFile(String queueName) throws IO…

HTTP 配置與應用(局域網)

想做一個自己學習的有關的csdn賬號&#xff0c;努力奮斗......會更新我計算機網絡實驗課程的所有內容&#xff0c;還有其他的學習知識^_^&#xff0c;為自己鞏固一下所學知識&#xff0c;下次更新HTTP 配置與應用&#xff08;不同網段&#xff09;。 我是一個萌新小白&#xf…

root用戶Linux銀河麒麟服務器安裝vnc服務

安裝必要桌面環境組件 yum install mate-session-manager -y mate-session #確定是否安裝成功安裝vnc服務器 yum install tigervnc-server -y切換到root為root得vnc設置密碼 su root vncpasswd給root用戶設置vnc服務器文件 vi /etc/systemd/system/vncserver:1.service [Un…

理解深度學習pytorch框架中的線性層

文章目錄 1. 數學角度&#xff1a; y W x b \displaystyle y W\,x b yWxb示例 2. 編程實現角度&#xff1a; y x W T b \displaystyle y x\,W^T b yxWTb3. 常見錯誤與易混點解析4. 小結參考鏈接 在神經網絡或機器學習的線性層&#xff08;Linear Layer / Fully Connect…

C#Object類型的索引,序列化和反序列化

前言 最近在編寫一篇關于標準Mes接口框架的文章。其中有一個非常需要考究的內容時如果實現數據靈活和可使用性強。因為考慮數據靈活性&#xff0c;所以我一開始選取了Object類型作為數據類型&#xff0c;Object作為數據Value字段&#xff0c;String作為數據Key字段&#xff0c…