最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Opencv中Houghline方法實(shí)現(xiàn)直線檢測

 更新時間:2021年09月01日 11:10:20   作者:CONQUERczy  
這篇文章主要為大家詳細(xì)介紹了利用Opencv中的Houghline方法進(jìn)行直線檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

利用Opencv中的Houghline方法進(jìn)行直線檢測—python語言

這是給Python部落翻譯的文章,請?jiān)谶@里看原文。

在圖像處理中,霍夫變換用來檢測任意能夠用數(shù)學(xué)公式表達(dá)的形狀,即使這個形狀被破壞或者有點(diǎn)扭曲。

下面我們將看到利用HoughLine算法來闡述霍夫變化進(jìn)行直線檢測的原理,把此算法應(yīng)用到特點(diǎn)圖像的邊緣檢測是可取的。邊緣檢測方法請參考這篇文章–邊緣檢測。

Houghline算法基礎(chǔ)

直線可以表示為y=mx+c,或者以極坐標(biāo)形式表示為r=xcosθ+ysinθ,其中r是原點(diǎn)到直線的垂直距離,θ是水平軸順時針方向到垂直線的夾角(這個方向取決于坐標(biāo)的形式,在OpenCV就是采用這種極坐標(biāo)形式)。

因此任意的曲線都可以用兩個參數(shù)(r,θ)表示。

HoughLine算法原理:

  • 首先建立一個二維的數(shù)組或者累加器(用來保存這兩個參數(shù)),并初始化為零;
  • 這個二維數(shù)組的行代表不同的r,而列代表角度θ;
  • 數(shù)組的大小取決于算法的精度。假設(shè)所需角度的精度精確到1∘,那么就需要180列(直線的最大角度是180)。
  • 對于r,最大的可能距離是圖像的對角長度,因此若需要一個像素的精度,那么需要把行數(shù)設(shè)為圖像對角線的長度。

例子:

假設(shè)一幅100x100的圖像,在圖像中間有一條水平直線。設(shè)直線的第一個點(diǎn)的坐標(biāo)為(x,y),在直線方程中,令參數(shù)θ=0,12,⋯,180,觀查參數(shù)r變化。對每一個參數(shù)對(r,θ),在累加器中將(r,θ)對應(yīng)的單元格中的值遞增1,比如現(xiàn)在在累加器中,某個單元(50,90)的值等于1,其它的值也如此。

對于直線上的第二個點(diǎn),重復(fù)上述操作。將得到的參數(shù)對(r,θ)的對應(yīng)值繼續(xù)遞增,然后(50,90)對應(yīng)的值等于2。實(shí)現(xiàn)上我們是對參數(shù)對(r,θ)進(jìn)行投票,對直線上的每一個點(diǎn)重復(fù)上述操作,對每一個點(diǎn),單元格(50,90)對應(yīng)的值會遞增,或者說投票給參數(shù)對(50,90),而會或者不會投票給其它參數(shù)對。以這種方式,最后單元格(50,90)的值將會是最大的值。然后搜索累加器的最大值,將會找到參數(shù)對(50,90)。也就是說,在圖像中找到了到原點(diǎn)距離為50,角度為90的一條直線。

上述算法的過程被封裝成OpenCV函數(shù)cv2.HoughLines(),函數(shù)返回(r,θ)的一個數(shù)組,其中r的單位為像素,θ的單位為弧度。

# Python program to illustrate HoughLine
# method for line detection
import cv2
import numpy as np

# Reading the required image in 
# which operations are to be done. 
# Make sure that the image is in the same 
# directory in which this python program is
img = cv2.imread('xyz.jpg')

# Convert the img to grayscale
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# Apply edge detection method on the image
edges = cv2.Canny(gray,50,150,apertureSize = 3)

# This returns an array of r and theta values
lines = cv2.HoughLines(edges,1,np.pi/180, 200)

# The below for loop runs till r and theta values 
# are in the range of the 2d array
for r,theta in lines[0]:

 # Stores the value of cos(theta) in a
 a = np.cos(theta)

 # Stores the value of sin(theta) in b
 b = np.sin(theta)

 # x0 stores the value rcos(theta)
 x0 = a*r

 # y0 stores the value rsin(theta)
 y0 = b*r

 # x1 stores the rounded off value of (rcos(theta)-1000sin(theta))
 x1 = int(x0 + 1000*(-b))

 # y1 stores the rounded off value of (rsin(theta)+1000cos(theta))
 y1 = int(y0 + 1000*(a))

 # x2 stores the rounded off value of (rcos(theta)+1000sin(theta))
 x2 = int(x0 - 1000*(-b))

 # y2 stores the rounded off value of (rsin(theta)-1000cos(theta))
 y2 = int(y0 - 1000*(a))

 # cv2.line draws a line in img from the point(x1,y1) to (x2,y2).
 # (0,0,255) denotes the colour of the line to be 
 #drawn. In this case, it is red. 
 cv2.line(img,(x1,y1), (x2,y2), (0,0,255),2)

# All the changes made in the input image are finally
# written on a new image houghlines.jpg
cv2.imwrite('houghlines3.jpg', img)

函數(shù)(cv2.HoughLines(edges, 1, np.pi/180,200))

  • 第一個參數(shù)是輸入圖像,且必須是二值圖像,在進(jìn)行霍夫變換之前需要采用閾值方法的邊緣檢測;
  • 第二和第三個參數(shù)分別是r,θ對應(yīng)的精度;
  • 第四個參數(shù)是閾值,判定為直線投票數(shù)的最小值;
  • 注意,投票數(shù)取決于直線上點(diǎn)的個數(shù),因此這個閾值代表了檢測到的直線的最短長度。

總結(jié)

  • 在圖像分析應(yīng)用中,邊緣分割點(diǎn)的坐標(biāo)(即X,Y)是已知的,在直線的參數(shù)方程中作為輸入,而r,θ是我們要找的未知變量;
  • 對每一個角度θ,求出r的值,也就是將笛卡爾圖像空間的點(diǎn)映射到霍夫參數(shù)極坐標(biāo)空間的曲線,這種點(diǎn)到曲線的變換就是直線的霍夫變換;
  • 這種變換是通過量化霍夫參數(shù)為有限的間隔或者累加器單元來實(shí)現(xiàn)的,隨著算法的運(yùn)行,每一個(X,Y)轉(zhuǎn)換成離散的(r,θ)曲線,曲線上的點(diǎn)對應(yīng)的累加器(二維數(shù)組)的值會遞增;
  • 累加器中的峰值就代表了圖像中有相應(yīng)直線的存在。

霍夫變換的應(yīng)用

  • 用于分離圖像中特殊形狀的特征;
  • 可以容忍特征邊界描述的誤差,并且不受噪聲的干擾;
  • 廣泛用于條形碼掃描、驗(yàn)證和識別。

文章作者是Pratima Upadhyay,如果你喜歡GeeksforGeeks,并且愿意分享,可以利用contribute.geeksforgeeks.org寫文章,然后發(fā)送到contribute@geeksforgeeks.org,在GeeksforGeeks中看到自己的文章,幫助更多的Geeks。

若發(fā)現(xiàn)錯誤歡迎指正,也歡迎評論。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python模型性能ROC和AUC分析詳解

    python模型性能ROC和AUC分析詳解

    這篇文章主要為大家介紹了python模型性能ROC和AUC分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python實(shí)現(xiàn)圖像拼接

    python實(shí)現(xiàn)圖像拼接

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖像拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Django如何防止定時任務(wù)并發(fā)淺析

    Django如何防止定時任務(wù)并發(fā)淺析

    這篇文章主要給大家介紹了關(guān)于Django如何防止定時任務(wù)并發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • python中各種常見文件的讀寫操作與類型轉(zhuǎn)換詳細(xì)指南

    python中各種常見文件的讀寫操作與類型轉(zhuǎn)換詳細(xì)指南

    這篇文章主要為大家詳細(xì)介紹了python中各種常見文件(txt,xls,csv,sql,二進(jìn)制文件)的讀寫操作與類型轉(zhuǎn)換,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • Python RPA自動化機(jī)器人模擬鼠標(biāo)鍵盤

    Python RPA自動化機(jī)器人模擬鼠標(biāo)鍵盤

    這篇文章主要介紹了Python RPA自動化機(jī)器人模擬鼠標(biāo)鍵盤,RPA,全稱為Robotic Process Automation,即機(jī)器人流程自動化。我們可以利用RPA技術(shù)將工作中可重復(fù)的部分流程化,讓機(jī)器替我們完成這一工作
    2023-02-02
  • Django的開發(fā)步驟原來是這樣的

    Django的開發(fā)步驟原來是這樣的

    這篇文章主要為大家詳細(xì)介紹了Django的開發(fā)步驟,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python基于文本內(nèi)容實(shí)現(xiàn)隱私信息提取與評估

    Python基于文本內(nèi)容實(shí)現(xiàn)隱私信息提取與評估

    這篇文章主要為大家介紹了Python如何實(shí)現(xiàn)基于文本內(nèi)容的用戶隱私泄露風(fēng)險(xiǎn)評估系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-03-03
  • 安裝ElasticSearch搜索工具并配置Python驅(qū)動的方法

    安裝ElasticSearch搜索工具并配置Python驅(qū)動的方法

    這篇文章主要介紹了安裝ElasticSearch搜索工具并配置Python驅(qū)動的方法,文中還介紹了其與Kibana數(shù)據(jù)顯示客戶端的配合使用,需要的朋友可以參考下
    2015-12-12
  • Python 運(yùn)行.py文件和交互式運(yùn)行代碼的區(qū)別詳解

    Python 運(yùn)行.py文件和交互式運(yùn)行代碼的區(qū)別詳解

    這篇文章主要介紹了Python 運(yùn)行.py文件和交互式運(yùn)行代碼的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Pandas數(shù)據(jù)清洗的維度詳解

    Pandas數(shù)據(jù)清洗的維度詳解

    數(shù)據(jù)清洗是數(shù)據(jù)分析的基礎(chǔ),關(guān)鍵于提高數(shù)據(jù)質(zhì)量和保證分析準(zhǔn)確性。通過數(shù)據(jù)清洗,可以減少錯誤、增加數(shù)據(jù)可用性、保護(hù)隱私。Pandas提供多種方法處理缺失值和重復(fù)值,還有多種方式識別和處理異常值。掌握這些技巧對提升數(shù)據(jù)處理能力極為重要
    2024-09-09

最新評論

淮安市| 南华县| 嘉定区| 油尖旺区| 兴化市| 鸡西市| 奉贤区| 南汇区| 尤溪县| 苏尼特右旗| 定西市| 略阳县| 井研县| 周至县| 曲松县| 镇康县| 饶平县| 云和县| 正宁县| 湘乡市| 临清市| 静安区| 镇巴县| 连江县| 华宁县| 曲阜市| 元朗区| 恩施市| 图们市| 临洮县| 亳州市| 渭源县| 霞浦县| 广安市| 睢宁县| 佛冈县| 扎兰屯市| 定日县| 井陉县| 长沙县| 临西县|