This is the piece of code. I have tried almost everything to resolve this error but the seg-fault doesn't go away. The image is getting read as the code displays the number of columns and rows in the image. I get this output upon running gdb:
SIGSEGV received from /usr/lib/x86-64-linux-gnu/libopencv_highgui.so.2.4
#include <opencv2/highgui.hpp>
#include <iostream>
int main( int argc, char** argv ) {
cv::Mat image;
image = cv::imread("sample.jpeg" , CV_LOAD_IMAGE_COLOR);
if(! image.data ) {
std::cout << "Could not open or find the image" << std::endl ;
return -1;
}
cv::namedWindow( "Display window", cv::WINDOW_AUTOSIZE );
#this line gives me errors
cv::imshow( "Display window", image );
cv::waitKey(0);
return 0;
}
Related
I am new to openCV, have recently obtained a version of openCV 2.4.8 and was successfully able to integrate it with Code blocks.
Apparently library seems to work fine, but when I'm trying to display image using imshow it displays the window but doesn't display image in it.
int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR);
if(! image.data )
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE );
imshow( "Display window", image );
waitKey(0);
return 0;
}
output of the program
Any help would be highly appreciated.
I finally got OpenCV to work but I encountered a problem where my program does not proceed (no outcome). The outcome of the program should be an image in a new window. Snippet:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], IMREAD_COLOR); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
Point is, program builds successfully but when I debug it, nothing happens. I tried to Start Without Debugging (ctrl+F5, I am using MSVisual2012) and what popped up is:
How can I fix this? Is it related to bad library linking?
The output is "Usage: display_image ImageToLoadAndDisplay", which means the program didn't get the filename. You can:
image = imread("C:\myfile.jpg", IMREAD_COLOR); (and remove the previous lines)
open terminal, cd to the executable dir and run yourprogram.exe myfile.jpg
set command arguments in visual studio.
I am using OpenCV 2.4.9 in Visual Studio 2010 and am trying to run simple source code provided on a tutorial website:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
cout << argv[1] << std::endl;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
However, when I try to run the executable (and comment out that if statement) I get: Assertion failed (size.width>0 && size.height>0) in cv::imshow ......(file path)
I have looked at just about every related thread I have found on here. The file path is not wrong, I have printed it out and even moved the executable and jpg to the same folder.
Furthermore, this sample code from another tutorial does the exact same thing flawlessly, so I doubt it's a project configuration error but not sure:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
IplImage *img = cvLoadImage("C:\\Users\\bomoon\\Documents\\Koala.jpg", 1);
cvNamedWindow("test");
cvShowImage("test", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("test");
return 0;
}
Can anyone explain why the second program works but not the first, and how I can fix the first one?
P.S.: It's not that I need to find a workaround to accomplish something, I'm trying to run sample code to verify the installation works, but it apparently doesn't if one sample program runs but not the other.
I want to compile the following code, which seems to be valid:
#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
After that, every .dll was found, except this one: "C:\Windows\System32\nvinitx.dll". How i am able to solve this? I found out, that this .dll is the driver of my NVIDIA GeForce GTX 660M.
This is the program i am trying but 3 errors are coming in 17th line which consist imread. i searched everywhere but i am not founding why it is showing this errors?
Errors are:
" : undeclared identifier
missing ) before string
syntax error )
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread("C:/Users/jai guru umesh/Desktop/6.jpg",0); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}