欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+OpenCV圖像處理——實(shí)現(xiàn)直線檢測

 更新時(shí)間:2020年10月23日 12:01:53   作者:蛋片雞  
這篇文章主要介紹了Python+OpenCV如何實(shí)現(xiàn)直線檢測,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下

簡介:

1.霍夫變換(Hough Transform) 霍夫變換是圖像處理中從圖像中識別幾何形狀的基本方法之一,應(yīng)用很廣泛,也有很多改進(jìn)算法。主要用來從圖像中分離出具有某種相同特征的幾何形狀(如,直線,圓等)。最基本的霍夫變換是從黑白圖像中檢測直線(線段)。

2.Hough變換的原理是將特定圖形上的點(diǎn)變換到一組參數(shù)空間上,根據(jù)參數(shù)空間點(diǎn)的累計(jì)結(jié)果找到一個(gè)極大值對應(yīng)的解,那么這個(gè)解就對應(yīng)著要尋找的幾何形狀的參數(shù)(比如說直線,那么就會得到直線的斜率k與常熟b,圓就會得到圓心與半徑等等)

3.霍夫線變換是一種用來尋找直線的方法。用霍夫線變換之前, 首先需要對圖像進(jìn)行邊緣檢測的處理,也即霍夫線變換的直接輸入只能是邊緣二值圖像。

4.霍夫直線檢測的具體原理參見:

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

代碼如下:

#直線檢測
#使用霍夫直線變換做直線檢測,前提條件:邊緣檢測已經(jīng)完成
import cv2 as cv
import numpy as np

#標(biāo)準(zhǔn)霍夫線變換
def line_detection(image):
 gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY)
 edges = cv.Canny(gray, 50, 150, apertureSize=3) #apertureSize參數(shù)默認(rèn)其實(shí)就是3
 cv.imshow("edges", edges)
 lines = cv.HoughLines(edges, 1, np.pi/180, 80)
 for line in lines:
 rho, theta = line[0] #line[0]存儲的是點(diǎn)到直線的極徑和極角,其中極角是弧度表示的。
 a = np.cos(theta) #theta是弧度
 b = np.sin(theta)
 x0 = a * rho #代表x = r * cos(theta)
 y0 = b * rho #代表y = r * sin(theta)
 x1 = int(x0 + 1000 * (-b)) #計(jì)算直線起點(diǎn)橫坐標(biāo)
 y1 = int(y0 + 1000 * a) #計(jì)算起始起點(diǎn)縱坐標(biāo)
 x2 = int(x0 - 1000 * (-b)) #計(jì)算直線終點(diǎn)橫坐標(biāo)
 y2 = int(y0 - 1000 * a) #計(jì)算直線終點(diǎn)縱坐標(biāo) 注:這里的數(shù)值1000給出了畫出的線段長度范圍大小,數(shù)值越小,畫出的線段越短,數(shù)值越大,畫出的線段越長
 cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2) #點(diǎn)的坐標(biāo)必須是元組,不能是列表。
 cv.imshow("image-lines", image)

#統(tǒng)計(jì)概率霍夫線變換
def line_detect_possible_demo(image):
 gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY)
 edges = cv.Canny(gray, 50, 150, apertureSize=3) # apertureSize參數(shù)默認(rèn)其實(shí)就是3
 lines = cv.HoughLinesP(edges, 1, np.pi / 180, 60, minLineLength=60, maxLineGap=5)
 for line in lines:
 x1, y1, x2, y2 = line[0]
 cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)
 cv.imshow("line_detect_possible_demo",image)

src = cv.imread('E:/imageload/louti.jpg')
print(src.shape)
cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE) 
cv.imshow('input_image', src)
line_detection(src)
src = cv.imread('E:/imageload/louti.jpg') #調(diào)用上一個(gè)函數(shù)后,會把傳入的src數(shù)組改變,所以調(diào)用下一個(gè)函數(shù)時(shí),要重新讀取圖片
line_detect_possible_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

運(yùn)行結(jié)果:

注意:

1.opencv的HoughLines函數(shù)是標(biāo)準(zhǔn)霍夫線變換函數(shù),該函數(shù)的功能是通過一組參數(shù)對的集合來表示檢測到的直線,其函數(shù)原型為:HoughLines(image, rho, theta, threshold[, lines[, srn[, stn[, min_theta[, max_theta]]]]]) -> lines

image參數(shù)表示邊緣檢測的輸出圖像,該圖像為單通道8位二進(jìn)制圖像。

rho參數(shù)表示參數(shù)極徑以像素值為單位的分辨率,這里一般使用1像素。

theta參數(shù)表示參數(shù)極角以弧度為單位的分辨率,這里使用1度。

threshold參數(shù)表示檢測一條直線所需最少的曲線交點(diǎn)。

lines參數(shù)表示儲存著檢測到的直線的參數(shù)對的容器 。

srn參數(shù)、stn參數(shù)默認(rèn)都為0。如果srn = 0且stn = 0,則使用經(jīng)典的Hough變換。

min_theta參數(shù)表示對于標(biāo)準(zhǔn)和多尺度Hough變換,檢查線條的最小角度。

max_theta參數(shù)表示對于標(biāo)準(zhǔn)和多尺度Hough變換,檢查線條的最大角度。

2.opencv的HoughLinesP函數(shù)是統(tǒng)計(jì)概率霍夫線變換函數(shù),該函數(shù)能輸出檢測到的直線的端點(diǎn),其函數(shù)原型為:HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]]) -> lines

image參數(shù)表示邊緣檢測的輸出圖像,該圖像為單通道8位二進(jìn)制圖像。

rho參數(shù)表示參數(shù)極徑以像素值為單位的分辨率,這里一般使用 1 像素。

theta參數(shù)表示參數(shù)極角以弧度為單位的分辨率,這里使用 1度。

threshold參數(shù)表示檢測一條直線所需最少的曲線交點(diǎn)。

lines參數(shù)表示儲存著檢測到的直線的參數(shù)對 的容器,也就是線段兩個(gè)端點(diǎn)的坐標(biāo)。

minLineLength參數(shù)表示能組成一條直線的最少點(diǎn)的數(shù)量,點(diǎn)數(shù)量不足的直線將被拋棄。

maxLineGap參數(shù)表示能被認(rèn)為在一條直線上的亮點(diǎn)的最大距離。

以上就是Python+OpenCV圖像處理——實(shí)現(xiàn)直線檢測的詳細(xì)內(nèi)容,更多關(guān)于python 直線檢測的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python3安裝Pymongo詳細(xì)步驟

    Python3安裝Pymongo詳細(xì)步驟

    本篇文章主要介紹了Python3安裝Pymongo詳細(xì)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Opencv中cv2.floodFill算法的使用

    Opencv中cv2.floodFill算法的使用

    本文結(jié)合實(shí)例,詳細(xì)的介紹了泛洪填充算法的具體使用,具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Python 自動(dòng)安裝 Rising 殺毒軟件

    Python 自動(dòng)安裝 Rising 殺毒軟件

    平日里經(jīng)常需要重新安裝殺毒軟件,我使用的是 Rising 該軟件可以將升級后的新版本,壓縮成一個(gè)安裝包,當(dāng)升級失敗造成硬盤中的 Rising
    2009-04-04
  • jupyter notebook插入本地圖片的實(shí)現(xiàn)

    jupyter notebook插入本地圖片的實(shí)現(xiàn)

    這篇文章主要介紹了jupyter notebook插入本地圖片的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Django如何繼承AbstractUser擴(kuò)展字段

    Django如何繼承AbstractUser擴(kuò)展字段

    這篇文章主要介紹了Django如何繼承AbstractUser擴(kuò)展字段,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python處理yaml和嵌套數(shù)據(jù)結(jié)構(gòu)技巧示例

    Python處理yaml和嵌套數(shù)據(jù)結(jié)構(gòu)技巧示例

    這篇文章主要為大家介紹了Python處理yaml和嵌套數(shù)據(jù)結(jié)構(gòu)技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python制作豆瓣圖片的爬蟲

    Python制作豆瓣圖片的爬蟲

    本文給大家分享的是作者制作的爬取豆瓣首頁圖片的爬蟲代碼,代碼很簡單,大家可以參考下思路,希望可以幫到大家
    2017-12-12
  • 詳解Python不同版本之間的切換方法

    詳解Python不同版本之間的切換方法

    本文主要介紹了詳解Python不同版本之間的切換方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python文件右鍵找不到IDLE打開項(xiàng)解決辦法

    Python文件右鍵找不到IDLE打開項(xiàng)解決辦法

    這篇文章主要介紹了Python文件右鍵找不到IDLE打開項(xiàng)解決辦法,本文使用注冊表解決了這個(gè)問題,需要的朋友可以參考下
    2015-06-06
  • python驗(yàn)證碼圖片處理(二值化)

    python驗(yàn)證碼圖片處理(二值化)

    這篇文章主要介紹了python驗(yàn)證碼圖片處理(二值化),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評論