PreVerify/lib/XImageCodecs/include/XImageCodecs.h

67 lines
1.5 KiB
C
Raw Normal View History

2024-09-09 19:18:28 +08:00
#pragma once
#include <memory>
#include <opencv2/core.hpp>
template class __declspec(dllexport) std::shared_ptr<char>; // 消除警告C2451
// 图像编解码结果数据结构
struct XImageBytes {
std::shared_ptr<char> ptr;
size_t size;
};
// 图像编解码类型枚举
enum class XImageType {
QOI = 'q',
PNG = 'p',
BMP = 'b',
};
// 图像编解码类
class __declspec(dllexport) XImageCodecs {
public:
enum class ErrorCode {
OK = 0,
FileOpenError = -1,
FileReadError = -2,
FileWriteError = -3,
FileFormatError = -4,
EncodeError = -5,
DecodeError = -6,
SaveError = -7,
LoadError = -8,
TypeExtMismatch = -9,
};
struct Params {
XImageType imageType = XImageType::QOI; // 编码器类型
int threadNum = -1; // 线程数 小于等于0表示自动确定
};
XImageCodecs(Params params);
~XImageCodecs();
// 直接读写图片 -- 内部调用 编码解码 和 加载保存
ErrorCode read(const char* filename, cv::Mat& image);
ErrorCode write(const char* filename, const cv::Mat& image);
// 编码解码
ErrorCode encode(const cv::Mat& image, XImageBytes& bytes);
ErrorCode decode(cv::Mat& image, const XImageBytes& bytes);
// 加载和保存
ErrorCode load(const char* filename, XImageBytes& bytes);
ErrorCode save(const char* filename, const XImageBytes& bytes);
private:
Params params;
};