摘要:前兩天跟一個朋友吃飯,聊到他在做的圖像識別測量雪深,對此深感興趣,找時間就把了解一下。識別標桿上紅色刻度的數量。讀取圖片首先,將紅色部分提取,則需要將原圖進行顏色空間轉換,轉換類型使用方法。是一種將色彩模型中的點在圓柱坐標系中的表示法。
前兩天跟一個朋友吃飯,聊到他在做的圖像識別測量雪深,對此深感興趣,找時間就把 OpenCV 了解一下。
識別標桿上紅色刻度的數量。
研究了一下午,話不多說,直接開始演示吧。
import cv2 # 讀取圖片 img = cv2.imread("./snow.jpeg")
首先,將紅色部分提取,則需要將原圖進行顏色空間轉換,轉換類型使用 BGR2HSV 方法。
HSV 是一種將RGB色彩模型中的點在圓柱坐標系中的表示法。H 為色相,是色彩的基本屬性,S 為飽和度,V 為明度。
從網上查了下,紅色區域的 H 值在 [0,10] 和 [170,180],使用 inRange 方法將紅色范圍內外的顏色區分開
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) mask1 = cv2.inRange(hsv_img, np.array([0, 70, 50]), np.array([10, 255, 255])) mask2 = cv2.inRange(hsv_img, np.array([170, 70, 50]), np.array([180, 255, 255])) mask = mask1 | mask2
mask 顯示效果如下
此時,圖像上除了刻度外,還有些地方呈現白色,需要將這些雜質過濾掉,同時也要將垂直部分的白色去掉,需要經過先膨脹再腐蝕再膨脹三個過程。為什么要這樣呢?因為這樣才能過濾掉雜質以及垂直方向的紅線部分,以致達到效果,具體看下面的代碼和圖。
dilated = cv2.dilate(mask, cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)), iterations=2) # 創建一個水平的結構元素,進行腐蝕和膨脹 hline = cv2.getStructuringElement(cv2.MORPH_RECT, (int(dilated.shape[1] / 32), 1), (-1, -1)) # 腐蝕掉多余的白色部分 temp = cv2.erode(dilated, hline) # 使白色部分膨脹 dst_img = cv2.dilate(temp, hline)
效果如下:
得到提取后的部分,發現還有一個問題,左右刻度有些連結在了一起,此時需要分割。分割的方式是先計算一下寬度,得出中點寬度值,在此原圖對應的中點寬度畫一條黑線(不過效率有點低啊
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43624.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:納入深度學習模型來進一步提升準確率只是時間問題,事實上,這個時間已經到來。最新版本支持基于深度學習的,準確率顯著提高。該函數使用基于深度學習的文本檢測器來檢測不是識別圖像中的文本區域。高效使用概率最高的文本區域,刪除其他重疊區域。 By Adrian Rosebrock on September 17, 2018 in Deep Learning, Optical Character ...
摘要:行代碼的人臉識別看了行的人臉識別一文后,簡單嘗試了一下,發現識別準確度不夠。膜拜完大神,直接開干首先,安裝以及相關依賴工具代碼略作改動執行之后效果是這樣的完美識別結論如果要做人臉識別的話,建議選擇,而不要選擇。 7行代碼(OpenCV)的人臉識別 看了《7行Python的人臉識別》一文后,簡單嘗試了一下,發現識別準確度不夠。原始圖像如下: showImg(https://segment...
閱讀 1618·2021-11-22 13:53
閱讀 2848·2021-11-15 18:10
閱讀 2755·2021-09-23 11:21
閱讀 2491·2019-08-30 15:55
閱讀 475·2019-08-30 13:02
閱讀 752·2019-08-29 17:22
閱讀 1659·2019-08-29 13:56
閱讀 3455·2019-08-29 11:31