請問能解釋一下javacv中cvScalar(double d,double d1,double d2,double d3)方法的四個參數的含義嗎?javacv中cvScalar構造函數的四個參數是什麼意思?
如何在cvScalar中表示黑色?
請問能解釋一下javacv中cvScalar(double d,double d1,double d2,double d3)方法的四個參數的含義嗎?javacv中cvScalar構造函數的四個參數是什麼意思?
如何在cvScalar中表示黑色?
的cvScalar僅僅是1,2,3或4個浮點值的方便的容器。
數據在這些元組中的含義由cvScalar的用戶決定。
例如,它們可以用來容納,比如說,點在平面(2元組),矩形(4元組),RGB顏色(3元組), 三維世界中的點(三元組)等。cvScalar系統地實現爲4元組,其中未使用的值設置爲0。
回答有關RGB彩色的黑色的問題:
cvScalar cBlack = new cvScalar(0, 0, 0, 0);
// BEWARE: the params for the cvScalar constructor are not in RGB order
// it is: new cvScalar(blue, green, red, unused)
// note how the 4th scalar is unused.
備選地可以使用CV_RGB()便捷方法如:
CvScalar cBlack = CV_RGB(0, 0, 0);
// here the CV_RGB() arguments are in Red, Green, Blue order.
編輯:因爲上面的例子中是對於所有顏色分量具有相同值的顏色黑色,其未能證明存儲在CvScalar內的RGB分量的順序與常規順序Red,Green,Blue相反。
CV_RGB()
便利方法的參數採用常規的RGB順序,但cvScalar中的存儲爲藍色,綠色,紅色順序。
換句話說,CV_RGB的定義如下:
public static CvScalar CV_RGB(double r, double g, double b) {
return cvScalar(b, g, r, 0);
}
或者說還沒有,否則,cvScalar(0, 1, 130, 0)
相當於CV_RGB(130, 1, 0)
,即紅色,與綠色一分鐘聯繫。
除了CV_RGB(),使用cvScalars爲顏色值的目的時,也可以方便地使用cvScalar.Red()
,cvScalar.Blue()
,cvScalar.Green()
方法提取的各個部件,而不必擔心這些被存儲在哪裏。該類還包括每種常見顏色的幾個靜態實例:cvScalar.GRAY
,cvScalar.YELLOW
,cvScalar.BLUE
等
cvScalar是一個4雙打的通用數組。數據類型通常用於表示像素值,例如:
CvScalar blue = CV_RGB(64, 64, 255);
剩餘雙打在該採取少於4個值的構造函數設置爲0。
cvGet2D的是,在形式CvScalar
的讀取各個像素與cvGet2D()函數
CvScalar cvGet2D(常量CvArr *最簡單的方式將返回的像素值的另一個函數, int row,int col);
該函數有三個參數:一個指向數據容器(CVArr *)的指針和行列位置的數組索引。數據容器可以是IplImage結構。最上面一行像素是行= 0,最下面是行=高度-1。
的cvGet2D()函數返回一個C結構,CvScalar,定義爲
typedef結構CvScalar { 雙VAL [4]; } CvScalar;
每個通道的像素值都在val [i]中。對於灰度圖像,val [0]包含像素>亮度。其他三個值設置爲0.對於三通道BGR圖像,blue = val [0],> green = val [1]和red = val [2]。
http://www.cognotics.com/opencv/servo_2007_series/part_1/page_4.html
請問可以告訴我cvScalar(0,0,130,0)的CV_RGB()值是否相等。 – LkDev
@LkDev:參見編輯並添加註釋,明確強調RGB顏色以cvScalar內的BGR順序存儲。 – mjv