参考网址:VS2012上的IPOL上的non-local means源程序
1. 下载libpng和zlib并配置
-
1.下载libpng
- 2.下载zlib http://www.zlib.net/
http://www.libpng.org/pub/png/libpng.html libpng1637要求zlib至少要1.0.4
- 3.编译libpng的库
用vscode打开zlib.props,然后修改路径即可。同时要修改vs2013平台,因为源代码是vc2010平台。然后用release win32编译。就成功了。
https://blog.csdn.net/gxiaoyaya/article/details/64919852
2. 建立NLmeans的工程,然后添加库
1、在属性-C/C++-常规-附加库包含目录添加
2、项目包含lib文件所在目录
属性--链接器--常规--附加库目录
..\lpng1637\projects\vstudio\Debug
添加lib文件
属性--链接器--输入--附加依赖项(libpngd.lib zlib.lib)
3、 其实解决这个问题的方法并不难,把unistd.h放在当前项目的文件夹下,且用"" include
出现'M_PI' : undeclared identifier。在 在libauxiliar.h这个头文件中加入
#define _USE_MATH_DEFINES 这个宏定义,就OK。这个define要加在#include <cmath>之前
[无法解决] 只要在你的默认库文件夹下(例如D:\Program Files\Microsoft Visual Studio\VC\INCLUDE\)添加一个unistd.h文件即可,其内容如下:
#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */
4、getid()改为_getid()
5、fopen不安全,在C++/预编译头中加入:_CRT_SECURE_NO_WARNINGS
6、缺少libpng.lib和zlib.lib
原因是:附加项写在了一行,应该写两行。且文件是在debug下面的,在属性--链接器--常规--附加库目录加入了Debug的目录了,所以在属性--链接器--输入--附加依赖项输入(libpng16.lib zlib.lib),分两行写入
7、 这是因为在这个工程里面有三个main函数,由于我们这里只是为了使用NLM进行去噪,所以img_diff_ipol.cpp和img_mse_ipol.cpp这两个文件我们可以暂时先从当前工程中删除掉, 然后再编译,就成功了!!
3. VS2013 VS2015应用程序无法正常启动0xc000007b。
https://blog.csdn.net/u010205478/article/details/88682932
NLmeans.exe的位置不对。找到位置所在
然后将libpng16.dll复制到exe所在位置,所以都是缺失了dll导致的。就成功了!!!
4、找不到图像
默认读图路径在工程所在的地方。默认的输出也在这个地方。