i have implemented a code using matlab, its about converting rgb color image to double hsv image(scale [0,1]), here, its the matlab code.
***************/ MATLAB CODE ************************
clc;
close all;
clear all;
img_orig=imread('test.bmp');
img=img_orig; %copy of original image
hsv=rgb2hsv(img);
h=hsv(:,:,1);
s=hsv(:,:,2);
[r c v]=find(h>0.5 | s<=0.5 | s>0.9);
numid=size(r,1);
for i=1:numid
img(r(i),c(i),:)=0;
end
figure,imshow(img);
*****************/ END MATLAB *****************************
Next, its my opencv code equivalent
************* opencv code ********************************
int main(){
Mat_<double> img;
Mat_<double> img_hsv;
img = imread("test.bmp", CV_64F);
cvtColor(img, img_hsv, CV_RGB2HSV);
img.convertTo(img_hsv, CV_64F);
for (int y = 0; y < img.rows; y++)
{
for (int x = 0; x < img.cols; x++)
{
Vec3b color = img_hsv.at<Vec3b>(Point(x, y));
if (color[0] > 90 | color[1] <=32 | color[1] > 230){
color[0] = 255;
color[1] = 255;
color[2] = 255;
}
img_hsv.at<Vec3b>(Point(x, y)) = color;
printf("%f\n", img_hsv.at<double>(x, y));
}
}
system("pause");
imshow("image", image);
imshow("image2", img_hsv);
waitKey(0);
return 0;
}
**************/end opencv***************************************
in my opencv code, i can't obtain the double image like matlab do and the result is very different. help please