數字圖像處理(實踐篇)一 將圖像中的指定目標用bBox框起來吧!

目錄

一?實現方法

二 涉及的OpenCV函數

三 代碼

四 效果圖


一?實現方法

①利用OTSU方法將前景與背景分割。

②使用連通區域分析可以將具有相同像素值且位置相鄰的前景像素點組成的圖像區域識別。

③畫bbox。

④顯示結果。

二 涉及的OpenCV函數

① OpenCV提供了cv2.threshold()用于實現閾值處理。

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

ret:代表返回的閾值。

src:原圖。

dst: 輸出圖。

thresh:要設定的閾值。

maxval: 當像素值超過了閾值或者小于閾值所賦予的值。

type:二值化操作的類型,包含5種類型。

OpenCV提供了cv2.connectedComponentsWithStats()函數用于處理不規則連通區域。

retval, labels, stats, centroids = cv2.connectedComponentsWithStats(image, connectivity=8)

image : 是要處理的圖片,8位單通道的圖像。

connectivity : 可以選擇是4連通還是8連通。

retval : 返回值是連通區域的數量。

labels :一個輸入圖像大小的矩陣,其中每個元素的值等于其標簽。

stats :包含5個參數分別為x,y,h,w,s。分別對應每一個連通區域的外接矩形的起始坐標x,y;外接矩形的wide,height;s是labels對應的連通區域的像素個數。

centroids : 返回的是連通區域的質心。

三 代碼

import cv2
import matplotlib.pyplot as plt
def dealImg(img):b, g, r = cv2.split(img)img_rgb = cv2.merge([r, g, b])return img_rgb
def dealImageResult(img_path):img = cv2.imread(img_path)img_box = img.copy()gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# OTSU方法實現前景與背景分割ret2, dst_OTSU = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 識別出目標區域并用bbox框起來# 連通區域分析可以將具有相同像素值且位置相鄰的前景像素點組成的圖像區域識別ret, labels, stats, centroid = cv2.connectedComponentsWithStats(dst_OTSU)Iarea = sorted(stats, key=lambda s: s[-1], reverse=False)[-2]cv2.rectangle(img_box,(Iarea[0], Iarea[1]),(Iarea[0] + Iarea[2], Iarea[1] + Iarea[3]),(255, 0, 0),3)fig = plt.figure(figsize=(8, 8))titles = ["img", "gray", "OTSU", "img_box"]img = dealImg(img)img_box = dealImg(img_box)images = [img, gray, dst_OTSU, img_box]for i in range(4):plt.subplot(2, 2, i + 1), plt.imshow(images[i], 'gray')plt.title(titles[i])plt.xticks([]), plt.yticks([])plt.show()fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':dealImageResult("3.jpg")pass

四 效果圖

?

前文回顧

?入門篇目錄

?數字圖像處理(入門篇)一 圖像的數字化與表示

?數字圖像處理(入門篇)二 顏色空間

?數字圖像處理(入門篇)三 灰度化

?數字圖像處理(入門篇)四 像素關系

?數字圖像處理(入門篇)五 圖像數據預處理之顏色空間轉換

?數字圖像處理(入門篇)六 圖像數據預處理之坐標變化

?數字圖像處理(入門篇)七 圖像數據預處理之灰度變化

?數字圖像處理(入門篇)八 圖像數據預處理之直方圖

?數字圖像處理(入門篇)九 圖像數據預處理之濾波

?數字圖像處理(入門篇)十 邊緣檢測

?數字圖像處理(入門篇)十一 形態學處理

?數字圖像處理(入門篇)十二 自適應閾值分割

?數字圖像處理(入門篇)十三 仿射變換

?數字圖像處理(入門篇)十四 透視變換

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

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

相關文章

如何安裝和配置代理服務器squid?

安裝和配置Squid代理服務器通常需要幾個步驟。以下是在Ubuntu上安裝和配置Squid的簡單步驟: 步驟 1: 安裝Squid 打開終端,并使用以下命令安裝Squid: sudo apt update sudo apt install squid步驟 2: 配置Squid 默認配置文件位于 /etc/squ…

convertRect:toView 方法注意事項

這是在網上找到的一張圖 我們開發中有時候會用到左邊轉換,convertRect:toView 通常情況下,我們回這樣使用 CGRect newRect [a convertRect:originframe toView:c];其中newRect和 originframe的size相同,只改變origin newRect.origin a…

系統優化軟件Bitsum Process Lasso Pro v12.4,供大家學習研究參考

1、自動或手動調整進程優先級;將不需要抑制的進程添加到排除列表; 2、設置動態提升前臺運行的進程/線程的優先級 3、設置進程黑名單,禁止無用進程(機制為啟動即結束,而非攔截其啟動)。 4、優化I/O優先級以及電源模式自動化。 5、ProBalance功能。翻譯成中文是“進程平衡…

STM32入門--CAN

目錄 一、bxCan簡介 二、bxCAN總體描述 2.1概述 2.2CAN框圖 三、bxCA的工作模式 3.1初始化模式 3.2正常模式 3.3睡眠模式(低功耗) 四、測試模式 4.1靜默模式 4.2環回模式 五、bxCAN功能描述 5.1 發送處理 ?編輯 5.2接收管理 5.2.1 標識符過…

HTTP協議抓包工具Charles 抓包圖文完整教程

Charles是在您自己的計算機上運行的Web代理(HTTP代理 / HTTP監視器),您的網絡瀏覽器(或任何其他Internet應用程序)配置為通過Charles訪問Internet,Charles可以為您記錄并顯示發送和接收的所有數據。 Http抓…

[tsai.shen@mailfence.com].faust勒索病毒數據怎么處理|數據解密恢復

導言: [support2022cock.li].faust、[tsai.shenmailfence.com].faust、[Encrypteddmailfence.com].faust勒索病毒是一種具有惡意目的的勒索軟件,其主要特點包括對受害者文件進行強力加密,然后勒索受害者支付贖金以獲取解密密鑰。攻擊者通常通…

Centos8部署MySQL主從復制報錯問題

問題1.在部署MySQL主從復制時,創建用戶提示ERROR 1819:Your password does not satisfy the current policy requirements。即為當前配置的密碼,不符合策略要求。 問題1解決方式: set global validate_password.policyLOW; \\…

Leetcode—1410.HTML實體解析器【中等】

2023每日刷題(三十八) Leetcode—1410.HTML實體解析器 算法思想 實現代碼 typedef struct entityChar {char* entity;char rechar; }entity;entity matches[] {{""", "},{"'", \},{"&"…

NLP中 大語言模型LLM中的思維鏈 Chain-of-Thought(CoT) GoT

文章目錄 介紹思路CoT方法Few-shot CoTCoT Prompt設計CoT投票式CoT-自洽性(Self-consistency)使用復雜的CoT自動構建CoTCoT中示例順序的影響Zero-shot CoT 零樣本思維鏈 GoT,Graph of Thoughts總結 介紹 在過去幾年的探索中,業界發現了一個現…

C語言之strstr函數的使用和模擬實現

C語言之strstr函數的模擬實現 文章目錄 C語言之strstr函數的模擬實現1. strstr函數的介紹2. strstr函數的使用3. strstr的模擬實現3.1 實現思路3.2 實現代碼 1. strstr函數的介紹 函數聲明如下: char * strstr ( const char * str1, const char * str2 ); strs…

怎樣自動把網頁截圖發到微信群里

現在很多公司都在使用企業微信了,不但方便公司內部交流和客戶交流,還能組建各種小組群,業務群。企業微信群提供一個機器人的功能,方便我們把公司業務信息,或來自外部的信息自動發布到群里。 這里研究一下如何向微信群…

大數據-之LibrA數據庫系統告警處理(ALM-37003 GTM主備不同步或者GTM主備斷連)

告警解釋 當GTM主實例與GTM備實例連接異常或者GTM主實例未處于同步狀態時,產生該告警。 告警屬性 告警ID 告警級別 可自動清除 37003 嚴重 是 告警參數 參數名稱 參數含義 ServiceName 產生告警的服務名稱 RoleName 產生告警的角色名稱 HostName 產…

基于OpenCV+MediaPipe的手勢識別

【精選】【優秀課設】基于OpenCVMediaPipe的手勢識別(數字、石頭剪刀布等手勢識別)_石頭剪刀布opencv識別代碼_網易獨家音樂人Mike Zhou的博客-CSDN博客 import cv2 import mediapipe as mp import mathdef vector_2d_angle(v1, v2):求解二維向量的角度v…

HIVE SQL 判斷空值函數

目錄 nvl()coalesce() nvl() select nvl(null,2);輸出:2 select nvl(,2);輸出:‘’ coalesce() select coalesce(null,2);輸出:2 select coalesce(,2);輸出:‘’ select coalesce(null,null,2);輸出:2 *coalesc…

Maxwell安裝部署消費到kafka集群

1.上傳安裝包到linux系統上面 2.解壓安裝包到安裝目錄下,并且重命名 [rootVM-4-10-centos package]# tar -zxvf maxwell-1.29.2.tar.gz -C /opt/software/3.配置mysql 增加以下配置 #數據庫id server-id 1 #啟動binlog,該參數的值會作為binlog的文件…

分布式鎖詳解

文章目錄 分布式鎖1. [傳統鎖回顧](https://blog.csdn.net/qq_45525848/article/details/134608044?csdn_share_tail%7B%22type%22:%22blog%22,%22rType%22:%22article%22,%22rId%22:%22134608044%22,%22source%22:%22qq_45525848%22%7D)1.1. 從減庫存聊起1.2. 環境準備1.3. 簡…

leetcode每日一題32

82.刪除排序鏈表中的重復元素 主要問題是沒有頭節點,以及要刪除所有的相等元素,不是留下一個 那么首先要建立一個頭節點,指向head 而且指針要始終指向要刪除的節點的前一個節點 ListNode* pre new ListNode(0,head);在搜索的過程中&#x…

Handler系列-Message是怎么重復利用的

1.Message類的支持 使用鏈表來緩存Message,sPool為表頭;最多能緩存50個Message;sPoolSync用來保證讀寫鏈表的安全; public final class Message implements Parcelable {private static Message sPool; //緩存的列表表頭/*packa…

98、Text2Room: Extracting Textured 3D Meshes from 2D Text-to-Image Models

簡介 github 利用預訓練的2D文本到圖像模型來合成來自不同姿勢的一系列圖像。為了將這些輸出提升為一致的3D場景表示,將單目深度估計與文本條件下的繪畫模型結合起來,提出了一個連續的對齊策略,迭代地融合場景幀與現有的幾何形狀&#xff0…

#Js篇:單線程模式同步任務異步任務任務隊列事件循環setTimeout() setInterval()

單線程模式 之所以采用單線程,而不是多線程,跟歷史有關系。原因是不想讓瀏覽器變得太復雜,因為多線程需要共享資源、且有可能修改彼此的運行結果,對于一種網頁腳本語言來說,太復雜了。 好處 實現起來比較簡單&#…