相关疑难解决方法(0)

OpenCV/Tesseract:如何用GDI + Bitmap替换libpng,libtiff等(通过GDI +加载到cv :: Mat)

我正在开发一个使用OpenCV和Tesseract的项目.这两个库都基于libpng,libtiff,libjpeg等来加载/保存图像文件.

但Tesseract(基于Leptonica)使用这些具有不兼容参数的库的旧版本.所以我不能为两者使用相同的图像库:OpenCV和Tesseract.

因此,如果我动态编译我的项目,我将不得不用我的项目提供一堆DLL.如果我静态编译,我会产生一个巨大的输出文件,炸成几兆字节.

这是UGLY.我不希望这样.

另一个问题是几乎所有开源项目 - 主要是在Linux/MAC世界中开发 - 如果在Windows上编译,则不支持Unicode.在内部都传递std::stringfopen().在Linux上,使用UTF8编码路径的解决方法可能会起作用,但在Windows上它不会.因此,日语用户无法在具有日语名称的文件夹中打开图像文件.虽然微软已经在1990年代早期做出了巨大努力,将整个Windows NT操作系统转换为100%兼容Unicode,但20年后的大多数开源项目(如libpng)仍然不支持传递路径std::wstring.

重要信息:OpenCV命令imread(),imwrite()如果要创建支持日语或中文的国际项目,则不得在Windows上使用!

所以,我想要的是:从我的项目中完全消除libtiff,libpng,libjpeg等:

在OpenCV评论中:

// #define HAVE_JASPER
// #define HAVE_JPEG
// #define HAVE_PNG
// #define HAVE_TIFF
etc..
Run Code Online (Sandbox Code Playgroud)

在Tesseract/Leptonica:

#define  HAVE_LIBJPEG   0
#define  HAVE_LIBTIFF   0
#define  HAVE_LIBPNG    0
#define  HAVE_LIBZ      0
#define  HAVE_LIBGIF    0
#define  HAVE_LIBUNGIF  0
etc..
Run Code Online (Sandbox Code Playgroud)

..并使用GDI +代替,它是Windows操作系统的一部分,支持加载/保存BMP,TIF,PNG,JPG,GIF.此外,GDI +与Unicode兼容.

我知道这可以通过几行代码来完成,但OpenCV项目中缺少这样一个有用的类.我的第一次试验表明,这并不像第一次看起来那样微不足道,因为必须进行大量的转换.

是否有为此目的而制作的课程?

c++ unicode opencv gdi+ libpng

2
推荐指数
1
解决办法
3216
查看次数

标签 统计

c++ ×1

gdi+ ×1

libpng ×1

opencv ×1

unicode ×1