windows下编译mnisten

  • github仓库
  • 安装boost
    • 使用boost
    • 测试boost
  • 安装opencv
    • 配置opencv
    • 使用opencv
  • 编译mnisten
  • 其中遇到的一些问题

Tensorflow中用的数据集是mnist,为了方便使用官方代码测试,所以构建自己的数据集,用到了mnisten。因为在ubuntu下编译遇到了很多问题无法解决,所以尝试在windows下编译,已经能成功将自己的数据集转换成mnist格式了。

github仓库

根据Readme提示,我们需要先安装boost以及opencv

  • mnisten : image files to idx format converter

安装boost

  1. 下载boost(我下的是7z版的)
  2. 解压压缩包,运行bootstrap.bat
  3. 运行生成出来的b2.exe

使用boost

  1. 选中当前 project -> Properties -> Configuration Properties -> C/C++ -> General: Additional Include Directories: 设置 J:\boost\boost_1_61_0(因为我下载在J盘的boost下)
  2. 选中当前 project -> Properties -> Configuration Properties -> Linker -> General: Additional LibraryDirectories: 设置J:\boost61\lib(因为当时我在VS2015 开发人员的命令提示中使用 bjam stage –stagedir=”J:\boost61” link=static runtime-link=shared runtime-link=static threading=multi debug release 来编译,所以lib在J:\boost61\lib文件夹下,如果直接运行b2.exe应该不会这样了)
    总之,第一步是设置解压后的文件夹的位置,第二步则是设置编译出来的lib的位置,同时每一个项目都需要像这样配置才能使用boost

测试boost

为了确定boost是否配置完成,我们可以打开vs2015,运行以下代码测试,如果能正常运行则配置完成了(注意:需要在项目中用上述方法配置后才能使用boost)

//#define BOOST_DATE_TIME_SOURCE
#include 
#include 
#include 
using namespace std;
using namespace boost::gregorian;
using namespace boost::posix_time;

/************************************************************************
创建微秒级的计时器
************************************************************************/

template <class T = microsec_clock>
class MyTimer
{
private:
    ptime m_startTime;

public:
    MyTimer()
    {
        Restart();
    }

    void Restart()
    {
        m_startTime = T::local_time();
    }


    void Elapsed()
    {
        cout << T::local_time() - m_startTime << endl;
    }
};


int main()
{
    MyTimer t;
    for(int i = 0; i < 100; ++i)
    {
        cout << "hello" << endl;
    }
    t.Elapsed();
}

安装opencv

  1. 下载opencv(我安装的是opencv-2.4.13)
  2. 运行exe文件,安装opencv

配置opencv

在系统变量path中添加路径 ,值为自己解压opencv路径下的bin路径(选择自己vs相应版本的bin目录),例J:\opencv\opencv\build\x86\vc12\bin
Tip: x86和x64分别表示32bit和64bit的VS工程,根据自己的工程来修改,否则虽编译成功但会运行错误;vc10, vc11, vc12 分别表示VS2010, VS2012, VS2013的Visual Studio使用的编译器版本,根据自己的VS版本来填写正确的编译器版本号。

使用opencv

  1. 选中当前 project -> Properties -> Configuration Properties -> C/C++ -> General: Additional Include Directories: 增加以下

    J:\opencv\opencv\build\include
    J:\opencv\opencv\build\include\opencv
    J:\opencv\opencv\build\include\opencv2
  2. 选中当前 project -> Properties -> Configuration Properties -> Linker -> General: Additional LibraryDirectories: 增加以下

    J:\opencv\opencv\build\x86\vc12\lib
  3. 选中当前 project -> Properties -> Configuration Properties -> Linker -> 输入 -> 添加“附加依赖项”,增加以下(根据你的opencv版本号来添加)

    opencv_calib3d2413d.lib
    opencv_contrib2413d.lib
    opencv_core2413d.lib
    opencv_features2d2413d.lib
    opencv_flann2413d.lib
    opencv_gpu2413d.lib
    opencv_highgui2413d.lib
    opencv_imgproc2413d.lib
    opencv_legacy2413d.lib
    opencv_ml2413d.lib
    opencv_nonfree2413d.lib
    opencv_objdetect2413d.lib
    opencv_photo2413d.lib
    opencv_stitching2413d.lib
    opencv_ts2413d.lib
    opencv_video2413d.lib
    opencv_videostab2413d.lib
    opencv_calib3d2413.lib
    opencv_contrib2413.lib
    opencv_core2413.lib
    opencv_features2d2413.lib
    opencv_flann2413.lib
    opencv_gpu2413.lib
    opencv_highgui2413.lib
    opencv_imgproc2413.lib
    opencv_legacy2413.lib
    opencv_ml2413.lib
    opencv_nonfree2413.lib
    opencv_objdetect2413.lib
    opencv_photo2413.lib
    opencv_stitching2413.lib
    opencv_ts2413.lib
    opencv_video2413.lib
    opencv_videostab2413.lib
    kernel32.lib
    user32.lib
    gdi32.lib
    winspool.lib
    comdlg32.lib
    advapi32.lib
    shell32.lib
    ole32.lib
    oleaut32.lib
    uuid.lib
    odbc32.lib
    odbccp32.lib

编译mnisten

  1. 下载mnisten
  2. 使用vs2015编译即可

其中遇到的一些问题

  1. error C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    解决办法: 选中当前 project -> Properties -> Configuration Properties -> C/C++ -> 预处理器:添加如下保存即可
    _CRT_SECURE_NO_WARNINGS
  2. msvcp120d.dll丢失
    解决办法: 把这两个msvcp120文件复制到你在第一步设置的Path环境变量路径里,和opencv的dll放在一起(如果没起作用,先将电脑注销或者重启)
  3. 如果在release模式下将mnisten.exe生成出来,我输入路径始终无法找到图片,这有可能是路径的问题,所以我们可以直接在debug模式下运行,在main函数中去除cmd输入相关代码,直接写入图片路径运行即可(注意路径使用/而不是\,否则会找不到图片)

你可能感兴趣的:(windows,tensorflow,mnist数据集,开发环境搭建)