zoukankan      html  css  js  c++  java
  • OpenCV学习笔记: 一 (20151109)

    配置环境: win10 - 64位 , Opencv 3.0, VS2013

    1.配置环境

    http://demo.netfoucs.com/u013647382/article/details/42557479

    2.测试代码:

    代码1:

    //测试
    //显示图片
    #include "highgui.h"

    int main()
    {
    char* windowName = "显示图片";
    IplImage* image = cvLoadImage("F:\Pictures\libao2.png");
    cvNamedWindow(windowName, 1);
    cvShowImage(windowName, image);
    cvWaitKey(0);
    cvDestroyWindow(windowName);
    cvReleaseImage(&image);
    return 0;
    }

    代码2:

    //测试
    //播放视频
    #include "highgui.h"

    int main()
    {
    char* windowName = "播放视频";
    cvNamedWindow(windowName, CV_WINDOW_AUTOSIZE);
    CvCapture* capture = cvCreateFileCapture("F:\Pictures\video.mp4");
    IplImage* frame;
    while (1)
    {
    frame = cvQueryFrame(capture);
    if (!frame)
    break;
    cvShowImage(windowName, frame);
    char c = cvWaitKey(33);//wait 33 ms
    if (c == 27)//Esc
    break;
    }
    cvReleaseCapture(&capture);
    cvDestroyWindow(windowName);
    return 0;
    }

    代码3: 

    //测试
    //视频播放控制
    #include "cv.h"
    #include "highgui.h"

    int g_slider_positon = 0;
    CvCapture* g_capture = NULL;

    void OnTrackbarSlide(int pos)
    {
    //设置视频帧数
    cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES,pos);
    }
    int main()
    {
    char* windowName = "视频播放控制";
    cvNamedWindow(windowName, CV_WINDOW_AUTOSIZE);
    g_capture = cvCreateFileCapture("F:\Pictures\video.mp4");
    //获取视频帧数,创建滑动条
    int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
    if (frames != 0)
    {
    cvCreateTrackbar("Position", windowName, &g_slider_positon, frames, OnTrackbarSlide);
    }
    IplImage* frame;
    while (1)
    {
    frame = cvQueryFrame(g_capture);
    if (!frame)
    break;
    cvShowImage(windowName, frame);
    char c = cvWaitKey(33);//wait 33 ms
    if (c == 27)//Esc
    break;
    }
    cvWaitKey(0);
    cvReleaseCapture(&g_capture);
    cvDestroyWindow(windowName);
    return 0;
    }

    代码4:

    //测试
    //对图像进行平滑处理
    #include <cv.h>
    #include <highgui.h>

    void main()
    {
    char* windowInName = "图片平滑前";
    char* windowOutName = "图片平滑后";
    IplImage* image = cvLoadImage("F:\Pictures\libao2.png");
    cvNamedWindow(windowInName);
    cvNamedWindow(windowOutName);
    cvShowImage(windowInName, image);
    IplImage* out = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 3);

    cvSmooth(image, out, CV_GAUSSIAN, 3, 3);
    cvShowImage(windowOutName, out);
    cvReleaseImage(&out);
    cvWaitKey(0);
    cvDestroyWindow(windowInName);
    cvDestroyWindow(windowOutName);
    }

    代码5:

    //测试
    //创建一幅宽高为输入图像一半尺寸的图像
    //确保图片像素的宽高都为偶数
    #include "cv.h"
    #include "highgui.h"

    IplImage* dpPyrDown(IplImage* in, int filter = IPL_IMAGE_ROI)
    {
    assert(in->width % 2 == 0 && in->height % 2 == 0);
    IplImage* out = cvCreateImage(CvSize(in->width / 2, in->height / 2), in->depth, in->nChannels);
    cvPyrDown(in, out);
    return out;
    }
    int main()
    {
    char* windowName = "压缩图像尺寸为原来的一半";
    cvNamedWindow(windowName, CV_WINDOW_AUTOSIZE);
    IplImage* image = cvLoadImage("F:\Pictures\libao2.png");
    cvShowImage(windowName, dpPyrDown(image, 4));
    cvWaitKey(0);
    cvReleaseImage(&image);
    cvDestroyWindow(windowName);
    }

  • 相关阅读:
    垂直同步
    C++ RAII
    C++ RAII
    LCD刷新率和垂直同步的设置
    ping结果中TTL是什么意思
    垂直同步
    stage.frameRate改变帧频
    ping结果中TTL是什么意思
    stage.frameRate改变帧频
    ping 命令的原理,揭开单向“Ping”通的奥秘
  • 原文地址:https://www.cnblogs.com/sbCat/p/4949749.html
Copyright © 2011-2022 走看看