本文整理汇总了C++中cv::VideoWriter::isOpened方法的典型用法代码示例。如果您正苦于以下问题:C++ VideoWriter::isOpened方法的具体用法?C++ VideoWriter::isOpened怎么用?C++ VideoWriter::isOpened使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cv::VideoWriter
的用法示例。
在下文中一共展示了VideoWriter::isOpened方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: operator
void operator()(const cv::Mat& image,bool record)
{
// no image no fun
if (image.empty()) return;
int cF = currentFrame ? 1 : 0;
int pF = currentFrame ? 0 : 1;
// resize the image
cv::resize(image,frames[cF],cv::Size(image.cols*scale,image.rows*scale),0,0,cv::INTER_LINEAR);
std::cout << "Current: " << cF << " Previous: " << pF << std::endl;
std::cout << "Image " << image.size() << " c:" << image.channels() << " > " << frames[cF].size() << std::endl;
if (record && !output.isOpened())
{
// fourcc
int fourCC = FourCC<'X','V','I','D'>::value;
// set framerate to 1fps - easier to check in a standard video player
if (output.open("flow.avi",fourCC,25,frames[cF].size(),false))
{
std::cout << "capture file opened" << std::endl;
}
}
// make a copy for the initial frame
if (frames[pF].empty())
frames[cF].copyTo(frames[pF]);
if (!flow.empty())
flow = cv::Mat::zeros(flow.size(),flow.type());
// calculate dense optical flow
cv::calcOpticalFlowFarneback(frames[pF],frames[cF],flow,.5,2,8,3,7,1.5,0);
// we can't draw into the frame!
cv::Mat outImg = frames[cF].clone();
drawOptFlowMap(flow,outImg,8,cv::Scalar::all(255));
cv::imshow("Flow",outImg);
// flip the buffers
currentFrame = !currentFrame;
// record the frame
if (record && output.isOpened())
output.write(outImg);
}
示例2:
~DetectFromVideo()
{
if (vWriter.isOpened())
{
vWriter.release();
}
};
示例3: rgbCallback
/**
* Callback function for the rgb image. Saves each image received
* as a message on the rgb video, using the rgb video writer.
*
* @param msg a ROS image message.
*/
void rgbCallback(const sensor_msgs::ImageConstPtr &msg)
{
cv_bridge::CvImagePtr cv_ptr;
// Copies the image data to cv_ptr and handles exceptions
try
{
cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);
}
catch (cv_bridge::Exception &e)
{
ROS_ERROR("cv_bridge exception: %s", e.what());
return;
}
// Check for invalid image
if (!(cv_ptr->image.rows) || !(cv_ptr->image.cols))
{
ROS_ERROR("cv_ptr error: invalid image frame received");
exit(-1);
}
// Opens the rgb video writer if it's not opened yet.
if (!is_open_rgb)
{
std::string rgb_name = ros::package::getPath("vision") + "/data/rgb_video.avi";
rgb_writer.open(rgb_name.c_str(), CV_FOURCC('P','I','M','1'),
25, cv::Size(cv_ptr->image.cols, cv_ptr->image.rows),true);
if (!rgb_writer.isOpened()) ROS_ERROR("Error! Could not open rgb video writer!");
else is_open_rgb = true;
}
rgb_writer << cv_ptr->image; // Saves the rgb image on the rgb video.
}
示例4: recordColor
bool recordColor(const QString& file, int fourcc)
{
//const int fourcc = CV_FOURCC('L', 'A', 'G', 'S');
//const int fourcc = CV_FOURCC('X', '2', '6', '4');
//const int fourcc = CV_FOURCC('Z', 'L', 'I', 'B');
//const int fourcc = CV_FOURCC('M', 'J', 'P', 'G');
//const int fourcc = CV_FOURCC_PROMPT;
//const int fourcc = CV_FOURCC('H', 'F', 'Y', 'U');
//int fourcc = CV_FOURCC('H', 'F', 'Y', 'U');
colorFile = (file + ".avi").toStdString();
colorWriter.open(
colorFile,
fourcc,
30.0,
cv::Size(ColorFrame::WIDTH, ColorFrame::HEIGHT),
true
);
if (colorWriter.isOpened()) {
colorBuffer.create(cv::Size(ColorFrame::WIDTH, ColorFrame::HEIGHT), CV_8UC3);
colorFrame = new ColorFrame();
return true;
}
colorFile.clear();
return false;
}
示例5: recordDepth
bool recordDepth(const QString& file, int fourcc)
{
depthFile = (file + ".avi").toStdString();
depthWriter.open(
depthFile,
fourcc,
30.0,
cv::Size(DepthFrame::WIDTH, DepthFrame::HEIGHT),
true
);
if (depthWriter.isOpened()) {
depthBuffer.create(cv::Size(DepthFrame::WIDTH, DepthFrame::HEIGHT), CV_8UC3);
depthFrame = new DepthFrame();
return true;
}
depthFile.clear();
return false;
}
示例6: write
/**
動画ファイルに書き込み
*/
bool write(){
if( videoWriter.isOpened()){
cv::Size size = cv::Size(glutGet(GLUT_WINDOW_WIDTH),glutGet( GLUT_WINDOW_HEIGHT));
if(size.width == captureImage.cols && size.height == captureImage.rows){
#ifndef USE_TEXTURE_2D
glReadPixels(0,0, captureImage.cols,captureImage.rows,GL_RGB,GL_UNSIGNED_BYTE,captureImage.data);
#else
glCopyTexImage2D( GL_TEXTURE_2D,0,GL_RGB,0,0,captureImage.cols,captureImage.rows,0);
glGetTexImage(GL_TEXTURE_2D,0,GL_RGB,GL_UNSIGNED_BYTE,captureImage.data);
#endif
}
else{ //ウィンドウが拡大縮小されている場合
size.width -= size.width % 4; //4の倍数にする
cv::Mat temp(size,CV_8UC3);
#ifndef USE_TEXTURE_2D
glReadPixels(0,0, size.width,size.height,GL_RGB,GL_UNSIGNED_BYTE,temp.data);
#else
glCopyTexImage2D( GL_TEXTURE_2D,0,GL_RGB,0,0,size.width,size.height,0);
glGetTexImage(GL_TEXTURE_2D,0,GL_RGB,GL_UNSIGNED_BYTE,temp.data);
#endif
cv::resize(temp,captureImage,captureImage.size(),0.0,0.0,interpolation);
}
cvtColor(captureImage,captureImage,CV_RGB2BGR);
flip(captureImage,captureImage,0);
videoWriter << captureImage;
//char key = cv::waitKey(1);
//std::ostringstream oss;
//oss << name << count << ".bmp";
//if(key == 's'){
// cv::imwrite(oss.str(), captureImage);
// count++;
//}
return true;
}
else
return false;
}