Ask Your Question

timothylegg's profile - activity

2016-06-13 05:24:45 -0600 answered a question oprncv with c tuorial..??

I myself am a newbie too whom started last week.

Since there are very few people in this forum, it's easier to adapt yourself to their community until you get yourself started. I suspect that many of them use MacOS or Linux as their development environments.

Helping you get started in Linux is outside of the scope of this forum, so if you have any questions on that, send me a private message here and I'll do the best I can. On that offer, I suggest installing Linux and OpenCV on a USB or SD card and booting from that and use that as a learning platform. Once you understand the structure of the toolset better, it might be easier to migrate to the more mature Microsoft compilers.

2016-06-10 09:41:30 -0600 received badge  Student (source)
2016-06-10 09:23:11 -0600 asked a question Potential Error in Tutorial

I am quite new to OpenCV. I have been using C for 20 years, but am very new to C++ as the object-oriented approach has always seemed awkward, but I'm getting there.

From the tutorials in:

http://docs.opencv.org/2.4/doc/tutori...

I decided to work on the one at:

http://docs.opencv.org/2.4/doc/tutori...

but it wouldn't compile. I'm nowhere familiar enough with these libraries, or C++, to determine what went wrong. But the disheartening reality is that I only cut-n-pasted the source code and adapted the CMakeLists.txt from a prior tutorial.

So here is what I have. I'll start with the CMakeLists.txt that is required.

cmake_minimum_required(VERSION 2.8)
project( Change )
find_package( OpenCV REQUIRED )
add_executable( Change Change.cpp )
target_link_libraries( Change ${OpenCV_LIBS} )

This is the code, I called is Change.cpp.

#include <cv.h>
#include <highgui.h>

using namespace cv;

int main( int argc, char** argv )
{
 char* imageName = argv[1];

 Mat image;
 image = imread( imageName, 1 );

 if( argc != 2 || !image.data )
 {
   printf( " No image data \n " );
   return -1;
 }

 Mat gray_image;
 cvtColor( image, gray_image, CV_BGR2GRAY );

 imwrite( "../../images/Gray_Image.jpg", gray_image );

 namedWindow( imageName, CV_WINDOW_AUTOSIZE );
 namedWindow( "Gray image", CV_WINDOW_AUTOSIZE );

 imshow( imageName, image );
 imshow( "Gray image", gray_image );

 waitKey(0);

 return 0;
}

When I execute make to initiate the compilation, I get a number of errors:

$ make
Scanning dependencies of target Change
[100%] Building CXX object CMakeFiles/Change.dir/Change.cpp.o
/home/legg/code/image/Change/Change.cpp: In function ‘int main(int, char**)’:
/home/legg/code/image/Change/Change.cpp:11:31: error: ‘imread’ was not declared in this scope
  image = imread( imageName, 1 );
                               ^
/home/legg/code/image/Change/Change.cpp:20:43: error: ‘cvtColor’ was not declared in this scope
  cvtColor( image, gray_image, CV_BGR2GRAY );
                                           ^
/home/legg/code/image/Change/Change.cpp:22:53: error: ‘imwrite’ was not declared in this scope
  imwrite( "../../images/Gray_Image.jpg", gray_image );
                                                     ^
/home/legg/code/image/Change/Change.cpp:24:45: error: ‘namedWindow’ was not declared in this scope
  namedWindow( imageName, CV_WINDOW_AUTOSIZE );
                                             ^
/home/legg/code/image/Change/Change.cpp:27:27: error: ‘imshow’ was not declared in this scope
  imshow( imageName, image );
                           ^
/home/legg/code/image/Change/Change.cpp:30:11: error: ‘waitKey’ was not declared in this scope
  waitKey(0);
           ^
make[2]: *** [CMakeFiles/Change.dir/Change.cpp.o] Error 1
make[1]: *** [CMakeFiles/Change.dir/all] Error 2
make: *** [all] Error 2

It appears that the imread() function isn't found (and the following lines are likely derived from the same issue). I hope that I'm not naive in assuming the source code is correct, but it appears that a header file is missing. I don't have enough experience to formulate a scientific solution to this problem, but instead I made a guess by prefixing:

#include <stdio.h>
#include <opencv2/opencv.hpp>

which is from a separate tutorial and it worked according to spec. So in a way, I resolved this myself, but not only through guessing, not understanding. That's not my ... (more)