0
A
回答
1
這裏是一個簡單的RGB到HSV轉換器的僞代碼。它會給UNDEFINED
一個h如果顏色是灰色的陰影,否則H爲6介於0和
x = min(R, G, B);
V = max(R, G, B);
if (V == x) {
H = UNDEFINED
S = 0
}
else {
if(R == x) {
f = G - B;
i = 3;
} else if(G == x) {
f = B - R;
i = 5;
} else {
f = R - G;
i = 1;
}
H = i - f /(V - x);
S = (V - x)/V;
}
現在,您可以將您的所有像素和斌它們來構建你的HSV直方圖,或者你可以將RGB直方圖的每個bin轉換爲HSV bin。
2
冷杉使用CV :: cvtColor將RGB轉換爲HSV 然後用CV :: calcHist計算直方圖
0
您可以使用 「JavaCV」 庫直接從Java訪問OpenCV函數:
http://code.google.com/p/javacv/
然後你可以使用我的代碼爲RGB到HSV比的OpenCV的cvConvert功能較好: http://www.shervinemami.co.cc/colorConversion.html
乾杯,
Shervin Emami。
0
這裏是做這樣的代碼:
// Assume SourceImage is a Bitmap ARGB_8888
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap refImage = BitmapFactory.decodeFile(mBaseDir + "some_reference.jpg", options);
Mat hsvRef = new Mat();
Mat hsvSource = new Mat();
Mat srcRef = new Mat(refImage.getHeight(), refImage.getWidth(), CvType.CV_8U, new Scalar(4));
Utils.bitmapToMat(refImage, srcRef);
Mat srcSource = new Mat(SourceImage.getHeight(), SourceImage.getWidth(), CvType.CV_8U, new Scalar(4));
Utils.bitmapToMat(SourceImage, srcSource);
/// Convert to HSV
Imgproc.cvtColor(srcRef, hsvRef, Imgproc.COLOR_BGR2HSV);
Imgproc.cvtColor(srcSource, hsvSource, Imgproc.COLOR_BGR2HSV);
/// Using 50 bins for hue and 60 for saturation
int hBins = 50;
int sBins = 60;
MatOfInt histSize = new MatOfInt(hBins, sBins);
// hue varies from 0 to 179, saturation from 0 to 255
MatOfFloat ranges = new MatOfFloat(0f,180f,0f,256f);
// we compute the histogram from the 0-th and 1-st channels
MatOfInt channels = new MatOfInt(0, 1);
Mat histRef = new Mat();
Mat histSource = new Mat();
ArrayList<Mat> histImages=new ArrayList<Mat>();
histImages.add(hsvRef);
Imgproc.calcHist(histImages,
channels,
new Mat(),
histRef,
histSize,
ranges,
false);
Core.normalize(histRef,
histRef,
0,
1,
Core.NORM_MINMAX,
-1,
new Mat());
histImages=new ArrayList<Mat>();
histImages.add(hsvSource);
Imgproc.calcHist(histImages,
channels,
new Mat(),
histSource,
histSize,
ranges,
false);
Core.normalize(histSource,
histSource,
0,
1,
Core.NORM_MINMAX,
-1,
new Mat());
double resp1 = Imgproc.compareHist(histRef, histSource, 0);
double resp2 = Imgproc.compareHist(histRef, histSource, 1);
double resp3 = Imgproc.compareHist(histRef, histSource, 2);
double resp4 = Imgproc.compareHist(histRef, histSource, 3);
0
首先,你必須使用CV :: cvtColor爲RGB圖像轉換成HSV圖像,然後將圖像轉換爲HSV,您可以使用CV :: calcHist來計算HSV直方圖。
相關問題
- 1. 如何使用JavaCV創建HSV直方圖
- 2. 的Python/Pyside:創建圖像直方圖
- 3. EmguCV:創建圖像直方圖 - 錯誤
- 4. 從3個不同的直方圖創建圖像直方圖
- 5. 使用matlab /八度音程從rgb轉換爲hsv圖像回rgb
- 6. 創建RGB圖像從像素標籤
- 7. 使用張量流創建圖像的顏色直方圖
- 8. 從HSV直方圖獲取主色值
- 9. 如何繪製使用RGB像素值的直方圖?
- 10. 如何使用每個像素的RGB值創建圖像
- 11. 如何使用java創建RGB像素值的有效圖像
- 12. 從2D RGB陣列創建圖像
- 13. 從每個通道創建RGB圖像
- 14. 創建一個RGB複合SAR圖像
- 15. 從RGB數據創建圖像?
- 16. 基於內容的圖像檢索的直方圖比較。不同的顏色空間(RGB,HSV等)
- 17. 使用RGB值構建圖像
- 18. 試圖用ZedGraph創建直方圖
- 19. 使用緩衝圖像寫RGB圖像
- 20. 如何在python中繪製RGB圖像的3D直方圖
- 21. 如何顯示圖像的RGB值的直方圖?
- 22. 如何在Matlab中顯示RGB圖像的直方圖?
- 23. RGB彩色圖像直方圖使用OpenCV C++對比度拉伸
- 24. 從RGB到HSV的OpenCV圖像轉換閾值痛苦
- 25. 僅在RGB或HSV圖像中增加黃色飽和度(Matlab)
- 26. 在java中將RGB圖像轉換爲gray_scale HSV
- 27. 將圖像的顏色空間從RGB轉換爲HSV
- 28. 使用3通道使用opencv創建直方圖圖表
- 29. 如何創建直方圖
- 30. Python - 創建直方圖