#pragma once #include #include typedef unsigned char uchar; namespace MN_VisionImage { enum class ME_ImageType { E_GRAY = 0, E_RGB, E_RGBA }; struct MS_ImageParam { //无参构造 MS_ImageParam() : m_width(-1), m_height(-1), m_channels(0), mImgType(MN_VisionImage::ME_ImageType::E_RGB) {} //有参构造函数 MS_ImageParam(uchar* _buffer, int _nW, int _nH, const ME_ImageType& _imgType) { int _nChannels = 0; if (_imgType == ME_ImageType::E_GRAY) { _nChannels = 1; } else if (_imgType == ME_ImageType::E_RGBA) { _nChannels = 4; } else { _nChannels = 3; } m_width = _nW; m_height = _nH; m_channels = _nChannels; mImgType = _imgType; int iSize = _nW * _nH * _nChannels; //图像的像素数 m_data = std::shared_ptr(new uchar[iSize], [](uchar* p) { if (p != nullptr) { delete[] p; p = nullptr; } }); memcpy(m_data.get(), _buffer, iSize); } std::shared_ptr m_data; // 图像数据 int m_width; // 图像宽度 int m_height; // 图像高度 int m_channels; // 图像通道数 ME_ImageType mImgType; // 图像类型 }; }