Compile and Integrate OpenCv 3.4.1 Into Codeblocks 17.12 With GCC 5.1.0

Spread the love

Needed Tools:

  1. OpenCv 3.4.1 Windows self-extracting archive Download
  2. CodeBlocks 17.12 Without Mingw Download
  3. Cmake 3.12 .msi Download
  4. TDM-GCC-64 (tdm64-gcc-5.1.0-2.exe) Download
  5. Common Sense Download 🙂

Steps:

  1. Install and open Cmake
  2. Download and Extract Opencv (exe is a type of package. It will ask you the path when you open the opencv.exe)  in directory c:\Opencv
  3. Create new directory “opencv_codeblocks” in C:\opencv
  4. Download and Install TDM-GCC-64 in directory C:\TDM-GCC-64 and add the path “C:\TDM-GCC-64\bin” to the environment variables. Watch below video to know how to add the the path to environment variables.

  1. Open CMake.
  2. Select path “C:/Opencv/opencv/sources” in Option Where is the source code
  3. Select path “C:/Opencv/Opencv_codeblocks” in Option Where to build the binaries. These are same folder we have created earlier.
  4. Click Build.
  5. Now you will see some options in table like structure. Few will be checked and few are not. So make sure about these four :
    1. PRECOMPILED _HEADERS : Uncheked
    2. MFMS :  Unchecked
    3. IPP : Unchecked
    4. Builed Opencv world : Checked
  6. Click build again and after that click generate.
  7. Now in directory Opencv_codeblocks a codeblock project file will be created with extension cbp. Double click on it.
  8. Before building we have to configure Codeblocks.
    1. Go to Settings->compiler
    2. From Drop Down Select GNU GCC Compiler
    3. Select option Toolchain executables
    4. In option compiler’s installation directory choose the path “C:\TDM-GCC-64” Which is the path of installation of GCC compiler .
    5. Click on Auto Detect. And click on OK in popup.
    6. Go to tab Compiler Flags and Select option “Have g++ follow C++11 ISO C++ language standard [-std=c++11]”
    7. Click OK
  9. Now From Build option in menu bar click on Build. Or See for following symbols.
  1. There Will Few Errors those will be shown while building :
    1. Error 1 : strcpy_s and strcat_s are not declared in this namespace. To resolve it use the function strncpy and strncat respectively. The format of latter is different from previous one.
      • strncpy( szKey, icvWindowPosRootKey, 1024 );
      • strncat( szKey, name, 1024 );
    2. The Error1 will be shown 4 or 5 times. So change the functions to the equivalents. Save the changes each time using Ctrl+s and click build every time you make changes to files.
    3. Error2 : time was not found in this scope. So resolve it add header file time.h (#include <time.h>)to the file top in which the error is shown. Save and Click Build again.
  2. Go to : Build->Select Target and select “install” option.
  3. Click Build option Again. The above process will take some time. On Successful build continue to following steps. Otherwise try to remove them if you can.
  4. Do Some copying :
    1. Copy opencv and opencv2 folders from “C:\opencv\build_codeblocks\install\include” to “C:\TDM-GCC-64\x86_64-w64-mingw32\include”
    2. Copy libopencv_world343.dll.a (number 343 can change with new release of Opencv) from “C:\opencv\build_codeblocks\install\x64\mingw\lib” to “C:\TDM-GCC-64\x86_64-w64-mingw32\lib”
    3. Copy Everything from “C:\opencv\build_codeblocks\install\x64\mingw\bin” to “C:\TDM-GCC-64\bin”
  5. Now create a new project in codeblocks and write your code with the inclusion of required header files by your code (Read Documents of OpenCV). example code :
#include < opencv2 / core / core.hpp > 
#include < opencv2 / highgui.hpp > 
#include < iostream >
using namespace cv;
using namespace std;
int main() {

    Mat image1, image2;
    image1 = imread("cross.png", CV_LOAD_IMAGE_COLOR);
    if (!image1.data) {
        cout << "could not find image1" << endl;
    }
    image2 = imread("cross.png", CV_LOAD_IMAGE_GRAYSCALE);
    if (!image2.data) {
        cout << "could not find image2" << endl;
    }
    cout << "opencv test" << endl;
    namedWindow("Color Image", WINDOW_AUTOSIZE);
    imshow("Color Image", image1);
    namedWindow("Gray Scale Image", WINDOW_AUTOSIZE);
    imshow("GRAY Scale Image", image2);
    waitKey(0);
    destroyAllWindows();
    return 0;
}
  1. Before building right click on project in left side pane and select build options.
  2. Go to linker settings and click Add.
  3. Write “opencv_world343” in input box and click ok. Note that 343 can change as said above. So 343 should same as the file you copied above.
  4. Now you can build and run the code.