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

OpenCV實現(xiàn)直線檢測

 更新時間:2022年08月01日 11:47:07   作者:Robin?Long?2018  
這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)直線檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了OpenCV實現(xiàn)直線檢測的具體代碼,供大家參考,具體內(nèi)容如下

1 介紹

本文主要介紹OpenCV自帶的直線檢測函數(shù)HoughLines()的用法,這個函數(shù)的第一個參數(shù)是一個二值化圖像,所以在進行霍夫變換之前要首先進行二值化,或者進行Canny 邊緣檢測。第二和第三個值分別代表β 和 θ 的精確度。第四個參數(shù)是閾值,只有累加其中的值高于閾值時才被認為是一條直線,也可以把它看成能檢測到的直線的最短長度(以像素點為單位)。返回值就是(β; θ)。β 的單位是像素,θ的單位是弧度。

2 代碼 

#直線檢測
#使用霍夫直線變換做直線檢測,前提條件:邊緣檢測已經(jīng)完成
import cv2 as cv
import numpy as np
import matplotlib.pylab as plt
?
#標準霍夫線變換
def line_detection(image):
? ? gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY)
? ? edges = cv.Canny(gray, 50, 150, apertureSize=3) ?#apertureSize參數(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]存儲的是點到直線的極徑和極角,其中極角是弧度表示的。
? ? ? ? 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)) #計算直線起點橫坐標
? ? ? ? y1 = int(y0 + 1000 * a) ? ?#計算起始起點縱坐標
? ? ? ? x2 = int(x0 - 1000 * (-b)) #計算直線終點橫坐標
? ? ? ? y2 = int(y0 - 1000 * a) ? ?#計算直線終點縱坐標 ? ?注:這里的數(shù)值1000給出了畫出的線段長度范圍大小,數(shù)值越小,畫出的線段越短,數(shù)值越大,畫出的線段越長
? ? ? ? cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2) ? ?#點的坐標必須是元組,不能是列表。
? ? cv.imshow("image-lines", image)
?
#統(tǒng)計概率霍夫線變換
def line_detect_possible_demo(image):
? ? gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY)
? ? edges = cv.Canny(gray, 50, 150, apertureSize=3) ?# apertureSize參數(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(r'..\edge.jpg')
print(src.shape)
cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)
cv.imshow('input_image', src)
line_detection(src)
src = cv.imread(r'..\edge.jpg') #調(diào)用上一個函數(shù)后,會把傳入的src數(shù)組改變,所以調(diào)用下一個函數(shù)時,要重新讀取圖片
line_detect_possible_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

3 效果 

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

相關(guān)文章

最新評論

囊谦县| 满洲里市| 海安县| 南阳市| 梧州市| 凤台县| 黄陵县| 宜兰市| 余姚市| 怀集县| 墨脱县| 阜阳市| 樟树市| 隆回县| 越西县| 周口市| 平远县| 来凤县| 广东省| 湛江市| 邳州市| 襄汾县| 黄浦区| 布尔津县| 东丽区| 壶关县| 德惠市| 赣榆县| 额敏县| 武城县| 抚宁县| 荣昌县| 门源| 牟定县| 杂多县| 天长市| 左权县| 玉林市| 盖州市| 永福县| 浙江省|