编译支持JPEG2000压缩格式的GDAL(ECW库、OpenJPEG)
该文是在我另一篇博客“gdal、geos的 windows编译 openCL加速”基础上进行进一步扩展的,那篇博客记录的是gdal2.2.0的整个编译过程,由于那篇博客的文末记录了一个gdal2.2.0测试OpenCL加速纠正的已知内存泄漏Bug,所以该博客直接使用gdal-2.4.4的基础上进行编译。
根据李民录大哥的GDAL指南提示如下
仔细研究了三种方法,ECW库、Kakadu、OpenJPEG
Kakadu库win10编译有异常,而且其源码比较难找,所以没有测试。参考:kakadu——JPEG2000图像压缩软件的安装和使用
现在测试一下正常编译的gdal(按照另一篇博客方法进行编译,没有ECW库)是否支持*.jp2影像格式,在gdal的bin目录下找到gdalinfo.exe,然后使用下面命令参数进行测试
D:\VariousLib\GDAL\Src\GDAL244Build\bin\gdalinfo.exe -checksum -nomd -norat C:\temp\ShuiFa\datas\GF-6_MS_MYC_202210190316_202210190323_sci_13.jp2
测试结果:
提示错误,gdal不支持的影像格式
好了,现在下面来解决这个问题。上面说过该博客直接使用gdal-2.4.4的基础上进行编译,所以相应下载资源文件如下
编译需要的文件:
1、gdal-2.4.4源码及geos-3.5.2源码下载
目录
- 六、设置ECW库(接上篇文章目录结构)
- 为啥GDAL需要增加ECW?
- ECW库文件介绍
- 步骤1、修改nmake.opt文件
- 步骤2、编译gdal
- 步骤3、测试是否支持*.jp2影像格式
- 步骤4、汇总更新gdal库文件
- 使用影像进行纠正测试
- 七、设置OpenJPEG库
- 步骤1、下载OpenJPEG库
- 步骤2、修改nmake.opt文件
- 步骤3、编译gdal
- 步骤4,测试
六、设置ECW库(接上篇文章目录结构)
为啥GDAL需要增加ECW?
ECW库主要是可以解析JPG2000格式的影像,由于工作需要,我们的程序需要支持*.jp2格式,该格式影像在默认编译gdal的时候是不支持的,需要自己下载ECW库,一起编译即可。
ECW库文件下载:
ECW动态库(编译好的dll,可附加GDAL编译)
如果不想自己动手,要本博客编译出来现成的东西,可以直接下载
GDAL库2.4.4版本(内置其他库包括支持OpenCL纠正+geos352+ECW)
这次我的gdal输出目录设置的是“D:\VariousLib\GDAL\Src\GDAL244Build”文件夹,后期更新汇总的时候需要用到
ECW库文件介绍
由于设置ECW库前,需要把源码先编译成动态库,所以直接在网上找到了动态库,然后直接进行GDAL的ECW库编译,ECW编译好的库[下载地址]。(https://download.csdn.net/download/weixin_42727069/86947197)
计划编译64位系统,所以重点关注64位系统的需要文件在不在。
根目录结构如下:
Dll文件夹下64位文件夹
步骤1、修改nmake.opt文件
nmake.opt文件在gdal-2.4.4文件夹,打开后查找“ECWDIR”,该字符串大概位置会出现三次,一个是4.1版本的,一个是5.0版本的,一个是3.3版本的,最后选择了5.0版本的代码进行更改。
最后选择了5.0版本的进行更改,知道为啥吗?
在确定用啥代码进行更改的时候我仔细看了一下我下载的库文件(这就是为啥我要把ECW库里面的文件截图展示出来),在lib/x64文件夹下是有NCSEcw.lib文件,正好与5.0版本吻合,所以就选用5.0版本的
取消注释更改的时候注意路径和路径下面对应的文件都要仔细检查一下,否则会出现各种异常
# Uncomment the following and update to enable ECW read support with the 5.0 SDK
ECWDIR = "D:\VariousLib\GDAL\Src\ecw"
ECWFLAGS = -DECWSDK_VERSION=50 \-I$(ECWDIR)\include \-I$(ECWDIR)\include/NCSECW/api -I$(ECWDIR)\include/NCSECW/jp2 \-I$(ECWDIR)\include/NCSECW/ecw
ECWLIB = $(ECWDIR)\lib\x64\NCSEcw.lib
更改后的截图
步骤2、编译gdal
参考上一篇博客的gdal方法,细节就不记录了。
1、启动VS2015的 x64 本机工具命令,在该命令窗口上进行编译;
2、把目录切换到gdal安装包根目录;
3、按顺序执行下面命令
nmake -f makefile.vc MSVC_VER=1900 WIN64=1;//编译nmake -f makefile.vc MSVC_VER=1900 WIN64=1 install;// 生成bin、data、html文件夹nmake -f makefile.vc MSVC_VER=1900 WIN64=1 devinstall; //devinstall生成lib和include(其实)
一般执行第一条编译语句容易出错,如果没有错误,下面两条代码很快可以执行完。
最后一条语句执行成功后界面如下
步骤3、测试是否支持*.jp2影像格式
再次执行检查命令
D:\VariousLib\GDAL\Src\GDAL244Build\bin\gdalinfo.exe -checksum -nomd -norat C:\temp\ShuiFa\datas\GF-6_MS_MYC_202210190316_202210190323_sci_13.jp2
会提示缺少NCSEcw.dll弹框,这时候只用把ecw文件夹下的dll/x64文件夹下的NCSEcw.dll、NCSEcwd.dll拷贝到gdalinfo.exe同级目录即可,运行结果如下图
现在这个版本的gdal已经支持jp2影像。
步骤4、汇总更新gdal库文件
1、ecw/dll/x64下面所有*.dll和*.exe复制到“D:\VariousLib\GDAL\Src\GDAL244Build\bin”目录
2、ecw/include下面所有文件复制到“D:\VariousLib\GDAL\Src\GDAL244Build\include”目录
3、ecw/lib/x64下面所有lib复制到“D:\VariousLib\GDAL\Src\GDAL244Build\lib”目录
如果编译了geos则也要把geos相关文件复制汇总,明细:
1、geos-3.5.2\src文件夹下所有的*.dll复制到“D:\VariousLib\GDAL\Src\GDAL244Build\bin”目录
2、geos-3.5.2\include文件夹下所有文件复制到“D:\VariousLib\GDAL\Src\GDAL244Build\include”目录
3、geos-3.5.2\src文件夹下所有的*.lib复制到“D:\VariousLib\GDAL\Src\GDAL244Build\lib”目录
截图如下
bin目录
include目录
lib目录
All done!特此记录!
辉 2022.11.10 初版编辑
使用影像进行纠正测试
Jp2影像,纠正输出1.46G影像,耗时:139秒
Tiff影像,纠正输出1.48G影像,耗时:16秒
内存泄漏严重:
辉 2022.11.11 再版
七、设置OpenJPEG库
由于测试使用ECW库编译的GDAL在读取jp2影像速度较慢,而且还存在严重内存泄漏问题,故又尝试使用该库。
参考链接:
OpenJPEG 2.4.0的图示使用
OpenJPEG的详细使用
步骤1、下载OpenJPEG库
OpenJPEG各种版本的下载
打开链接,点击下载下面红框安装包。
或者csdn上面下载我编译好现成的库:
编译好的gdal244库(带openjpeg)和单独openjpeg-v2.4.0-windows-x64库
步骤2、修改nmake.opt文件
nmake.opt文件在gdal-2.4.4文件夹,打开后查找“OpenJpeg”,找到如下位置。
根据下载的Openjpeg库进行更改include目录绝对路径和lib文件绝对路径,更改后如下
步骤3、编译gdal
由于明知ECW库不好用,这里就可以把ECW库相关的使用#给注释掉,如果以前编译过ECW库这么做后期编译会报错,最好把源码解压后复制gdal-2.4.4文件夹nmake.opt文件和alg文件夹下的makefile.vc文件,进行替换,从头编译即可
参考上一篇博客的gdal方法,细节就不记录了。
1、启动VS2015的 x64 本机工具命令,在该命令窗口上进行编译;
2、把目录切换到gdal安装包根目录;
3、按顺序执行下面命令
nmake -f makefile.vc MSVC_VER=1900 WIN64=1;//编译nmake -f makefile.vc MSVC_VER=1900 WIN64=1 install;// 生成bin、data、html文件夹nmake -f makefile.vc MSVC_VER=1900 WIN64=1 devinstall; //devinstall生成lib和include(其实)
最后一条语句执行成功的界面如下
步骤4,测试
使用OpenJPEG来解析Jp2影像,纠正输出1.46G影像,耗时:40秒,通过观察内存占用情况,没有过多的内存泄漏。该库效果比ECW库效率更高
如果以前GDAL有的话只用更新gdal204.dll动态库到源程序目录即可,不必重新编译所有代码。
辉 2022.11.11 再版
编译支持JPEG2000压缩格式的GDAL(ECW库、OpenJPEG)相关推荐
- Java批量高效压缩支持加解密支持所有压缩格式(Zip/7z/rar)
前言:有时候需要对很多文件进行压缩,几个还好如果有100个呢对吧,为什么不借助咱们强大的java呢,所以我就写了一个可以批量压缩,支持所有压缩格式的工具类当然也支持加密和解密,下面就是工具类的代码 废 ...
- cdh编译安装支持各种压缩格式
在安装CDH版本的hadoop的时候, 我们下载下来的CDH的hadoop安装包中, 并没有native包,不支持各个任务阶段的压缩功能,但在生产任务中是必须要支持压缩功能的,所以要对CDH进行编译以 ...
- hadoop配置支持LZO压缩格式
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 简介 安装lzo lzo并不是linux系统原生支持,所以需要下载安装软件包.这里至少需要安装3个软件包:lzo ...
- 哎哟我去!betterzip居然支持这么多压缩格式!
Mac解压软件 BetterZip 是一款功能强大的Mac压缩工具,不仅有着强大的数据密码保护功能,让我们的压缩数据更加安全,还支持着多种压缩格式,不管是主流的还是其他的,都可以试用BetterZip ...
- unity 纹理压缩格式‘_纹理优化:让你的纹理也“瘦”下来
在上一期<纹理优化:不仅仅是一张图片那么简单>中,我们针对纹理相关的优化,挑选了部分知识点分析.无论是大家在开发时的疏忽,还是对相关知识点的理解不足,这些问题的积累最终都会反映到项目的性能 ...
- HDFS的文件压缩格式
Hadoop默认支持Gzip和BZip2的解压缩方式,可直接读取(hadoop fs -text命令),但hive只能用TEXTFILE格式的表加载,然后再insertoverwrite 到其他格式的 ...
- Mac解压缩软件BetterZip如何选择压缩文件时的压缩格式
2019独角兽企业重金招聘Python工程师标准>>> 如果想要在Mac上更好的解压缩文件 那么BetterZip应该是很多人的选择 因为这是一款既专业又实用的Mac解压缩软件 而且 ...
- python 解压zip 慢_Python解压ZIP、RAR等常用压缩格式的方法
解压大杀器 首先祭出可以应对多种压缩包格式的python库:patool.如果平时只用基本的解压.打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择. pato ...
- Hive常见的压缩格式
压缩格式 Hive支持的压缩格式有bzip2.gzip.deflate.snappy.lzo等.Hive依赖Hadoop的压缩方法,所以Hadoop版本越高支持的压缩方法越多,可以在$HADOOP_H ...
最新文章
- SAP MM MB21 创建预留界面批量为多个行项目勾选M标记
- linux中offsetof与container_of宏定义
- B站收藏 12.5w+!GitHub 标星 6.6k+!这门神课拯救了我薄弱的计算机基础
- srpg 胜利条件设定_英雄联盟获胜条件
- 货物与产品的区别_超市货架和仓储式货架有什么区别?
- mysql group by_技术分享 | 回顾 MySQL 的 MTS
- mac java 版本_Mac 下 Java 多版本切换
- 1100名达摩院“扫地僧”加持,阿里云的下一个十年
- 关于国内几大云计算平台
- android ev3 蓝牙连接,分享一下自己研究EV3蓝牙通信原理的成果 (完结)
- js打开新窗口 window.open() 隐藏菜单栏、工具栏,配置窗口大小、滚动条等
- 2018重庆大学计算机学院复试,2018年重庆大学考研复试(回忆版)
- tibco linux安装手册,TIBCO Admin 5.11.1 安装及Domain建立 (Linux)
- 教你年入100万,互联网赚钱三板斧!
- 南充一中2021成绩查询高考,2021年南充一中升学率高不高?
- 搭建邮件群发服务器费用,自建邮件群发服务器优缺点分析
- 深富策略:锂电光伏崛起 成长赛道再度回归
- 设计模式之禅-二《上卷》
- gof23 设计模式 各个模式代码demo
- python百钱买百鸡及优化
热门文章
- 调取大华SDK获取IPC音视频流并得到H264帧
- 宽带提速后如何恰如其分的选择路由器?
- FLiText: A Faster and Lighter Semi-Supervised Text Classification with Convolution Networks
- linux系统文件空间清理摸9z,Linux下的文件加密
- 监控之美——监控之美-监控系统选型分析及误区探讨
- Advanced Zip Password Recovery下载
- string 析构崩溃 assign
- 工作汇报PPT模板推荐
- 数字证书申请流程(双证)
- 解决idea maven reimport失效问题