Development/C#

OpenCvSharp Map to Halcon HObject

우봉수 2023. 5. 3. 19:42
using HalconDotNet;
using OpenCvSharp;
using OpenCvSharp.Extensions;

static HObject MatToHObject(Mat mat)
        {
            HObject hObject;
            int width = mat.Width;
            int height = mat.Height;
            int channels = mat.Channels();

            if (channels == 1)
            {
                HOperatorSet.GenImage1(out hObject, "byte", width, height, mat.Data);
            }
            else if (channels == 3)
            {
                Mat[] splitChannels = mat.Split();
                HObject hRed, hGreen, hBlue;
                HOperatorSet.GenImage1(out hRed, "byte", width, height, splitChannels[2].Data);
                HOperatorSet.GenImage1(out hGreen, "byte", width, height, splitChannels[1].Data);
                HOperatorSet.GenImage1(out hBlue, "byte", width, height, splitChannels[0].Data);
                HOperatorSet.Compose3(hRed, hGreen, hBlue, out hObject);
            }
            else
            {
                throw new NotSupportedException("Unsupported number of channels in Mat");
            }

            return hObject;
        }