|
|
|
@@ -250,6 +250,26 @@ static bool ConvertRGBAToBGR(const unsigned char *data, LDataType data_type, int |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
static bool ConvertRGBAToRGB(const unsigned char *data, LDataType data_type, int w, int h, LiteMat &mat) { |
|
|
|
if (data_type == LDataType::UINT8) { |
|
|
|
mat.Init(w, h, 3, LDataType::UINT8); |
|
|
|
unsigned char *ptr = mat; |
|
|
|
const unsigned char *data_ptr = data; |
|
|
|
for (int y = 0; y < h; y++) { |
|
|
|
for (int x = 0; x < w; x++) { |
|
|
|
ptr[0] = data_ptr[0]; |
|
|
|
ptr[1] = data_ptr[1]; |
|
|
|
ptr[2] = data_ptr[2]; |
|
|
|
ptr += 3; |
|
|
|
data_ptr += 4; |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
return false; |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
static bool ConvertRGBAToGRAY(const unsigned char *data, LDataType data_type, int w, int h, LiteMat &mat) { |
|
|
|
if (data_type == LDataType::UINT8) { |
|
|
|
mat.Init(w, h, 1, LDataType::UINT8); |
|
|
|
@@ -279,6 +299,8 @@ bool InitFromPixel(const unsigned char *data, LPixelType pixel_type, LDataType d |
|
|
|
return ConvertRGBAToBGR(data, data_type, w, h, m); |
|
|
|
} else if (pixel_type == LPixelType::RGBA2GRAY) { |
|
|
|
return ConvertRGBAToGRAY(data, data_type, w, h, m); |
|
|
|
} else if (pixel_type == LPixelType::RGBA2RGB) { |
|
|
|
return ConvertRGBAToRGB(data, data_type, w, h, m); |
|
|
|
} else { |
|
|
|
return false; |
|
|
|
} |
|
|
|
|