libpng

OpenCV保存PNG图像底层调用的就是libpng库,简要说一下libPNG库的单独使用。

1.首先需要下载两个库,一个是libpng,一个是zlib

libpng库下载地址:http://www.libpng.org/pub/png/libpng.html

zlib库下载地址:http://www.zlib.net/

2.将两个库下载后解压到同一个文件目录下,如图:

3. 打开libpng库文件目录:\lpng1632\projects\vstudio中,用记事本打开zlib.props配置文件,对应修改zlib库的版本并保存,如下图,我用的是zlib-1.2.11

4.打开同目录下的vstudio解决方案,然后直接在debug或者release模式编译,win32或者x64均可。我用VS2012编译没有任何异常,全部成功,VS2015出现一些错误提示,但是不影响lib库的生成.

 

5.编译后得到的lib库和dll文件分别在同目录的Debug和Release文件中,x64下编译会在x64文件中。我们需要的是其中的libpng16.lib,libpng16.dll和zlib.lib三个文件。

       

6.新建VS项目,VC++目录中的包含目录分别设置为libpng库和zlib库所在路径,库目录设置为刚刚生成的lib库所在目录,链接器->输入中将两个lib库名称添加进去,并将libpng16.dll放进工程的可执行文件目录中。(其实跟配置Opencv一样一样的)

以上配置完毕,可以调用libpng库中的接口API进行图像的读写操作了,可以参考libpng库目录中的example.c文件,里面有API的说明。具体的读写代码网上也都能找到。

我列出自己简单编写的写入png图像的代码,读入lena.jpg,保存为lena.png。代码如下,仅供参考。

打开Visual Studio界面,右键我们的项目,选择属性->配置属性->VC++目录 
编辑‘包含目录’,(这个目录可以通俗地理解为存放头文件的目录。只有包含了png.h所在的目录,我们才能#include “png.h”)把$(ProjectDir)\HEADS添加进去(‘ProjectDir’表示目录’PNGtest\PNGtest’,用这个宏即使改变项目的存放位置,路径也有效):

   今天尝试安装了VS2015,发现微软还是没有处理好一台计算机安装多个VS版本时环境配置问题。无论是建立Console控制台程序还是MFC程序,都提示缺少"stdio.h"或"new.h"头文件。VS工程默认的包含路径C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include下的确没有这些头文件,那么应该怎么办呢,难道需要手动从别处拷贝缺少的文件吗?后来搜索了一下发现,微软悄悄将这几个头文件挪到了C:\Program Files (x86)\Windows Kits\10\Include\中了。

VS2012找不到SDKDDKVer.h的Bug修复

    此前写过一篇关于VS2012路径设置的类似文章,VS2015的解决方法还是类似:打开C:\Users\me>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props 文件,在该文件中添加分别向<IncludePath>字段添加$(UniversalCRT_IncludePath)和向<LibraryPath>中添加$(UniversalCRT_LibraryPath_x86)。应网友要求将修改后的Microsoft.Cpp.Win32.user.props文件贴在下面供参考:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludePath>$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);$(FrameworkSDKDir)\include</IncludePath>
    <LibraryPath>$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(WindowsSDK_LibraryPath_x86);$(UniversalCRT_LibraryPath_x86);$(FrameworkSDKDir)\lib</LibraryPath>
  </PropertyGroup>
</Project>

猜你喜欢

转载自blog.csdn.net/fighter_zzh/article/details/82424484