線纜顏色順序檢測(續)

2021-08-30 11:01:08 字數 1472 閱讀 5728

接上篇,

原來的演算法使用hsv顏色空間,對一些顏色不能區分,而且經過後續測試,對光照的變化的魯棒性也沒有cielab顏色空間好。

cvtcolor(src_all, hsv, cv_bgr2lab);
float l[width] = ;

float a[width] = ;

float b[width] = ;

float ll[width] = ;

float aa[width] = ;

float bb[width] = ;

int pointcount[width] = ;

for (int i = 0; i < hsv.size().width; i++)

l[i] = h;

a[i] = s;

b[i] = v;

}

繪製的折線圖

然後進行分割

//需要對資料進行平滑

int filtersize = 5;

for (int i = filtersize; i < width- filtersize; i++)

ll[i] = suml / (filtersize * 2 + 1);

aa[i] = suma / (filtersize * 2 + 1);

bb[i] = sumb / (filtersize * 2 + 1);

}//用球包含空間附近的點

for (int i = 0; i < width; i++) }}

//pointcount找極小值

int position[30] = ;

int position_left[30] = ;

int position_right[30] = ;

int current_position_count = 0;

bool done_flag = 0;

for (int i = 1; i <= 35; i++)

}//如果和所有的都不符合,建立新的的position

if (!done_flag)}}}

處理後結果

黑色線是處理後指標,藍色點是指標的極小值。

效果比使用hsv顏色空間好很多,而且由於使用的新的演算法,考慮了線纜的空間約束,識別的穩定性大幅提高。

顏色識別仍使用歐式距離的方式,但是考慮到光照的不均勻和變化,可以把l通道適當壓縮,把明暗不同的相同顏色識別為一種。

python opencv檢測目標顏色

coding utf 8 author kingking version 1.0 date 14 07 2017 import cv2 import numpy as np import time if name main img cv2.imread example.png 讀入一幅影象 kern...

RGB顏色空間膚色檢測

基於rgb顏色空間的簡單閾值膚色識別 在human skin color clustering for face detection一文中提出如下簡單的判別算式 r 95 and g 40 and b 20 and r g and r b and max r,g,b min r,g,b 15 and...

利用OpenCV進行顏色檢測

rgb通道與hsv通道在顏色檢測中的區別 hsv是相對rgb的另一種顏色表示方式,它相對rgb而言,是一種比較直觀的顏色模型。其中顏色的引數分別是 色調 h 飽和度 s 明度 v 色調h 用角度度量,取值範圍為0 360 從紅色開始按逆時針方向計算,紅色為0 綠色為120 藍色為240 它們的補色是...