Ask Your Question
0

How to compile and run tutorial code

asked Jan 19 '18

dinosaur gravatar image

updated Jan 19 '18

I am trying to learn opencv, and I'm stalled on the first tutorial because I can't figure out how to complile and run the code.

Here is the tutorial: https://docs.opencv.org/2.4/doc/tutor...

The tutorial does not say what #include statements to use or how to compile using g++ or any other compiler. I would like to know these things so that I can run the tutorial code.

Preview: (hide)

1 answer

Sort by » oldest newest most voted
3

answered Jan 20 '18

phillity gravatar image

updated Jan 20 '18

For compiling using g++ see this answer

You will need #include "opencv2/core.hpp" and #include "opencv2/highgui.hpp". Please note that this tutorial is for OpenCV 2.4. Some of the tutorial code will not work with the 3.X versions OpenCV. Here is edited tutorial code which will work with OpenCV 3.4.0 (the latest version). If you are using a 3.X version of OpenCV you should work through the updated tutorials here

#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"

#include <iostream>

using namespace cv;
using namespace std;

//will need a path to an image as a command line argument!
int main(int argc, char *argv[])
{
    //switched variablename C to Q to avoid redefinition !!!
    Mat A, Q;                                 // creates just the header parts
    A = imread(argv[1], CV_LOAD_IMAGE_COLOR); // here we'll know the method used (allocate matrix)

    Mat B(A);                                 // Use the copy constructor

    Q = A;                                    // Assignment operator

    Mat D(A, Rect(10, 10, 100, 100)); // using a rectangle
    //switched to variable name from E to X to avoid redefinition !!!
    Mat X = A(Range::all(), Range(1, 3)); // using row and column boundaries

    Mat F = A.clone();
    Mat G;
    A.copyTo(G);

    Mat M(2, 2, CV_8UC3, Scalar(0, 0, 255));
    cout << "M = " << endl << " " << M << endl << endl;

    int sz[3] = { 2,2,2 };
    Mat L(3, sz, CV_8UC(1), Scalar::all(0));

    //need path to an image here!!
    IplImage* img = cvLoadImage("put\\path\\here\\picture.png", 1);
    //conversion has to be performed using a cv::cvarrToMat function !!!
    Mat mtx(cvarrToMat(img)); // convert IplImage* -> Mat

    M.create(4, 4, CV_8UC(2));
    cout << "M = " << endl << " " << M << endl << endl;

    Mat E = Mat::eye(4, 4, CV_64F);
    cout << "E = " << endl << " " << E << endl << endl;

    Mat O = Mat::ones(2, 2, CV_32F);
    cout << "O = " << endl << " " << O << endl << endl;

    Mat Z = Mat::zeros(3, 3, CV_8UC1);
    cout << "Z = " << endl << " " << Z << endl << endl;

    Mat C = (Mat_<double>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
    cout << "C = " << endl << " " << C << endl << endl;

    Mat RowClone = C.row(1).clone();
    cout << "RowClone = " << endl << " " << RowClone << endl << endl;

    Mat R = Mat(3, 2, CV_8UC3);
    randu(R, Scalar::all(0), Scalar::all(255));

    cout << "R (default) = " << endl << R << endl << endl;

    //Formatter::FMT_PYTHON needed here !!!
    cout << "R (python)  = " << endl << cv::format(R, Formatter::FMT_PYTHON) << endl << endl;

    //Formatter::FMT_CSV needed here !!!
    cout << "R (csv)     = " << endl << format(R, Formatter::FMT_CSV) << endl << endl;

    //Formatter::FMT_NUMPY needed here !!!
    cout << "R (numpy)   = " << endl << format(R, Formatter::FMT_NUMPY) << endl << endl;

    //Formatter::FMT_C needed here !!!
    cout << "R (c)       = " << endl << format(R, Formatter::FMT_C) << endl << endl;

    Point2f P(5, 1);
    cout << "Point (2D) = " << P << endl ...
(more)
Preview: (hide)

Question Tools

1 follower

Stats

Asked: Jan 19 '18

Seen: 1,834 times

Last updated: Jan 19 '18