0

数学計算を使用して、ピクセルのr、g、b値をh、sおよびv値に変換しました。これらのh、s、およびv値を使用して画像を作成し、imshow( "HSV"、hsv_image)を使用してそれらを表示できるようにするにはどうすればよいですか。

答えがPythonを使用している方が良いでしょうが、C++であっても問題ありません。

4

2 に答える 2

0

RGB画像がある場合は、そのままにしてください

cvtColor(img_rgb,img_hsv,CV_RGB2HSV);

これは、あなたの望むことですか?

編集

for(int row=0;row<height;row++)
{
    for(int col=0;col<width;col++)
    {
        Vec3b data = image_rgb.at<Vec3b>(row,col);

        Vec3b data_hsv;
        data_hsv[0] = // process red channel of pixel with data[0]
        data_hsv[1] = // process green channel of pixel with data[1]
        data_hsv[2] = // process blue channel of pixel with data[2]


        image_hsv.at<Vec3b>(row,col)[0] = data_hsv[0];
        image_hsv.at<Vec3b>(row,col)[1] = data_hsv[1];
        image_hsv.at<Vec3b>(row,col)[2] = data_hsv[2];
    }
}
于 2013-01-18T08:56:50.920 に答える
0

必要なのはmerge()です。C++ の場合:

// Assuming you have the H, S, and V images
std::vector<cv::Mat> channels;
channels.push_back(h);
channels.push_back(s);
channels.push_back(v);

cv::Mat hsv;
cv::merge(channels, hsv);

// Now you can display it
cv::imshow("HSV", hsv);
于 2013-01-18T12:35:14.303 に答える