基于opencv python 的网线线序识别(一)
更新2022.3.22
完整的代碼已丟失,在對應的地方添加代碼段
寫在前面:
這個是我大學本科的課程設計,在做著這個題目之前我也只是會python,而opencv python沒怎么用過,也就在本科階段上過數字圖像處理的課,所以水平很低,有寫的不對的地方望輕噴。而且我在擼碼時候也沒找著有做這個網線線序識別的,就想著借此分享一下,希望對有需要的同學有所幫助吧。
一、設計目標
網線內部是有八條獨立的有顏色的線,分別為白綠、綠、橙、白橙、棕、白棕、藍、白藍,就是有四條純色的線和四條白線稍微摻雜著其他四種顏色的線。識別的目標就是實時采集視頻幀,識別出八條線,并在原圖標上序號,由于有很多種線序規格,做的時候采用的是T568B的排線順序:白橙、橙、白綠、藍、白藍、綠、白褐、褐
當時做的時候遇到有兩個難點,列舉一下,后面會有相應的解決方案
二、設計原理
調用攝像頭實時采集視頻幀,通過對圖像的預處理、二值化后識別出八條網線的輪廓,再將圖像的色域從RGB轉到HSV色域內,對網線輪廓內的像素點的HSV分量進行區分統計最終識別出以下順序:白橙、橙、白綠、藍、白藍、綠、白褐、褐
三、整體設計
3.1 平臺搭建
由于八條線內有四條是白色摻雜一點其他顏色,固采用黑色背景,便于二值化處理,且由于采用了HSV色域,對光照敏感,固制作了了一個暗盒,控制光照的因素,并加裝一條led燈帶為暗盒提供光源。由于盒中視野會有盒壁,影響識別,固通過選擇視野中央的一塊矩形區域作為ROI區用于視覺識別(這個ROI區是寫死的圖像中央的區域)
平臺外觀與暗盒內部:
暗盒內的視野:
class MyCamera:def __init__(self, cameraNum):self.cap = cv.VideoCapture(cameraNum)self.height = 360self.weight = 640def read(self):iret, frame = self.cap.read()src = frame[60:420, :]if (iret != True):raise Exception("camera fail")return srcdef release(self):self.cap.release()cv.destroyAllWindows()3.2 算法整體框圖
總結
以上是生活随笔為你收集整理的基于opencv python 的网线线序识别(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux之修改静态ip,修改网卡名称为
- 下一篇: websocket python爬虫_p