#include "FrameProducer.h"
#include <iostream>
class FrameFromCamera: public FrameProducer {
public:
FrameFromCamera();
virtual ~FrameFromCamera();
cv::Mat giveFrame();
bool isend();
std::string getFilename() {
return "camera";
}
private:
cv::VideoCapture cap;
};
#endif /* FRAMEFROMCAMERA_H_ */
#include "FrameFromCamera.h"
FrameFromCamera::FrameFromCamera() {
cap.open(0);
if( !cap.isOpened() )
{
std::cerr << "Failed to open capture device" << std::endl;
exit(2);
}
}
FrameFromCamera::~FrameFromCamera() {
}
cv::Mat FrameFromCamera::giveFrame() {
cv::Mat frame;
// keep hoping to receive a frame
do {
cap >>frame;
std::cout << "." << std::endl;
} while(frame.empty());
return frame;
}
bool FrameFromCamera::isend() {
return false;
}
调用先申明结构体变量,再通过->或者 .来调用结构体成员函数 give frame
FrameFromCamera a;
cv::Mat Frame = a.giveFrame();