首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opencv imread a frame

Opencv imread a frame
EN

Stack Overflow用户
提问于 2016-09-26 02:51:12
回答 1查看 1.7K关注 0票数 0

我最近使用了这段代码来保存来自网络摄像头的帧数据

代码语言:javascript
复制
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv2/opencv.hpp>
using namespace cv;

#include <fstream>
using namespace std;

int main(int argc, char** argv)
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened())  // check if we succeeded
    return -1;

cap.set(CV_CAP_PROP_FPS, 15);

Mat edges;
namedWindow("image", 1);
std::vector<cv::Mat> images(100);
for (int i = 0; i < 100; ++i) {
    // this is optional, preallocation so there's no allocation
    // during capture
    images[i].create(480, 640, CV_8UC3);
}
for (int i = 0; i < 100; ++i)
{
    Mat frame;
    cap >> frame; // get a new frame from camera
    frame.copyTo(images[i]);
}
cap.release();

for (int i = 0; i < 100; ++i)
{
    imshow("image", images[i]);
    if (waitKey(30) >= 0) break;
}

在此之后,我想使用imread来分析新拆分的帧。然而,我想不出一种方法来实现这一点。

我试过了:Mat colorImage = imread(images[i]);

但是,它会导致:

error C2664: 'cv::Mat cv::imread(const cv::String &,int)': cannot convert argument 1 from 'std::vector<cv::Mat,std::allocator<_Ty>>' to 'const cv::String &' with [ _Ty=cv::Mat ]

在此之前,非常感谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 07:18:37

imread函数用于从磁盘打开镜像。

你已经有了图像的向量,所以你只需要做:

Mat colorImage = imagesi;

顺便说一句。不需要这样做:

代码语言:javascript
复制
for (int i = 0; i < 100; ++i) {
    // this is optional, preallocation so there's no allocation
    // during capture
    images[i].create(480, 640, CV_8UC3);
}

因为您无论如何都要分配新的空间,除非您像这样直接捕获帧:

代码语言:javascript
复制
cap >> images[i];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39690566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档