转换Opencv hsv等效于Matlab Hsv

我必须使用opencv开发android代码,代码相当于MATLAB。 在那里我必须阅读图像并将其转换为HSV,我使用以下方法完成此操作:

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

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

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

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

所以,在你转换为HSV之后

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

您需要以不同方式缩放H和S,V值。 您可以使用拆分和合并来获取不同的通道矩阵,并应用正确的缩放。

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


您可以拆分和合并:

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

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