#include #include #include #include #include #include using namespace cv; using namespace std; struct DXFHeader { int32_t width; int32_t height; uint8_t bitDepth; uint8_t version; uint8_t flags; uint8_t reserved; }; class DXF { public: explicit DXF(const string& filepath) : _filepath(filepath), _width(0), _height(0), _bitDepth(0) { analyzeFile(); loadImageData(); } int getWidth() const { return _width; } int getHeight() const { return _height; } int getBitDepth() const { return _bitDepth; } bool hasDXFHeader() const { return true; } Mat to8bitBGR() const; Mat to10bitBGR() const; private: string _filepath; int _width; int _height; int _bitDepth; Mat _imageData; void analyzeFile(); bool readDXFHeader(ifstream& file); void analyzeDXFContent(ifstream& file); int detectBitDepth(const vector& sample); void loadImageData(); void unpackBits(const std::vector& rawData); void calculateDimensions(streamsize fileSize); void validateImageProperties(); static uint16_t extractBits(const std::vector& buffer, size_t bitPos, int bitDepth, uint16_t maxValue); }; /* Example usage int main() { try { DXF dxf("sample.dxf"); cout << "Image dimensions: " << dxf.getWidth() << "x" << dxf.getHeight() << endl; cout << "Original bit depth: " << dxf.getBitDepth() << endl; Mat bgr8bit = dxf.to8BitBGR(); Mat bgr10bit = dxf.to10BitBGR(); imwrite("output_8bit_bgr.png", bgr8bit); imwrite("output_10bit_bgr.png", bgr10bit); return 0; } catch (const exception& e) { cerr << "Error: " << e.what() << endl; return 1; } }*/