X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=src%2FVideoReader.cpp;fp=src%2FVideoReader.cpp;h=22036cb2b52e8226d1e65e78a8f52f133aed5565;hb=642ffd9803b9be0439124d1aebe2780fcbabeb07;hp=0000000000000000000000000000000000000000;hpb=1b934c140121afb99a62fd7b7741b6ca4b1077e4;p=trackerpp.git diff --git a/src/VideoReader.cpp b/src/VideoReader.cpp new file mode 100644 index 0000000..22036cb --- /dev/null +++ b/src/VideoReader.cpp @@ -0,0 +1,69 @@ +#include "VideoReader.h" +#include "Logger.h" + +using namespace suanzi; +using namespace cv; + +const static std::string TAG = "VideoReader"; + +VideoReader* VideoReaderFactory::createVideoReader(VideoSrcType type, const std::string& url) +{ + VideoReader* v = nullptr; + switch(type){ + case VideoSrcType::URL: + v = new UrlReader(type, url); + break; + case VideoSrcType::File: + v = new FileReader(type, url); + break; + case VideoSrcType::USB: + v = new UsbReader(type, url); + break; + default: + break; + } + return v; +} + +VideoReader::~VideoReader() +{ + LOG_DEBUG("video", "init"); +} + + +UrlReader::UrlReader(VideoSrcType type, const std::string& url) : VideoReader(type, url) +{ + LOG_DEBUG(TAG, "UrlReader, open " + url); + vcap.open(url); + if (!vcap.isOpened()){ + LOG_ERROR(TAG, "open video " + url); + throw std::runtime_error("Cannot open video url " + url); + } +} + +UrlReader::~UrlReader() +{ +} + +bool UrlReader::read(cv::Mat& mat) +{ + bool ret = vcap.read(mat); + if (mat.empty()){ + LOG_ERROR(TAG, "blank frame grabbed"); + return false; + } + return ret; +} + +// +//void UrlReader::read() +//{ +//} +// +//void FileReader::read() +//{ +//} +// +//void UsbReader::read() +//{ +//}