国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python】【OpenCV】繪制外接矩形、外接圓 以及 凸輪廓和Douglas-Peucker算法

這篇具有很好參考價值的文章主要介紹了【Python】【OpenCV】繪制外接矩形、外接圓 以及 凸輪廓和Douglas-Peucker算法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?外接矩形、外接圓:

 1 import cv2
 2 import numpy
 3 
 4 img = cv2.imread('../img/img.png', -1)
 5 ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
 6 contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
 7 
 8 for c in contours:
 9     # 尋找平行于 x軸、y軸 的外接矩形坐標(biāo) -> 左上角坐標(biāo)、寬度、高度
10     rectangle = cv2.boundingRect(c)
11     x, y, w, h = rectangle
12     # 繪制外接矩形
13     cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
14 
15     # 尋找包含前景圖的 可旋轉(zhuǎn) 最小外接矩形 -> 中心點坐標(biāo)、寬度、高度
16     rect = cv2.minAreaRect(c)
17     # 尋找旋轉(zhuǎn)矩形的四個頂點 -> 左上角、右上角、右下角和左下角的頂點坐標(biāo)
18     box = cv2.boxPoints(rect)
19     # 取整
20     box = numpy.int0(box)
21     # 繪制外接矩形,對box打包成列表是因為drawContours希望接收為tuple or list
22     # 或者說是一個iterable
23     cv2.drawContours(img, [box], 0, (0, 0, 255), 3)
24 
25     # 計算最小外接圓 -> 圓心坐標(biāo)、半徑
26     (x, y), radius = cv2.minEnclosingCircle(c)
27     # 取整
28     center = int(x), int(y)
29     radius = int(radius)
30     # 繪制圓形
31     img = cv2.circle(img, center, radius, (0, 255, 0), 2)
32 
33 
34 img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
35 img = cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
36 cv2.imshow('', img)
37 cv2.waitKey()
38 cv2.destroyAllWindows()

?文章來源地址http://www.zghlxwxcb.cn/news/detail-748642.html

1、cv2.boundingRect() Method 和 cv2.minAreaRect() Merhod:前者只尋找和 x、y軸 平行的矩形,后者則可以出現(xiàn)旋轉(zhuǎn)角度。

2、cv2.drawContours() Method:第二個參數(shù)接收的是輪廓信息,但是這個輪廓信息需要以 tuple or list or set類型(或者說是iterable)才可以傳入。

  請注意:當(dāng)我們對 box 變量進行 tuple() list() set() 操作時,都會報錯,這是因為,在針對numpy數(shù)組進行可迭代轉(zhuǎn)換時,前面的三種方式,都會對numpy數(shù)組中的每個元素都視為單獨的一個 ”列表元素“?,而不是將整個 box 視為一個列表 這會導(dǎo)致如:

  box =?[[ -8 410] [ 57 -21] [444 37] [379 469]],

  在使用 list() 后:

  box =?[array([ -8, 410], dtype=int64), array([ 57, -21], dtype=int64), array([444,? 37], dtype=int64), array([379, 469], dtype=int64)]

  但是我們需要的正確的格式是:

  [array([[ -8, 410], [ 57, -21], [444, 37], [379, 469]], dtype=int64)]

?

總結(jié):針對numpy數(shù)組轉(zhuǎn)換為可迭代對象時,[ ]、(, )、{ } 和 list()、tuple()、set() 會得到不用的結(jié)果,即是否會將元素視為單獨的一個”列表元素“,這種情況只針對 numpy 數(shù)組(就筆者目前所接觸過的各種類型)。

?

到了這里,關(guān)于【Python】【OpenCV】繪制外接矩形、外接圓 以及 凸輪廓和Douglas-Peucker算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【計算幾何】Python:德勞內(nèi)三角剖分算法 | 利用 scatter 繪制散點圖 | 實現(xiàn)外接圓生成 | scipy庫的 Dealunay 函數(shù) | 實戰(zhàn): A-B間歐氏距離計算

    【計算幾何】Python:德勞內(nèi)三角剖分算法 | 利用 scatter 繪制散點圖 | 實現(xiàn)外接圓生成 | scipy庫的 Dealunay 函數(shù) | 實戰(zhàn): A-B間歐氏距離計算

    ?? 猛戳!跟哥們一起玩蛇啊? ???《一起玩蛇》?? ?? 寫在前面 :本章我們將介紹的是計算機和領(lǐng)域的 Delaunay 三角剖分算法(即德勞內(nèi)三角剖分),它是一種用于將點集劃分成三角形網(wǎng)格的算法。點集的三角剖分屬于計算幾何學(xué)科范疇,對數(shù)值分析、有限元分析與圖形學(xué)

    2024年02月03日
    瀏覽(32)
  • OpenCvSharp函數(shù):FitEllipse/FitEllipseAMS/FitEllipseDirect橢圓擬合、MinEnclosingCircle最小外接圓

    OpenCvSharp函數(shù):FitEllipse/FitEllipseAMS/FitEllipseDirect橢圓擬合、MinEnclosingCircle最小外接圓

    函數(shù)說明:基于最小二乘法(least-squares sense)計算圍繞一組(個數(shù)大于等于5個)給定的點集擬合一個橢圓。返回該橢圓的最小外接矩形(如果給定的點是在一條直線上,該矩形的最小邊為0)。注意返回的數(shù)值可能有負(fù)數(shù)(大邊界之外)。 參數(shù) 說明 InputArray points IEnumerablePoint points IE

    2024年02月10日
    瀏覽(21)
  • OpenCV(三十四):輪廓外接最大、最小矩形和多邊形擬合

    OpenCV(三十四):輪廓外接最大、最小矩形和多邊形擬合

    目錄 1.輪廓外接最大矩形boundingRect() 2.輪廓外接最小矩形minAreaRect() 3.輪廓外接多邊形approxPolyDP() 1.輪廓外接最大矩形boundingRect() Rect cv::boundingRect ( InputArray array ) array:輸入的灰度圖像或者2D點集,數(shù)據(jù)類型為vectorPoint或者Mat。 示例代碼: ?輪廓外接最大矩形的結(jié)果: 2.輪廓外接

    2024年02月09日
    瀏覽(301)
  • OPENCV C++(七)霍夫線檢測+找出輪廓和外接矩形+改進旋轉(zhuǎn)

    霍夫線檢測 ?定義存放輸出線的向量 此向量輸出有距離,角度 因為檢測的原理就是在變換霍夫空間里面去檢測的,這里可以理解為極坐標(biāo) 第3個參數(shù)是距離精度 第四個參數(shù)是角度精度,第五個是閾值,只有點超過90個才算一條線 在圖中畫線操作: 這里是畫線操作? 概率霍夫

    2024年02月13日
    瀏覽(91)
  • 【OpenCV常用函數(shù):輪廓檢測+外接矩形檢測】cv2.findContours()+cv2.boundingRect()

    【OpenCV常用函數(shù):輪廓檢測+外接矩形檢測】cv2.findContours()+cv2.boundingRect()

    對具有黑色背景的二值圖像尋找白色區(qū)域的輪廓,因此一般都會先經(jīng)過cvtColor()灰度化和threshold()二值化后的圖像作為輸入。 例如,如下的輪廓檢測出的結(jié)果contours和hierarchy。 根據(jù)輪廓點檢測對應(yīng)輪廓的外接矩形

    2024年02月13日
    瀏覽(90)
  • OpenCV:繪制圖像中mask的最小外接矩形

    在計算機視覺和圖像處理中,我們經(jīng)常需要計算直線與外接矩形邊的交點。這在進行邊緣檢測、圖像分割、目標(biāo)跟蹤等任務(wù)時非常有用。本文將介紹如何使用OpenCV和NumPy計算直線與外接矩形邊的交點,并展示如何在實際圖像中繪制直線。 使用OpenCV的findContours函數(shù)尋找圖像中的

    2024年01月24日
    瀏覽(89)
  • OpenCV-Python(21):OPenCV查找及繪制輪廓

    OpenCV-Python(21):OPenCV查找及繪制輪廓

    1.1 目標(biāo) 理解什么是輪廓 學(xué)習(xí)掌握找輪廓、繪制輪廓等 學(xué)習(xí)使用cv2.findContours()、cv2.drawContours()函數(shù)的用法 1.2?什么是輪廓 ????????在OpenCV中,輪廓是 圖像中連續(xù)的邊界線的曲線,具有相同的顏色或者灰度,用于表示物體的形狀 。輪廓在圖像處理和計算機視覺中非常重要

    2024年01月18日
    瀏覽(28)
  • 使用openCV python繪制實心旋轉(zhuǎn)的矩形

    使用openCV python繪制實心旋轉(zhuǎn)的矩形

    ? 看方法直接看最下邊 看方法直接看最下邊 看方法直接看最下邊 一、通過中心點、寬高、角度得到四個頂點的公式網(wǎng)上都有,最后輸出四個頂點的x和y坐標(biāo)。 二、繪制實心矩形 關(guān)于怎么繪制實心矩形,因為openCV本身的cv2.rectangle只能繪制角度為0的矩形,沒辦法用,所以一開

    2024年02月09日
    瀏覽(20)
  • python opencv 繪制矩形、圓、線、多邊形

    python opencv 繪制矩形、圓、線、多邊形

    ????? 個人簡介: 深度學(xué)習(xí)圖像領(lǐng)域工作者 ?? 總結(jié)鏈接: ???????????? 鏈接中主要是個人工作的總結(jié),每個鏈接都是一些常用demo,代碼直接復(fù)制運行即可。包括: ?????????????????????? 1.工作中常用深度學(xué)習(xí)腳本 ?????????????????????? 2.to

    2024年02月03日
    瀏覽(383)
  • OpenCV——最小外接矩形

    OpenCV——最小外接矩形

    ? emspminAreaRect 函數(shù)用于計算給定點集的最小外接矩形。該矩形的長和寬是可以任意旋轉(zhuǎn)的,因此被稱為旋轉(zhuǎn)矩形。 points :是一個包含點集的 Mat 對象。點集可以是二維點集或三維點集,但是只有前兩個坐標(biāo)被使用。返回值是一個 RotatedRect 對象,表示最小外接矩形。 該函數(shù)

    2024年02月05日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包