Ask Your Question
0

How to compile and run tutorial code

asked 2018-01-19 15:50:34 -0600

dinosaur gravatar image

updated 2018-01-19 15:51:01 -0600

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.

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
3

answered 2018-01-19 19:54:42 -0600

phillity gravatar image

updated 2018-01-19 20:39:17 -0600

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)
edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2018-01-19 15:50:34 -0600

Seen: 1,820 times

Last updated: Jan 19 '18