转换Opencv hsv等效于Matlab Hsv

时间:2015-10-04 11:04:24

标签: java android opencv

我必须使用opencv开发android代码,代码相当于MATLAB。 因为我必须阅读图像并将其转换为HSV,我使用以下方法完成了这项工作:

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

当我迭代在Hue的0-255范围内返回的像素的每个像素值时,在Matlab中它返回的范围为0-1,我不知道如何为它编写等效代码。 我是初学者。我对图像处理知之甚少。

2 个答案:

答案 0 :(得分:2)

255是1.0,128是0.5,依此类推。只需将n / 255除以得到Matlab HSV值

答案 1 :(得分:2)

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

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

因此,转换为HSV后

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

您需要以不同方式缩放H和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);