日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python-Opencv激光测距

發(fā)布時間:2023/12/31 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-Opencv激光测距 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 前景

上文采用霍夫變換來獲取坐標(biāo),可以看出直線誤判了很多條所以改善了一下測距的方式改成用獲取最小外接矩形的方式獲取

測試圖片

hsv調(diào)的數(shù)值,TrackBar調(diào)整hsv代碼在上文, 獲取hsv大小值后轉(zhuǎn)到判斷那里去

?效果圖

這里是判斷了很多矩形的但我們通過觀察激光的特征后發(fā)現(xiàn)可以通過篩選激光的的高和寬來獲取我們所要的目標(biāo)矩形,有了目標(biāo)矩形獲取的坐標(biāo)后,通過cv2.line就可以把這條線給連接起來了

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 要注意矩形框沒法在hsv通道的圖畫出來的,想要畫的話要進(jìn)行轉(zhuǎn)通道處理

這里是代碼

import numpy as np import cv2def findLine(img):hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)lower = np.array([0, 0, 255])upper = np.array([147, 8, 255])mask = cv2.inRange(hsv_img, lower, upper)result = cv2.bitwise_and(img, img, mask=mask)cv2.namedWindow('result', 0)cv2.resizeWindow('result', (405, 394))cv2.imshow("result", result)return resultdef rectangle(img, imgResult):img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)t, img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)contours, hierarchy = cv2.findContours(img, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)i = 0Coordinate = []Numberx = []Numbery = []Ylabel = []Xlabel = []for i in range(0, len(contours)):x, y, w, h = cv2.boundingRect(contours[i])i += 1if w > 30 and h > 30:if w < 100:Ylabel.append(y)Coordinate.append(x)cv2.rectangle(imgResult, (x, y), (x + w, y + h), (255, 20, 25), 20)Numberx.append(x + w)Numbery.append(y + h)cv2.line(imgResult, (Numberx[1], Numbery[1]), (Coordinate[0], Ylabel[0]), (0,255,0), 50)cv2.namedWindow('Canny', 0)cv2.resizeWindow('Canny', (405, 394))cv2.imshow("Canny", imgResult)return imgResult, Coordinate while True:img = cv2.imread("02.jpg")cv2.resize(img, (405, 394))imgResult = img.copy()img = findLine(img)Result, Coordinate = rectangle(img, imgResult)print('左邊坐標(biāo)點為', Coordinate[0], '右邊坐標(biāo)點為', Coordinate[1])print('相差距離為', Coordinate[1]-Coordinate[0])cv2.waitKey()

要注意的是如果獲取的圖像信息,滿足不了直線的數(shù)據(jù)會報錯,就是圖像處理后激光處理的太糊了,檢測不出來矩形是會直接報錯的

?所以我們在hsv那里一定要調(diào)整好我們的數(shù)值

總結(jié)

以上是生活随笔為你收集整理的Python-Opencv激光测距的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。