Reputation: 1965
I am new to openCV, have recently obtained a pre-compiled version of openCV 2.4.7 and was successfully able to integrate it with visual studio 2010.
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.
{
cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED);
if(image.empty())
{
cout<<"image not loaded";
}
else
{
cv::namedWindow( "test", CV_WINDOW_AUTOSIZE );
cv::imshow("test",image);
}
}
Any help would be highly appreciated.
Upvotes: 21
Views: 33435
Reputation: 61
The cv2.waitKey(0)
waits for key-press indefinitely. In case of streamed data where update is required, better use cv2.pollKey()
instead of (often suggested) cv2.waitKey(1)
, which actually introduces at least 1 ms delay.
Upvotes: 0
Reputation: 3023
For Python users, using cv2.wait(0)
is the solution. So, the overall format goes like this
cv2.imwrite("DetectionResults.jpg", frame)
cv2.imshow("DetectionResults", frame)
cv2.waitKey(0)
Upvotes: 2
Reputation: 3408
I suggest removing the cv::namedWindow
statement, and adding
cv::waitKey();
after the cv:imshow
statement. You can also check whether the dimensions of the window are correct.
Upvotes: 2
Reputation: 26259
You must have:
cv::waitKey(0);
instead of:
system("pause");
The latter just doesn't work. OpenCV needs to pump messages to get the window displayed and updated, and inside that waitKey
function is all of the mechanism to do so.
As the documentation says, waitKey
only works if you have a HighGUI window open, so in your code, you probably need to do this:
cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED);
if(image.empty())
{
cout<<"image not loaded";
}
else
{
cv::namedWindow( "test", CV_WINDOW_AUTOSIZE );
cv::imshow("test",image);
cv::waitKey(0);
}
In case there's a problem with the image format, you might try loading like this:
cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_COLOR);
Upvotes: 32