python -opencv 輪廓檢測(多邊形,外接矩形,外接圓)

python -opencv 輪廓檢測(多邊形,外接矩形,外接圓)

邊緣檢測步驟:

第一步:讀取圖像為灰度圖
第二步:進行二值化處理
第三步:使用cv2.findContours對二值化圖像提取輪廓
第三步:將輪廓繪制到圖中

代碼如下:

from ctypes.wintypes import SIZE
from multiprocessing.pool import IMapUnorderedIterator
import cv2
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import ospath=r'D:\learn\photo\cv\res\ballon.png'img=cv2.imread(path,1)
img_gray=cv2.imread(path,0)def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0,表示窗口暫停cv2.waitKey(0)#銷毀所有窗口cv2.destroyAllWindows()#cv_show('img_gray',img_gray)#進行二值化處理
ret,binary=cv2.threshold(img_gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#cv_show('dist',dist)def BGR_TO_RGB(img):return img[:,:, ::-1];
#檢測輪廓countourClose,hierrachyclose=cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)print("len(countourclose) is",len(countourClose))#countourClose 輪廓坐標信息
#hierrachyclose 輪廓之間的層次結構#背景圖
result=np.zeros(img.shape,np.uint8)#繪制輪廓邊框
for  i in range(len(countourClose)):cnt=countourClose[i]#近似多邊形#第一個參數,表示精度,單位是像素#第二個像素表示是否閉合approx=cv2.approxPolyDP(cnt,3,True)#繪制輪廓#-1表示繪制所有輪廓#5線條粗細cv2.drawContours(result,[approx],-1,(0,0,255),5)#繪制矩形x,y,w,h=cv2.boundingRect(cnt)cv2.rectangle(result,(x,y),(x+w,y+h),(0,255,0),5)#繪制最小外接圓(x,y),r=cv2.minEnclosingCircle(cnt)center=(int(x),int(y))r=int(r)cv2.circle(result,center,r,(255,255,255),5)#plt.figure(figsize=(400,600))print(img_gray.shape)
print(img_gray[0][0])
plt.subplot(221)
#img_gray=BGR_TO_RGB(img_gray,'gray')
plt.imshow(img_gray,'gray')
plt.title('img_gray')plt.subplot(222)
plt.imshow(binary,'gray')
plt.title('binary')
plt.subplot(223)
plt.imshow(result,'gray')
plt.title('result')plt.show()
os.system("pause")

運行結果如下:

在這里插入圖片描述

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

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

相關文章

Hibernate的三種狀態

1.瞬時狀態(Transient) 通過new創建對象后,對象并沒有立刻持久化,他并未對數據庫中的數據有任何的關聯,此時java對象的狀態為瞬時狀態,Session對于瞬時狀態的java對象是一無所知的,當對象不再被其他對象引用時&#xf…

【TL431+場效應管組成過壓保護電路】2022-3-22

緣由這個穩壓三極管是構成的電路是起到保護的作用嗎?-硬件開發-CSDN問答

HTML5+ API 爬坑記錄

背景: 有個比較早些使用5開發的項目, 最近兩天反饋了一些問題, 解決過程在此記錄; 坑1: plus.gallery.pick 選擇圖片沒有進入回調 HTML5 API Reference 在 聯想小新 平板電腦上選擇相冊圖片進行上傳時, 打開相冊瞬間 應用會自動重啟, 相冊倒是有打開, 不過應用重啟了, 導…

使用正則表達式來判斷一個字符串只是否包含數字

使用正則表達式來判斷一個字符串只是否包含數字 1、第一種 import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String inputString "12345";if (containsOnlyDigits(inputString)) {System.out.println("字符串只…

文件url 轉File

// param url : http://xxx.xxx.xx.jpg public static File getFile(String url) throws Exception {//對本地?件命名String fileName url.substring(url.lastIndexOf("."),url.length());File file null;URL urlfile;InputStream inStream null;OutputStream os…

[原創](免改BIOS)使用Clover升級舊電腦-(高階玩法)讓固態硬盤內置Win11 PE啟動系統

[簡介] 常用網名: 豬頭三 出生日期: 1981.XX.XXQQ: 643439947 個人網站: 80x86匯編小站 https://www.x86asm.org 編程生涯: 2001年~至今[共22年] 職業生涯: 20年 開發語言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 開發工具: Visual Studio、Delphi…

【算法專題】滑動窗口—無重復字符的最長子串

力扣題目鏈接:無重復字符的最長子串 一、題目解析 二、算法原理 解法一:暴力解法(時間復雜度最壞:O(N)) 從每一個位置開始往后枚舉,在往后尋找無重復最長子串時,可以利用哈希表來統計字符出現…

手機APP-MCP走藍牙無線遙控智能安全帽~執法記錄儀~拍照錄像,并可做基礎的配置,例如修改服務器IP以及配置WiFi等

手機APP-MCP走藍牙無線遙控智能安全帽~執法記錄儀~拍照錄像,并可做基礎的配置,例如修改服務器IP以及配置WiFi等 手機APP-MCP走藍牙無線遙控智能安全帽~執法記錄儀~拍照錄像,并可做基礎的配置,例如修改服務器IP以及配置WiFi等, AIoT萬物智聯,智能安全帽…

Java 文件操作

文章目錄 Java 文件操作構造方法文件屬性操作文件內容操作InputStreamReaderOutputStreamWriter 更多案例文件查找普通文件的復制 Java 文件操作 Java 中通過 java.io.File 類來對文件進行描述。 構造方法 構造方法說明File(String pathname)通過路徑名字符串來創建 File 實…

JVM之jvisualvm多合一故障處理工具

jvisualvm多合一故障處理工具 1、visualvm介紹 VisualVM是一款免費的,集成了多個 JDK 命令行工具的可視化工具,它能為您提供強大的分析能力,對 Java 應 用程序做性能分析和調優。這些功能包括生成和分析海量數據、跟蹤內存泄漏、監控垃圾回…

SpringBoot:異步任務基礎與源碼剖析

官網文檔:How To Do Async in Spring | Baeldung。 Async注解 Spring框架基于Async注解提供了對異步執行流程的支持。 最簡單的例子是:使用Async注解修飾一個方法,那么這個方法將在一個單獨的線程中被執行,即:從同步執…

系列六、Spring整合單元測試

一、概述 Spring中獲取bean最常見的方式是通過ClassPathXmlApplicationContext 或者 AnnotationConfigApplicationContext的getBean()方式獲取bean,那么在Spring中如何像在SpringBoot中直接一個類上添加個SpringBootTest注解,即可在類中注入自己想要測試…

java反序列化漏洞詳解

java反序列化漏洞 文章目錄 java反序列化漏洞漏洞原理漏洞評級漏洞危害漏洞驗證漏洞防御典型案例 漏洞原理 由于java開發人員在編寫代碼時重寫了 readObject 方法,在重寫的 readObject 方法中調用其他函數實現鏈式調用最終調用到了危險函數,從而形成反序…

【C++】泛型編程 ? ( 類模板示例 - 數組類模板 | 自定義類中持有指針成員變量 )

文章目錄 一、支持 數組類模板 存儲的 自定義類1、可拷貝和可打印的自定義類2、改進方向3、改進方向 - 構造函數4、改進方向 - 析構函數5、改進方向 - 重載左移運算符6、改進方向 - 重載拷貝構造函數 和 等號運算符 二、代碼示例1、Array.h 頭文件2、Array.cpp 代碼文件3、Test…

[網鼎杯 2020 朱雀組]phpweb

看一下源碼 應該是輸入的date 作為函數,value作為內部參數的值,將date()函數返回的結果顯示在頁面上 回去看的時候,意外發現頁面有了新的跳轉,觀察一下發現,頁面每隔五秒就會發生一次跳轉 所以就抓包看看 抓包發現po…

GEE:kNN(k-最近鄰)分類教程(樣本制作、特征添加、訓練、精度、最優參數、統計面積)

作者:CSDN @ _養樂多_ 本文將介紹在Google Earth Engine (GEE)平臺上進行kNN(k-最近鄰)分類的方法和代碼,其中包括制作樣本點教程(本地、在線和本地在線混合制作樣本點,合并樣本點等),加入特征變量(各種指數、紋理特征、時間序列特征、物候特征等),運行kNN(k-最近…

Linux中,查看Tomcat版本、如何查看Tomcat版本

方法 在tomcat的bin目錄下,執行version.sh命令即可 結果

python每日一題——3最長連續序列

題目 給定一個未排序的整數數組 nums ,找出數字連續的最長序列(不要求序列元素在原數組中連續)的長度。 請你設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1: 輸入:nums [100,4,200,1,3,2] 輸出&#xf…

RpcServiceContext上下文

消費者: web 提供者: buss-service 同一服務器: 192.168.100.228 RpcServiceContext serviceContext RpcContext.getServiceContext(); //web->buss-serviceLOGGER.warn("getRequest->{}", JsonUtil.toJson(serviceContext.getRequest())); //getRequest-…

ElementUI table+dialog實現一個簡單的可編輯的表格

table組件如何實現可編輯呢? 我的需求是把table組件那樣的表格,實現它點擊可以彈出一個框,然后在這個框里面輸入你的東西,然后將他回顯回去,當然,輸入的有可能是時間啥的。 為什么要彈出彈層不在框上直接…