0

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

0 Answers0