zoukankan      html  css  js  c++  java
  • Opencv读取图片和视频

    读取图片

    imread()用来读取图片,可以是多种格式的
    Imread根据文件名确定要读取的文件,自动分配图像数据所需的内存。Imread()可以读取多种图像格式,包括BMP,DIB,JPEG,JPE,PNG,PBM,PGM,PPM,SR,RAS和TIFF。
    If(Img.empty()) return -1;用来检测图像是否被读取。
    namedWindow(),在屏幕上打开一个可以包含和显示图像的窗口。
    Imshow()用来显示图片;
    Waitkey()函数和用来停止函数并等待点击,若果参数设置为0或者负数,程序将无限期等待,若给定一个正数,程序将等待毫秒数。
    namedWindow(),在屏幕上打开一个可以包含和显示图像的窗口。
    destory()用来摧毁窗体本身,关闭窗口并释放任何相关的内存使用。

    读取视频

    用OpenCV播放视频几乎和显示一张图片一样简单。我们面临的唯一新问题是,我们需要某种循环来按顺序读取每一帧。
    int main() {
    cv::Mat fram;//实例化对象用来保存视频的每一帧
    cv::VideoCapture cap;//实例化视频捕获对象
    namedWindow("catchVideo", cv::WINDOW_AUTOSIZE);//命名窗口
    cap.open("juzi.mp4");//打开橘子视频,项目目录中
    while (1) {
    cap >> fram;
    if (!fram.data)break;
    cv::imshow("catchvideo", fram);
    if (cv::waitKey(33) >= 0)break;
    }
    return 0;
    }

    跟踪条滑块在视频中移动

    using namespace std;

    int g_slider_position = 0;
    int g_run = 1, g_dontset = 0; //start out in single step mode
    cv::VideoCapture g_cap;//定义视频捕获对象
    void onTrackbarSlide(int pos, void*) {
    g_cap.set(cv::CAP_PROP_POS_FRAMES, pos);
    if (!g_dontset)
    g_run = 1;
    g_dontset = 0;
    }

    int main(int argc, char** argv) {
    cv::namedWindow("Example2_4", cv::WINDOW_AUTOSIZE);
    g_cap.open("juzi.mp4");
    int frames = (int)g_cap.get(cv::CAP_PROP_FRAME_COUNT);
    int tmpw = (int)g_cap.get(cv::CAP_PROP_FRAME_WIDTH);
    int tmph = (int)g_cap.get(cv::CAP_PROP_FRAME_HEIGHT);
    cout << "Video has " << frames << " frames of dimensions("
    << tmpw << ", " << tmph << ")." << endl;
    cv::createTrackbar("Position", "Example2_4", &g_slider_position, frames,
    onTrackbarSlide);
    cv::Mat frame;
    while (1) {
    if (g_run != 0) {
    g_cap >> frame; if (!frame.data) break;
    int current_pos = (int)g_cap.get(cv::CAP_PROP_POS_FRAMES);
    g_dontset = 1;
    cv::setTrackbarPos("Position", "Example2_4", current_pos);
    cv::imshow("Example2_4", frame);
    g_run -= 1;
    }
    char c = (char)cv::waitKey(10);
    if (c == 's') // single step
    {
    g_run = 1; cout << "Single step, run = " << g_run << endl;
    }
    if (c == 'r') // run mode
    {
    g_run = -1; cout << "Run mode, run = " << g_run << endl;
    }
    if (c == 27)
    break;
    }
    return(0);
    }

  • 相关阅读:
    技术服务支持
    如何将Java Web项目部署到服务器上
    移动端前端开发——微信左上角返回按钮(JQMobile)
    Mac下phpstorm 浏览器出现 502 bad gateway 解决办法
    mysql sql语句大全
    复制自己的ssh-key
    PhpStorm环境搭建
    max下搭建XAMPP
    Cocopods第三方库管理工具创建Swift项目&OC项目就
    Swift-闭包
  • 原文地址:https://www.cnblogs.com/gzy918/p/14320126.html
Copyright © 2011-2022 走看看