python hough變換檢測(cè)直線(xiàn)的實(shí)現(xiàn)方法
1 原理

2 檢測(cè)步驟
將參數(shù)空間(ρ,θ) 量化成m*n(m為ρ的等份數(shù),n為θ的等份數(shù))個(gè)單元,并設(shè)置累加器矩陣,初始值為0;
對(duì)圖像邊界上的每一個(gè)點(diǎn)(x,y)帶入ρ=xcosθ+ysinθ,求得每個(gè)θ對(duì)應(yīng)的ρ值,并在ρ和θ所對(duì)應(yīng)的單元,將累加器加1,即:Q(i,j)=Q(i,j)+1;
檢驗(yàn)參數(shù)空間中每個(gè)累加器的值,累加器最大的單元所對(duì)應(yīng)的ρ和θ即為直角坐標(biāo)系中直線(xiàn)方程的參數(shù)。
3 接口

image:二值圖像,canny邊緣檢測(cè)輸出。這里是result。
rho: 以像素為單位的距離精度,這里為1像素。如果想要檢測(cè)的線(xiàn)段更多,可以設(shè)為0.1。
theta: 以弧度為單位的角度精度,這里為numpy.pi/180。如果想要檢測(cè)的線(xiàn)段更多,可以設(shè)為0.01 * numpy.pi/180。
threshod: 閾值參數(shù),int類(lèi)型,超過(guò)設(shè)定閾值才被檢測(cè)出線(xiàn)段,這里為10。
minLineLength:線(xiàn)段以像素為單位的最小長(zhǎng)度。
maxLineGap:同一方向上兩條線(xiàn)段判定為一條線(xiàn)段的最大允許間隔。
4 代碼及結(jié)果
import os
import numpy as np
import cv2
from PIL import Image, ImageEnhance
import math
def img_processing(img):
# 灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
# canny邊緣檢測(cè)
edges = cv2.Canny(binary, 50, 150, apertureSize=3)
return edges
def line_detect(img):
img = Image.open(img)
img = ImageEnhance.Contrast(img).enhance(3)
# img.show()
img = np.array(img)
result = img_processing(img)
# 霍夫線(xiàn)檢測(cè)
lines = cv2.HoughLinesP(result, 1, 1 * np.pi/180, 10, minLineLength=10, maxLineGap=5)
# print(lines)
print("Line Num : ", len(lines))
# 畫(huà)出檢測(cè)的線(xiàn)段
for line in lines:
for x1, y1, x2, y2 in line:
cv2.line(img, (x1, y1), (x2, y2), (255, 0, 0), 1)
pass
img = Image.fromarray(img, 'RGB')
img.show()
if __name__ == "__main__":
line_detect("1.jpg")
pass
原圖如下:

檢測(cè)結(jié)果:


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)給微信公眾號(hào)發(fā)送消息的方法
這篇文章主要介紹了python實(shí)現(xiàn)給微信公眾號(hào)發(fā)送消息的方法,結(jié)合實(shí)例形式分析了Python針對(duì)微信公眾號(hào)接口操作的相關(guān)技巧,需要的朋友可以參考下2017-06-06
numpy.random.shuffle打亂順序函數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了numpy.random.shuffle打亂順序函數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
python實(shí)現(xiàn)的簡(jiǎn)單RPG游戲流程實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)的簡(jiǎn)單RPG游戲流程,實(shí)例分析了Python實(shí)現(xiàn)RPG游戲流程的常用判定技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-06-06
python爬蟲(chóng)之線(xiàn)程池和進(jìn)程池功能與用法詳解
這篇文章主要介紹了python爬蟲(chóng)之線(xiàn)程池和進(jìn)程池功能與用法,結(jié)合實(shí)例形式分析了Python基于線(xiàn)程池與進(jìn)程池的爬蟲(chóng)功能相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2018-08-08
python實(shí)現(xiàn)名片管理系統(tǒng)項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)名片管理系統(tǒng)項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
Pytorch模型的保存/復(fù)用/遷移實(shí)現(xiàn)代碼
本文整理了Pytorch框架下模型的保存、復(fù)用、推理、再訓(xùn)練和遷移等實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
python使用requests+excel進(jìn)行接口自動(dòng)化測(cè)試的實(shí)現(xiàn)
在當(dāng)今的互聯(lián)網(wǎng)時(shí)代中,接口自動(dòng)化測(cè)試越來(lái)越成為軟件測(cè)試的重要組成部分,本文就來(lái)介紹了python使用requests+excel進(jìn)行接口自動(dòng)化測(cè)試的實(shí)現(xiàn),感興趣的可以了解一下2023-11-11

