• 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);
    }

  • 相关阅读:
    CF1260F
    牛客挑战赛34 A~E
    CSP-S2019游记&拆塔记
    6424. 【NOIP2019模拟2019.11.13】我的订书机之恋
    CF1257E/F
    6423. 【NOIP2019模拟11.11】画
    1222/2516. Kup
    Comet OJ
    浅析CSS定位
    css文字颜色渐变的3种实现
  • 原文地址:https://www.cnblogs.com/gzy918/p/14320126.html
Copyright © 2020-2023  润新知