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

OpenCV測量圖像中物體距離

這篇具有很好參考價值的文章主要介紹了OpenCV測量圖像中物體距離。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

先注意 這不是雙目攝像頭的 測距哦~~

計算物體之間的距離與計算圖像中物體的大小算法思路非常相似——都是從參考對象開始的。我們將使用0.25美分作為我們的參考對象,它的寬度為0.955英寸。

并且我們還將0.25美分總是放在圖片最左側使其容易識別。這樣它就滿足了我們上面提到的參考對象的兩個特征。

OpenCV測量圖像中物體距離,人工智能,人工智能我們的目標是找到0.25美分,然后利用0.25美分的尺寸來測量0.25美分硬幣與所有其他物體之間的距離。

定義參考對象并計算距離

打開一個新文件,將其命名為distance_between.py,插入以下代碼:

#?import?the?necessary?packages
from?scipy.spatial?import?distance?as?dist
from?imutils?import?perspective
from?imutils?import?contours
import?numpy?as?np
import?argparse
import?imutils
import?cv2
def?midpoint(ptA,?ptB):
return?((ptA[0]?+?ptB[0])?*?0.5,?(ptA[1]?+?ptB[1])?*?0.5)
#?construct?the?argument?parse?and?parse?the?arguments
ap?=?argparse.ArgumentParser()
ap.add_argument("-i",?"--image",?required=True,
??help="path?to?the?input?image")
ap.add_argument("-w",?"--width",?type=float,?required=True,
??help="width?of?the?left-most?object?in?the?image?(in?inches)")
args?=?vars(ap.parse_args())

我們這里的代碼與上周的代碼幾乎相同。我們從在第2-8行上導入所需的Python包開始。

第12-17行解析命令行參數。這里我們需要兩個參數:——image,它是包含我們想要測量的對象的輸入圖像的路徑,以及——width,為我們參考對象的寬度(單位為英寸)。接下來,我們需要對圖像進行預處理:

#?load?the?image,?convert?it?to?grayscale,?and?blur?it?slightly
image?=?cv2.imread(args["image"])
gray?=?cv2.cvtColor(image,?cv2.COLOR_BGR2GRAY)
gray?=?cv2.GaussianBlur(gray,?(7,?7),?0)
#?perform?edge?detection,?then?perform?a?dilation?+?erosion?to
#?close?gaps?in?between?object?edges
edged?=?cv2.Canny(gray,?50,?100)
edged?=?cv2.dilate(edged,?None,?iterations=1)
edged?=?cv2.erode(edged,?None,?iterations=1)
#?find?contours?in?the?edge?map
cnts?=?cv2.findContours(edged.copy(),?cv2.RETR_EXTERNAL,
??cv2.CHAIN_APPROX_SIMPLE)
cnts?=?imutils.grab_contours(cnts)
#?sort?the?contours?from?left-to-right?and,?then?initialize?the
#?distance?colors?and?reference?object
(cnts,?_)?=?contours.sort_contours(cnts)
colors?=?((0,?0,?255),?(240,?0,?159),?(0,?165,?255),?(255,?255,?0),
??(255,?0,?255))
refObj?=?None

第2-4行從磁盤加載圖像,將其轉換為灰度圖,然后使用7 x 7內核的高斯濾波器對其進行模糊降噪。

當我們的圖像被模糊后,我們應用Canny邊緣檢測器來檢測圖像中的邊緣,然后進行膨脹+腐蝕來縮小邊緣圖中的縫隙(第7-9行)。

調用cv2.findContours檢測邊緣圖中對象的輪廓(第11-13行),而第16行從左到右對輪廓進行排序。由于我們知道0.25美分(即參考對象)將始終是圖像中最左邊,因此從左到右對輪廓進行排序可以確保與參考對象對應的輪廓始終是cnts列表中的第一個。

然后,我們初始化用于繪制距離的colors列表以及refObj變量,該變量將存儲參考對象的邊界框、質心和pixels-per-metric值(看上一篇就明白pixels-per-metric的具體定義,其實就是參考對象的實際大?。▎挝挥⒋纾┡c圖片中的寬度(單位為像素)的比值)。

# loop over the contours individually
for c in cnts:
  # if the contour is not sufficiently large, ignore it
if cv2.contourArea(c) < 100:
continue
  # compute the rotated bounding box of the contour
box = cv2.minAreaRect(c)
box = cv2.cv.BoxPoints(box) if imutils.is_cv2() else cv2.boxPoints(box)
box = np.array(box, dtype="int")
  # order the points in the contour such that they appear
  # in top-left, top-right, bottom-right, and bottom-left
  # order, then draw the outline of the rotated bounding
  # box
box = perspective.order_points(box)
  # compute the center of the bounding box
cX = np.average(box[:, 0])
cY = np.average(box[:, 1])

在第2行,我們開始對cnts列表中的每個輪廓進行循環(huán)。如果輪廓比較小(第4和5行),我們認為是噪聲并忽略它。

然后,第7-9行計算當前對象的最小旋轉包圍框。

第14行上調用order_points函數(此系列第一篇定義的函數)來對矩形框四個頂點以左上角、右上角、右下角和左下角的順序排列,我們將看到,在計算物體之間的距離時,這一點非常重要。

第16行和第17行通過取邊界框在x和y方向上的平均值來計算旋轉后的邊界框的中心(x, y)坐標。

下一步是校準我們的refObj:

#?if?this?is?the?first?contour?we?are?examining?(i.e.,
#?the?left-most?contour),?we?presume?this?is?the
#?reference?object
if?refObj?is?None:
#?unpack?the?ordered?bounding?box,?then?compute?the
#?midpoint?between?the?top-left?and?top-right?points,
#?followed?by?the?midpoint?between?the?top-right?and
#?bottom-right
????(tl,?tr,?br,?bl)?=?box
????(tlblX,?tlblY)?=?midpoint(tl,?bl)
????(trbrX,?trbrY)?=?midpoint(tr,?br)
#?compute?the?Euclidean?distance?between?the?midpoints,
#?then?construct?the?reference?object
????D?=?dist.euclidean((tlblX,?tlblY),?(trbrX,?trbrY))
????refObj?=?(box,?(cX,?cY),?D?/?args["width"])
continue

如果refObj為None(第4行),則需要對其進行初始化。

我們首先獲取(排序后的)最小旋轉邊界框坐標,并分別計算四個頂點之間的中點(第10-15行)。

然后計算中點之間的歐氏距離,給出我們的“像素/尺寸”比例,來確定一英寸為多少像素寬度。

最后,我們將refObj實例化為一個3元組,包括:

  • 物體對象的最小旋轉矩形對象box

  • 參考對象的質心。

  • 像素/寬度比例,我們將用其來結合物體之間的像素距離來確定物體之間的實際距離。

下一個代碼塊負責繪制參考對象和當前檢查對象的輪廓,然后定義變量refCoords和objCoords,這樣(1)最小包圍矩陣坐標和(2)質心的(x, y)坐標都包含在同一個數組中:

# draw the contours on the image
orig = image.copy()
  cv2.drawContours(orig, [box.astype("int")], -1, (0, 255, 0), 2)
  cv2.drawContours(orig, [refObj[0].astype("int")], -1, (0, 255, 0), 2)
# stack the reference coordinates and the object coordinates
# to include the object center
  refCoords = np.vstack([refObj[0], refObj[1]])
  objCoords = np.vstack([box, (cX, cY)])

現在我們可以開始計算圖像中各個物體的質心和質心之間的距離了:

#?loop?over?the?original?points
for?((xA,?yA),?(xB,?yB),?color)?in?zip(refCoords,?objCoords,?colors):
#?draw?circles?corresponding?to?the?current?points?and
#?connect?them?with?a?line
????cv2.circle(orig,?(int(xA),?int(yA)),?5,?color,?-1)
????cv2.circle(orig,?(int(xB),?int(yB)),?5,?color,?-1)
????cv2.line(orig,?(int(xA),?int(yA)),?(int(xB),?int(yB)),
??????color,?2)
#?compute?the?Euclidean?distance?between?the?coordinates,
#?and?then?convert?the?distance?in?pixels?to?distance?in
#?units
????D?=?dist.euclidean((xA,?yA),?(xB,?yB))?/?refObj[2]
????(mX,?mY)?=?midpoint((xA,?yA),?(xB,?yB))
????cv2.putText(orig,?"{:.1f}in".format(D),?(int(mX),?int(mY?-?10)),
??????cv2.FONT_HERSHEY_SIMPLEX,?0.55,?color,?2)
#?show?the?output?image
????cv2.imshow("Image",?orig)
????cv2.waitKey(0)

在第2行,我們開始對圖片中物體對象的頂點(x, y)坐標進行循環(huán)。

然后我們畫一個圓表示我們正在計算距離的當前點坐標,并畫一條線連接這些點(第5-7條線)。

然后,第12行計算參考位置和對象位置之間的歐式距離,然后除以“像素/度量”,得到兩個對象之間的實際距離(以英寸為單位)。然后在圖像上標識出計算的距離(第13-15行)。

距離測量結果

下面是一個GIF動畫,演示了我們的程序運行效果:

?OpenCV測量圖像中物體距離,人工智能,人工智能

在每種情況下,我們的腳本都匹配左上(紅色)、右上(紫色)、右下(橙色)、左下(藍綠色)和質心(粉色)坐標,然后計算參考對象和當前對象之間的距離(以英寸為單位)。

注意圖像中的兩個0.25美分完全平行,這意味著所有五個頂點之間的距離均為6.1英寸。

下面是第二個例子,這次計算的是參考對象和藥丸之間的距離:

OpenCV測量圖像中物體距離,人工智能,人工智能這個例子可以作為藥片分類機器人的輸入,自動獲取一組藥片,并根據它們的大小和與藥片容器的距離來組織它們。

最后一個例子計算了我們的參考對象(一張3.5英寸x 2英寸的名片)和一組7英寸的黑膠唱片和信封之間的距離:

OpenCV測量圖像中物體距離,人工智能,人工智能

whaosoft?aiot?http://143ai.com? 最后聲明~~ 搬自別的大佬 勿怪啊?文章來源地址http://www.zghlxwxcb.cn/news/detail-785494.html

到了這里,關于OpenCV測量圖像中物體距離的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • 【人工智能的數學基礎】最優(yōu)傳輸(Optimal Transport)問題與Wasserstein距離

    Wasserstein Distance. 本文目錄: 最優(yōu)傳輸問題 Optimal Transport Problem 最優(yōu)傳輸問題的對偶問題 Dual Problem Wasserstein距離及其對偶形式 對于兩個概率分布 p ( x ) p(textbf{x})

    2024年02月09日
    瀏覽(19)
  • 基于Solr的智能化人工智能與智能圖像識別

    作者:禪與計算機程序設計藝術 引言 1.1. 背景介紹 隨著人工智能技術的快速發(fā)展,人工智能與圖像識別應用越來越廣泛。在實際應用中,基于Solr的智能化人工智能與智能圖像識別技術具有很高的實用價值和可行性。 1.2. 文章目的 本文旨在講解如何基于Solr實現智能化人工智

    2024年02月07日
    瀏覽(41)
  • Stable Diffusion人工智能圖像合成

    Stable Diffusion人工智能圖像合成

    AI 圖像生成大有來頭。新發(fā)布的開源圖像合成模型稱為Stable Diffusion,它允許任何擁有 PC 和像樣的 GPU 的人想象出他們能想象到的幾乎任何視覺現實。它幾乎可以模仿任何視覺風格,如果你給它輸入一個描述性的短語,結果就會像魔術一樣出現在你的屏幕上。 一些藝術家?對這

    2024年02月09日
    瀏覽(17)
  • Bard:一個可以描述圖像的人工智能

    Bard:一個可以描述圖像的人工智能

    Bard 是一個大型語言模型,可以對各種提示和問題進行交流和生成類似人類的文本。它接受了大量的文字和代碼訓練,可以生成文本、翻譯語言、編寫不同類型的創(chuàng)意內容,并以信息豐富的方式回答你的問題。 Bard 還可以識別圖像。它可以識別圖像中的對象、場景和人物。它

    2024年02月17日
    瀏覽(30)
  • Python人工智能應用--圖像識別&&深度學習

    像素(縮寫為px)是圖像中的最小單位,由一個個小方格組成。 這些小方格都有一個固定的位置和顏色,共同決定了圖像所呈現出來的樣子。 這些小方格的行數與列數又被叫做分辨率。我們常說的某幅圖像的分辨率是1280×720,指的就是這張圖中的每一行都有1280個像素,每一列都

    2024年04月09日
    瀏覽(91)
  • 【人工智能Ⅱ】實驗2:VGG圖像分類

    【人工智能Ⅱ】實驗2:VGG圖像分類

    實驗2:VGG圖像分類 一:實驗目的與要求 1:掌握VGG網絡的原理與結構。 2:學會利用VGG網絡建立訓練模型,并對模型進行評估。 3:學會使用VGG網絡進行分類。 二:實驗內容 1:用VGG網絡對自選圖像數據集進行多分類預測。 2:應用圖像增強方法進行數據集的擴充。 3:調整

    2024年04月26日
    瀏覽(28)
  • 人工智能在圖像處理領域的應用

    人工智能在圖像處理領域的應用

    隨著科技的不斷發(fā)展,人工智能(AI)逐漸成為當今社會的熱點話題。人工智能正在逐漸滲透到人類生活的各個領域,改變著我們的生活方式和社會結構。在圖像處理領域,人工智能的應用也越來越廣泛,為圖像處理帶來了更高效、更準確的解決方案。本文將從圖像分類、圖

    2024年02月04日
    瀏覽(23)
  • 【人工智能圖像補全復現】基于GAN的圖像補全

    【人工智能圖像補全復現】基于GAN的圖像補全

    本文解析和實現論文Globally and Locally Consistent Image Completion中的相關方法。論文亮點在于使用全局(整張圖片)和局部(缺失補全部分)兩種鑒別器來訓練,并運用GAN使生成圖像在各個尺度的特征與真實圖像匹配。 :GAN;圖像補全;多種鑒別器訓練 文章來源:SIGGRAPH 2

    2024年04月24日
    瀏覽(31)
  • AI人工智能課題:圖像增強圖像修復系統(tǒng)的設計與實現(基于百度智能云AI接口)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,免費 項目配有對應開發(fā)文檔、開題報告、任務書、

    2024年02月03日
    瀏覽(22)
  • 基于Springboot+百度AI人工智能圖像圖片智能處理系統(tǒng)設計與實現

    基于Springboot+百度AI人工智能圖像圖片智能處理系統(tǒng)設計與實現

    基于Springboot+百度AI人工智能圖像圖片智能處理系統(tǒng)設計與實現 ?博主介紹: 《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,

    2024年02月05日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包