任何人都帮助我,我正在尝试运行代码来从文件夹中的视频中读取帧,但是在构建时成功但是在调试时没有任何输出
*我使用Visual Studio 2012,opencv 2.4.11版本
代码是:
#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();
}
答案 0 :(得分:1)
您的main()
函数永远不会执行。执行的唯一事情是_tmain()
,它什么也不做,立即返回。
我暂时没有做过很多Windows编程,但如果我没记错的话,这就是它的工作原理: 为编译器启用Unicode时
int _tmain(int argc, _TCHAR* argv[])
编译为
int wmain(int argc, wchar * argv[])
然后用作程序入口点。
由于您似乎没有在代码中使用任何Windows-API,因此我会忽略Microsoft执行多字节字符串的特定方式,这是不可移植的,并且只需使用普通的ASCII字符串,就像在{{1你准备使用的函数。
因此,要解决您的问题,只需抛弃main()
函数即可。如果您遇到链接器错误,也许还需要在项目设置中禁用Unicode。