Windows平台下Fits格式文件读写C++库CCfits编译过程
作者的开发环境配置为:Win7+Qt5.14.2+VS2017,目的是编译CCfits库,但是它依赖于cfitsio库,而cfitsio库又依赖于zlib库。因此,完成CCfits库的编译需要完成以下3个库的编译:
1)zlib:zlib-1.2.11,zlib Home Site
2)cfitsio:cfitsio-4.0.0,FITSIO Home Page
3)CCfits:CCfits-2.6,CCfits: C++ Wrappers for the cfitsio library
编译库首先需要安装CMake,作者使用的版本是CMake 3.17.2,Windows下许多第三方跨平台库的编译均需要使用CMake,这里不赘述。另外,作者在最初的编译的过程中,总是编译失败,CMakeError.log中的错误提示为“LINK:fatal error LNK1104:无法打开文件“ucrtd.lib””,最终明确原因为“CMake未能明确Windows版本”,需要在编译时主动将Windows版本号作为参数传递给CMake,即增加“-DCMAKE_SYSTEM_VERSION=10.0.14393.0”,解决方法来自博客。在Windows下使用批处理的方式进行编译十分方便,下面作者给出编译3个库的完整编译批处理命令以及批处理文件路径截图:
1)编译zlib库
cd/d "%~dp0"
mkdir zlib.build
cd zlib.build
cmake -G "Visual Studio 15 2017 Win64" ..\zlib-1.2.11 -DCMAKE_INSTALL_PREFIX=c:\Users\zhoukehu\zlib -DCMAKE_SYSTEM_VERSION=10.0.14393.0
cmake --build . --config Release
cmake --install .
pause
2)编译cfitsio库
cd/d "%~dp0"
mkdir cfitsio.build
cd cfitsio.build
cmake -G "Visual Studio 15 2017 Win64" ..\cfitsio-4.0.0 -DCMAKE_INSTALL_PREFIX=c:\Users\zhoukehu\cfitsio -DCMAKE_PREFIX_PATH=c:\Users\zhoukehu\zlib -DCMAKE_SYSTEM_VERSION=10.0.14393.0
cmake --build . --config Release
cmake --install .
pause
3)编译 CCfits库
cd/d "%~dp0"
mkdir CCfits.build
cd CCfits.build
cmake -G "Visual Studio 15 2017 Win64" ..\CCfits-2.6 -DCMAKE_INSTALL_PREFIX=c:\Users\zhoukehu\CCfits -DCMAKE_PREFIX_PATH=c:\Users\zhoukehu\cfitsio -DCMAKE_SYSTEM_VERSION=10.0.14393.0
cmake --build . --config Release
cmake --install .
pause
作者将Win7下通过VS2017编译的x64版本的CCfits库分享出来(注意:最终编译的CCfits库只有lib库,而没有对应的dll,zlib库和cfitsio库则均包含了lib和dll):
链接:百度网盘 请输入提取码
提取码:5mx4
作者根据CCfits库的文档编写了16位图像保存为Fits格式文件的代码,如下:
#include "CCfits/CCfits.h"
using namespace CCfits;/*** @brief 将16位图像数据保存为Fits格式图像* @param pImg 图像数据指针* @param nWidth 图像宽度(单位:像素)* @param nHeight 图像高度(单位:像素)* @param strFilePath Fits图像保存路径,含后缀名(fits、fit等)* @param lfRA 保存的图像附加信息* @param lfDec 保存的图像附加信息* @return*/
bool saveFits16UC1(uchar* pImg,ushort nWidth,ushort nHeight,QString strFilePath,double lfRA,double lfDec)
{//写FITS文件long naxis = 2;long naxes[2] = { nWidth, nHeight };FITS* pFits = nullptr;try{pFits = new FITS(strFilePath.toLocal8Bit().toStdString(), USHORT_IMG , naxis , naxes);}catch (FITS::CantCreate){qDebug() << "FITS::CantCreate";return false ;}long nelements = nWidth*nHeight;long fpixel(1);std::valarray<unsigned short> array((unsigned short*)pImg,nelements);pFits->pHDU().addKey("RA_TEL",lfRA,"Telescope R.A. in Equinox");pFits->pHDU().addKey("DEC_TEL",lfDec,"Telescope DEC. in Equinox");pFits->pHDU().write(fpixel,nelements,array);delete pFits;pFits = nullptr;return true;
}
Windows平台下Fits格式文件读写C++库CCfits编译过程相关推荐
- windows平台下vlc编译之六:vlc-0.9.8a的编译
请移步https://higoge.github.io/,所有下载资料在那个博客都能找到.谢谢. --------------------------------------------------- ...
- Windows平台下Makefile学习笔记
来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代码已经在使用VS2010开发,但我还没安 ...
- windows平台下vlc编译
转自:http://jeremiah.blog.51cto.com/539865/114190 Jeremiah刚刚工作几个月,参与的第一个项目是与视频监控有关,分配给我的任务就是用开源的vl ...
- Windows平台下Git服务器搭建
初识Git Git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑, ...
- Windows平台下NS2网络仿真环境的搭建
NS2(Network Simulator 2) 是一种针对网络技术的源代码公开的.免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术 ...
- Windows平台下Glade+GTK开发环境的搭建
[@.1 MVVM设计模式与Glade] 做上层软件开发的程序员可能对于MVVM模式比较熟悉,这是一种经典的软件设计模式,很好的将用户界面与后台处理之间分层开,通过属性.事件绑定这种统一的" ...
- Windows平台下Mediasoup客户端开发指南
操作系统:Windows 10 IDE: Visual Studio 2019 GitHub:https://github.com/versatica/libmediasoupclient/ 官网文档 ...
- windows平台下VLC2.0.5编译
windows平台下VLC2.0.5编译说明 时隔一年多,又要搞流媒体了,不过这次是要做流媒体服务器. 暂时决定使用vlc+ffmpeg+live555,虽然听有些前辈说这个组合的性能较差,只能作为学 ...
- [转]Windows平台下Makefile学习笔记
Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...
- 在Python中FITS格式文件数据的读取 (转载)
在Python中FITS格式文件数据的读取 (转载) 前言 \space\space\space\space FITS(Flexible Image Transport System)格式文件 ...
最新文章
- sudo spctl --master-disable_Φ560加长哈夫节--南宫哈夫节定做厂家
- 安装IE8不能调试VS2005的解决办法
- python比java简单好学-21、PHP和python/JAVA比,哪个更好学?
- Tkinter的Canvas组件
- 实现类似Android联系人搜索功能
- scp免密码远程拷贝
- [转]CISCO IOS命名规则
- MapReduce程序之数据排序
- scp 不输入密码登录
- 二维图像矢量化方法简述
- matlab解超越函数,矩阵的超越函数Matlab提供的矩阵函数.PPT
- 中国古代亲属称谓家谱总览
- 机器学习笔记——乳腺癌鸢尾花分类问题详解(没有直接调包)
- css实现实心三角箭头,兼容ie
- [转]Apache Ignite——新一代数据库缓存系统
- vsftpd参数cmds_allowed
- Xmas snow for Mac(圣诞桌面装饰软件)
- 虚拟机安装windows10
- SCAU 1037 计算数列和
- android下存储设备的使用