nfnf n
nfnf n

Reputation: 9

OpenCV: Reading the frames of a video sequence

Anyone help me ,I am trying to run code to read frames from video in folder its success in building but when debugging there isn't any output * I am using Visual studio 2012 ,opencv 2.4.11 version
the code is :

    #include "stdafx.h"
    #include <opencv2/opencv.hpp>
    #include "opencv2/highgui/highgui.hpp"
    #include <iostream>

    using namespace cv;
    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {
    return 0; 
    }


    int main()
    {
    // Open the video file
    cv::VideoCapture capture("C:/Users/asus/Desktop/A.mp4");
    // check if video successfully opened
    if (!capture.isOpened())
    return 1;
    // Get the frame rate
    int rate= capture.get(CV_CAP_PROP_FPS);
    bool stop(false);
    cv::Mat frame; // current video frame
    cv::namedWindow("Extracted Frame");
    // Delay between each frame in ms
    // corresponds to video frame rate
    int delay= 1000/rate;
    // for all frames in video
    while (!stop) {
    // read next frame if any
   if (!capture.read(frame))
   break;
   cv::imshow("Extracted Frame",frame);
   // introduce a delay
   // or press key to stop
   if (cv::waitKey(delay)>=0)
   stop= true;
   }
 // Close the video file.
 // Not required since called by destructor
 capture.release();
 }

Upvotes: 0

Views: 1014

Answers (1)

K-os
K-os

Reputation: 248

Your main() function is never executed. The only thing, that gets executed is _tmain(), which does nothing and returns immediately.

I haven't done much Windows programming in a while, but if I remember correctly this is how it works: When Unicode is enabled for your compiler

int _tmain(int argc, _TCHAR* argv[])

gets compiled as

int wmain(int argc, wchar * argv[])

which is then used as the program entry point.

Since you seem not to be using any Windows-APIs in your code I would ignore the Microsoft specific way of doing multibyte character strings, which is non-portable, and simply use plain ASCII strings as you did in the main() function, that you intended to use.

So to solve your problem simply throw out the _tmain() function. Maybe you also need to disable Unicode in your project settings if you get linker errors.

Upvotes: 1

Related Questions