Threshold 對單通道陣列應用的固定閾值操作

2021-07-11 12:54:59 字數 1582 閱讀 4586

1.cv_exports_w double threshold( inputarray src, outputarray dst,  double thresh, double maxval, int type )

//src: 原始陣列(單通道,8-bit, 32-bit 浮點數)

//dst: 輸出陣列(與輸入陣列保持一致)

//thresh: 閾值(門檻值)

//maxval (cv_thresh_binary 和 cv_thresh_binary_inv 的最大值)

//type : 閾值型別(這裡只介紹兩種)

threshold_type=cv_thresh_binary:如果 src(x,y)>threshold ,dst(x,y) = maxvalue; 否則,dst(x,y)=0;

threshold_type=cv_thresh_binary_inv:如果 src(x,y)>threshold,dst(x,y) = 0; 否則,dst(x,y) = maxvalue.

2.hsv顏色分量範圍

在執行程式時找物件的顏色對應範圍可以參考這個**,如果想要精確,也可以用ps等

檢測影象

*/#include#includeusing namespace cv;

using namespace std;

void detecthscolor(const mat& img, double minhue, double maxhue, double minsat, double maxsat, mat& mask);

int main()

mat mask;

detecthscolor(img, 35, 28, 178, 219, mask); //這裡的色調飽和度範圍要對應設定

mat result(img.size(), cv_8uc3, scalar(0,0,0));

img.copyto(result,mask);

imshow("show_result", result);

double time = ((double)gettickcount() - t) / gettickfrequency();

cout << "time = " << time << endl;

waitkey(0);

destroyallwindows;

return 0;

}void detecthscolor(const mat & img, double minhue, double maxhue, double minsat, double maxsat, mat & mask) //h是色調區間,s是飽和度區間

執行結果:

這裡由於背景和小狗的毛髮顏色交叉太大,就這樣了,以後處理好的效果

單通道和三通道學習理解單通道

單通道 此通道上值為0 255。255為白色,0是黑色 只能表示灰度,不能表示彩色。三通道,在bgr 255,255,255為白色,0,0,0是黑色 可以表示彩色,灰度也是彩色的一種。cv imread函式。screen是一張彩色圖 cv mat mat cv imread root desktop...

單通道和多通道卷積

卷積之後的通道數只是取決於卷積核的數目,和卷積核的channel無關,卷積核的channel是和輸入的channel保持一致的。對於單通道影象,若利用10個卷積核進行卷積計算,可以得到10個特徵圖 若輸入為多通道影象,則輸出特徵圖的個數依然是卷積核的個數 10個 1.單通道多個卷積核卷積計算 乙個卷...

對通道的理解

單通道圖 俗稱灰度圖,每個畫素點只能有有乙個值表示顏色,它的畫素值在0到255之間,0是 黑色,255是白色,中間值是一些不同等級的灰色。也有3通道的灰度圖,3通道灰 度圖只有乙個通道有值,其他兩個通道的值都是零 三通道圖 每個畫素點都有3個值表示 所以就是3通道。也有4通道的圖。例如rgb即為三通...