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のインストール
  • boost(私が下にいるのは7 z版)
  • をダウンロード
  • 圧縮パッケージを解凍しbootstrapを実行する.bat
  • は、生成するb 2を実行する.exe

  • boostの使用
  • 現在のプロジェクト->Properties->Configuration Properties->C/C+->General:Additional Include Directories:J:boostboost_を設定する1_61_0(J盤のboostでダウンロードしたので)
  • 現在のプロジェクト->Properties->Configuration Properties->Linker->General:Additional LibraryDirectories:J:boost 61libの設定(当時、VS 2015開発者のコマンドプロンプトでbjam stage–stagedir="J:boost 61"link=static runtime-link=shared runtime-link=static threading=multi debug releaseを使用してコンパイルしていたので、libはJ:boost 61libフォルダの下で、b 2.exeを直接実行するとそうはいかないはずです)つまり、最初のステップは解凍後のフォルダの位置を設定することです第2のステップは、コンパイルされたlibの位置を設定するとともに、boost
  • を使用するには、各プロジェクトがこのように構成する必要がある.
    テストboost
    boostが構成が完了したかどうかを確認するために、vs 2015を開き、以下のコードテストを実行し、正常に実行できれば構成が完了します(注意:プロジェクトで上記の方法で構成してから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のインストール
  • opencvをダウンロードします(私がインストールしたのはopencv-2.4.13です)
  • exeファイルを実行しopencv
  • をインストール
    Opencvの構成
    システム変数pathにパスを追加し、値は自分でopencvパスの下のbinパスを解凍します(自分vs対応バージョンのbinディレクトリを選択)、例J:opencvopencvbuildx 86vc 12bin Tip:x 86とx 64はそれぞれ32 bitと64 bitのVSエンジニアリングを表し、自分のエンジニアリングによって修正し、そうでなければコンパイルに成功したが実行エラー;vc 10、vc 11、vc 12はそれぞれVS 2010、VS 2012、VS 2013のVisual Studioで使用されているコンパイラバージョンは、自分のVSバージョンによって本来正しく記入されているの双曲線コサインを返します.
    Opencvの使用
  • 現在のプロジェクト->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
  • を追加
  • 現在のプロジェクト->Properties->Configuration Properties->Linker->General:Additional LibraryDirectoriesを選択:次の
    J:\opencv\opencv\build\x86\vc12\lib
  • を追加
  • 現在のプロジェクト->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
  • mnisten
  • をダウンロード
  • vs 2015コンパイルで
  • その中で出会ったいくつかの問題
  • 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. 解決策:現在のプロジェクト->Properties->Configuration Properties->C/C+->プリプロセッサを選択:次のように追加して保存します.
    _CRT_SECURE_NO_WARNINGS
  • msvcp120d.dll損失解決策:この2つのmsvcp 120ファイルを最初のステップで設定したPath環境変数パスにコピーし、opencvのdllと一緒に配置します(機能しない場合は、コンピュータをログアウトまたは再起動します).
  • releaseモードでmnisten.exeが生成され、私は入力パスが常に画像を見つけることができません.これはパスの問題かもしれません.だから、私たちは直接debugモードで実行することができます.main関数でcmd入力関連コードを除去し、直接画像パスに書き込んで実行すればいいです(パスの使用/ではなく、そうでなければ画像が見つかりません).