2015-10-04 104 views
3

我必须使用opencv开发android代码,相当于MATLAB的代码。 在此我要读的图像,并将其转换为HSV,我已经用这个做:转换Opencv hsv相当于Matlab Hsv

Imgproc.cvtColor(temp, hsv , Imgproc.COLOR_RGB2HSV); 

,当我遍历中的色调,其中0-255范围返回的像素的每个像素值在Matlab中它返回的范围是0-1,我不知道如何为它写一个等效的代码。 我是一名初学者,我不太了解图像处理。

回答

2

RGB图像的值范围很明显在[0,255]。对于HSV图像这取决于图像类型(见OpenCV doc):

  • 8位图像:在[0,180],S,V在[0,255]
  • 32位图像ħ :H [0,360],S,V在[0,1]

所以,在转换到HSV

Imgproc.cvtColor(temp, hsv, Imgproc.COLOR_RGB2HSV); 

之后你需要缩放h的nd S,V值不同。您可以使用splitmerge获取不同的通道矩阵,并应用正确的缩放比例。

请注意,OpenCV将RGB图像存储为BGR,因此您可能需要COLOR_BGR2HSV


您可以分割和合并,如:

List<Mat> planes = new ArrayList<Mat>(3); 
Core.split(hsv, planes); 
// Scale each single plane 
Core.merge(planes , hsv); 
+0

你能帮助我如何分割和合并渠道,请分享一个参考链接,如果你有任何。非常感谢。 – AnonymousDev

+0

@Varun更新了答案。我不完全确定,因为我不用Java编程,但应该可以正常工作。请告诉我。 – Miki

+0

非常感谢这个作品.. !!! – AnonymousDev

2

255是1.0,128是0.5等等。只需除以n/255得到Matlab HSV值

+0

感谢名单@smirnov,这帮助了我。 – AnonymousDev