opencv读取图片并做成视频

#include <cv.h>

#include <highgui.h>
#include <stdio.h>
 
 
int main()
{
    IplImage *img=cvLoadImage("E://qt//intel_cup//SURF_H//A1.jpg",0);
    IplImage *img1=cvLoadImage("E://qt//intel_cup//SURF_H//A2.jpg",0);
    IplImage *temp=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
    CvVideoWriter * pwriter;
    pwriter=cvCreateVideoWriter("my.avi",0 ,20,cvGetSize(img),1);
   // printf("%x\n",pwriter);
    int num=100;
    while(num>0)
    {
        if(num%2==0)
            cvCopy(img,temp);
        else
            cvCopy(img1,temp);
        int result=cvWriteFrame(pwriter,temp);
        num--;
    }
    cvReleaseVideoWriter(&pwriter);
    cvReleaseImage(&img);
 
 
    //=======================================================
    CvCapture * capture = cvCreateFileCapture ("my.avi");  //读取视频
    if(capture==NULL)
    {
        printf("NO capture");    //读取不成功,则标识
        return 1;
    };
    
    /*
    double fps=cvGetCaptureProperty(capture, CV_CAP_PROP_FPS );   //读取视频的帧率
    int vfps = 1000 / fps;                                        //计算每帧播放的时间
    printf("%5.1f\t%5d\n",fps,vfps);
    double frames=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);//读取视频中有多少帧
    printf("frames is %f\n",frames);
    cvNamedWindow("example",CV_WINDOW_AUTOSIZE);                  //定义窗口
    IplImage * frame;
    while(1)
    {
        frame = cvQueryFrame( capture );
        if(!frame)
            break;
        float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO);     //读取该帧在视频中的相对位置
        printf("%f\n",ratio);
        cvShowImage("example",frame);                          //显示
        char c = cvWaitKey(vfps);
        if(c == 27 )break;
    }
    cvReleaseCapture(&capture);
    cvDestroyWindow("example");
 
    return 0;
}
 

 

OpenCV中,为了使显示图像的窗口大小可调整,我们使用的是`cv2.resizeWindow()`函数。这个函数允许我们在程序运行过程中动态地更改显示窗口的尺寸。这在需要适应不同分辨率屏幕或用户想要手动调整预览窗口大小的场景中非常有用。 下面是如何通过`cv2.resizeWindow()`来调整OpenCV窗口大小的示例步骤: 1. 首先导入必要的库,并读取图像数据: ```python import cv2 img = cv2.imread('path_to_your_image.jpg') ``` 2. 打开一个新的窗口并显示图像: ```python cv2.imshow("Initial Window", img) ``` 3. 使用`cv2.waitKey(0)`等待任意按键事件关闭窗口,默认值为0表示直到按下任意键才会继续执行后续代码。使用`cv2.destroyAllWindows()`可以在所有OpenCV窗口关闭时退出程序。 4. 若要将窗口大小调整为可调,你可以添加一段代码,在程序开始运行后立即或在适当的时候调用`cv2.resizeWindow()`函数: ```python window_name = "Resizing Example" # 调整初始窗口标题名,这里仅作为示例说明用途,实际应用中不需要修改 cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) # 显示初始窗口 cv2.imshow(window_name, img) while True: key = cv2.waitKey(1) & 0xFF if key == ord('q'): # 按 q 键退出循环 break elif key == ord('w'): cv2.resizeWindow(window_name, img.shape, img.shape*1.5) # 扩大 y 方向的大小比例 elif key == ord('s'): cv2.resizeWindow(window_name, img.shape*1.5, img.shape) # 扩大 x 方向的大小比例 elif key == ord('a'): cv2.resizeWindow(window_name, img.shape/2, img.shape/2) # 缩小窗口大小 # 更多自定义大小调整功能可以在此添加 cv2.destroyAllWindows() ``` 在这个例子中,用户可以通过键盘输入 `'w'`, `'s'`, `'a'` 来改变窗口的长宽比。当然,实际上可以根据需求自由定制更多交互选项,如通过滑动条(`cv2.createTrackbar()`)控制窗口尺寸等。 ### 相关问题: 1. **如何使用OpenCV调整视频播放速度而不影响图像清晰度?** 2. **OpenCV中如何实现鼠标点击事件处理来调整图像显示区域?** 3. **如何利用OpenCV对窗口进行高级布局管理,比如使用网格布局展示多张图片?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值