CV | 矩形度的计算(python)
生活随笔
收集整理的這篇文章主要介紹了
CV | 矩形度的计算(python)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介
在做跟蹤匹配的時候,由于目標的形狀不能保持,有可能會存在上下兩幀目標圖像形狀不能一直保持矩形的情況,因此沒有利用形狀信息進行目標跟蹤。但是又不想浪費形狀信息,因此利用矩形度特征進行加權。
從網上查找沒有找到類似的程序,只看到了矩形度的概念。在此補充程序(python版)。
1.矩形度概念
矩形度體現物體對其外接矩形的充滿程度,反映一個物體與矩形相似程度的一個參數,是矩形擬合因子。其計算公式為:
R=S0/SMERR =S_0 / S_{MER}R=S0?/SMER?
其中,S0S_0S0? 是該物體的面積,而 SMERS_{MER}SMER? 是其最小外接矩形的面積。RRR 反映了一個物體對其的充滿程度。對于矩形物體RRR取得最大值1,對于圓形物體 RRR 取值為 ,對于纖細、彎曲的物體RRR取值變小。矩形擬合因子的值為0?10-10?1.
源自:
https://blog.csdn.net/mao_hui_fei/article/details/80395294
2. 程序
計算矩形度程序如下:
import cv2 import numpy as npdef Cal_Rectangle_degree(img_ori, hull):# 計算該坐標點組成的四邊形的面積im = np.zeros(img_ori.shape[:2], dtype="uint8") filling_image = np.array([hull[0][0],hull[1][0],hull[2][0],hull[3][0]], np.int32)polygon_mask = cv2.fillPoly(im, [filling_image], 255)measure_polygon = np.sum(np.greater(polygon_mask, 0))# 計算該坐標點組成的四邊形的外接矩形面積rect = cv2.minAreaRect(hull) # 得到最小外接矩形的(中心(x,y), (寬,高), 旋轉角度)box = cv2.boxPoints(rect) # 獲取最小外接矩形的4個頂點坐標(ps: cv2.boxPoints(rect) for OpenCV 3.x)box = np.int0(box)box = cv2.convexHull(box,clockwise=True)filling_image = np.array([box[0][0],box[1][0],box[2][0],box[3][0]], np.int32)rectangle_mask = cv2.fillPoly(im, [filling_image], 255)measure_rectangle = np.sum(np.greater(rectangle_mask, 0))# 計算矩形度Rectangle_degree = measure_polygon/measure_rectanglereturn Rectangle_degreeimg_ori = *** # 源圖像 hull = *** # hull為凸包頂點坐標:n*1*2(n為坐標點的個數)Rectangle_degree = Cal_Rectangle_degree(img_ori, hull) # 矩形度指標計算完矩形度后,將矩形度作為特征值,對預估和檢測的結果進行加權,得到最終的位置。
總結
以上是生活随笔為你收集整理的CV | 矩形度的计算(python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑android模拟器下载地址,仙域奇
- 下一篇: 51单片机ZFM60XSA光学指纹模块C