3

Bgr 値 (1 ピクセル) を Hsv 値に変換したいと思います。EmguCV で (変換コードを最初から書かずに) どうすればそれを行うことができますか?

画像全体の色空間を変換するのではなく、1 ピクセルのみを変換することに関心があるため、CvInvoke.cvCvtColor()うまくいかないことに注意してください。

4

2 に答える 2

5

EmguCV 内でこれを行いたい場合は、画像を Image に読み込み、ピクセルの値を取得して Hsv 構造体に貼り付けます。

例えば:

static void Main(string[] args)
{
    bool haveOpenCL = CvInvoke.HaveOpenCL;

    bool haveOpenClGpu = CvInvoke.HaveOpenCLCompatibleGpuDevice;

    CvInvoke.UseOpenCL = true;

    Emgu.CV.Image<Bgr, Byte> lenaBgr = new Image<Bgr, Byte>(@"D:\OpenCV\opencv-3.2.0\samples\data\Lena.jpg");

    CvInvoke.Imshow("Lena BSG", lenaBgr);

    Bgr color = lenaBgr[100, 100];

    Console.WriteLine("Bgr: {0}", color.ToString());

    Emgu.CV.Image<Hsv, Byte> lenaHsv = new Image<Hsv, Byte>(@"D:\OpenCV\opencv-3.2.0\samples\data\Lena.jpg");

    CvInvoke.Imshow("Lena HSV", lenaHsv);

    Hsv colorHsv = lenaHsv[100, 100];

    Console.WriteLine("HSV: {0}", colorHsv.ToString());

    CvInvoke.WaitKey(0);
}

}

結果: Bgr: [87,74,182] HSV: [176,151,182]

 Lena BGR                    Lena HSV

レナBGR レナHSV

于 2017-08-19T17:03:26.727 に答える
3

さて、私はすでに.NETフレームワークの助けを借りて方法を見つけました

与えられたBgr pixel;

1-色を次のように変換するSystem.Drawing.Color:

System.Drawing.Color intermediate = System.Drawing.Color.FromArgb((int)pixel.Red, (int)pixel.Green, (int)pixel.Blue);

2- 中間体から Hsv を構築します。

Hsv hsvPixel = new Hsv(intermediate.GetHue(), intermediate.GetSaturation(), intermediate.GetBrightness());

乾杯。

于 2012-11-20T10:18:31.997 に答える