概述
最近在做师兄的一个给dpx图像文件上色的项目。dpx格式图像是一种高品质的影视级图像文件,像素级别非常高。我拿到的一些dpx图像的像素深度是16bit的,RGB三通道,所以每一个图像文件都比较大,一般有12MB大小。
开始,让我特别头痛的是怎么能读出来dpx图像的像素数据。幸好发现,graphicsmagick可以读取dpx图像,也可裁剪,绘制图案,转换为jpg,bmp等格式。
GraphicsMagick是一个短小精悍的图片处理工具和库集合。用来处理图像的读取、写入和操作,支持超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。
安装准备
boost安装包: boost_1_70_0.tar.bz2
下载: https://sourceforge.net/projects/boost/files/boost/
pgmagick安装包:pgmagick-0.7.5.tar.gz
下载: https://pypi.org/project/pgmagick/#files
anaconda3:python3.7的虚拟环境
虚拟环境名称:deoldify
虚拟环境目录位置:home/rain/Desktop/yes/envs/deoldify
1 graphicsmagick安装(命令自动安装)
进入anaconda3的虚拟环境,命令:
conda install graphicsmagick
如果没安装成功,用下面命令搜索可用的包:
anaconda search -t conda graphicsmagick
在搜索到的packages里面,选择一个包,我选的是conda forge,搜索信息:
anaconda show graphicsmagick
安装:
conda install --channel https://conda.anaconda.org/conda-forge graphicsmagick
等一会,安装成功。查看版本:
gm version
2 boost安装(手动安装)
解压安装包:
tar -jxvf boost_1_70_0.tar.bz2
进入安装包顶层目录:
cd boost_1_70_0
执行安装的脚本文件:
./bootstrap.sh --with-python=/home/rain/Desktop/yes/envs/deoldify/bin/python3 --with-python-version=3.7 --with-python-root=/home/rain/Desktop/yes/envs/deoldify/lib/python3.7 --prefix=/home/rain/Desktop/yes/envs/deoldify
(特别要注意这里的路径,你们安装时候参考我这个路径。)
–prefix:要安装boost到的虚拟环境位置
–with-python:指定安装boost时候,要使用的python解释器
修改project-config.jam文件:
(注意这里的红色部分,要指定路径到的目录层级,和我的保持一致,不要搞错了蛤)
编译执行:
./b2 --with-python include=/home/rain/Desktop/yes/envs/deoldify/include/python3.7m --prefix=/home/rain/Desktop/yes/envs/deoldify
./b2 install --with-python include=/home/rain/Desktop/yes/envs/deoldify/include/python3.7m --prefix=/home/rain/Desktop/yes/envs/deoldify
指定安装目录会生成相应的文件:
libboost_python37.a
libboost_python37.so
libboost_python37.so.1
libboost_python37.so.1.70
libboost_python37.so.1.70.0
3 pgmagick安装(手动安装)
解压安装包:
tar -jxvf pgmagick-0.7.5.tar.gz
进入顶层目录:
cd pgmagick-0.7.5
修改setup.py:
(1)修改头文件,库文件,配置文件搜索目录:
(2)在这里加一句代码:
修改src/Makefile:
编译,安装:
python setup.py install --prefix=/home/rain/Desktop/yes/envs/deoldify
安装完成。
进入python命令行,导入pgmagick试试:
大功告成!
参考博客来源:https://blog.csdn.net/studyeboy/article/details/96866737