opencv怎么写视频文件

opencv怎么写视频文件,第1张

#include <cv.h>#include <highgui.h>int main(int argc, char **argv)

{

    CvCapture* capture = NULL

    capture = cvCreateFileCapture("红动中国设计网视频素材2185.avi")    if (!capture) return -1    //获取视频的第一帧 并存在bgr_frame

    IplImage *bgr_frame = cvQueryFrame(capture)    //获得视频的总帧数 CV_CAP_PROP_FPS 帧率

    double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS) 

    //获得原始视频的高度和宽度

    CvSize size = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),

        (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT))    ///创建一个视频文件参数分别表示  新建视频的名称 视频压缩的编码格式 新建视频的帧率 新建视频的图像大小

    CvVideoWriter *writer = cvCreateVideoWriter("1ai.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, size)    //创建首地址 并分配存储空间

    IplImage* logpolar_frame = cvCreateImage(size, IPL_DEPTH_8U, 3)    凳信模// 获取视频的下一帧

    while ((bgr_frame = cvQueryFrame(capture)) != NULL)

    {        //将视频从笛卡尔坐标系转到极坐标系 参数分别表示 输入图像 输出图坦凯像 变换中心 尺度参数 填充输出图像所有参数 + CV_INTER_LINEAR 表示双线性参值(具体什么意思)

        cvLogPolar(bgr_frame, logpolar_frame, cvPoint2D32f(bgr_frame->width / 2, bgr_frame->height / 2), 80, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS)        //将获取到的每一枣缓帧从笛卡尔坐标系转到极坐标系后的参数 存到新建的视频文件        cvWriteFrame(writer, logpolar_frame)        //将获取的视频通过mainwin窗口进行展示

        cvShowImage("mainwin", logpolar_frame)        char c = cvWaitKey(33)        //ESC 默认退出

        if (c == 27) break

    }    //释放程序中申请的空间

    cvReleaseVideoWriter(&writer)

    cvReleaseImage(&logpolar_frame)

    cvReleaseCapture(&capture)    return(0)

}

内存能为"Read"或"written"(原因以及解决方案):

(【sql1981】原创答案,引用请说明原作者:sql1981,未通知原作者严禁复制本答案!!)

系统出现内存不能为"Read"或"written"的原因:

1、驱动不稳定,与系统不兼容,这最容易出现内存不能为 Read 或者文件保护

2、系统安装了一个或者多个流氓软件,这出现 IE 或者系统崩溃的机会也比较大,也有可能出现文件保护

3、系统加载的程序或者系统正在运行的程序之间有冲突,尤其是部分杀毒软件监控程序

4、系统本身存在漏洞,导致容易受到网络攻击。

5、病毒问题也是主要导致内存不能为 Read、文件保护、Explorer.exe 错误……

6、如果在玩游戏时候出现内存不能为 Read,则很大可能是显卡驱动不适合(这里的不适合有不适合该游戏、不适合电脑的显卡),也有可能是 DX9.0C 版本不够新或者不符合该游戏、显卡驱动

7、部分软件本身自身不足的问题

8、电脑硬件过热,也是导致内存不能为 Read 的原因之一。

9、电脑内存与主板兼容性不好也是导致内存不能为 Read 的致命原因!

提供几种解决方案:

1、一次运行注册所有dll,方法如下:

开始——运行,输入cmd 回车在命令提示符下输入

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

这个命令你晌皮慢慢输,仔细点,输入正确的话会看到飞快地滚屏 否则……否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再尝试之前的 *** 作,看还有没有出现不能为read的现象。

2、在控制面板的添加/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。

另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。

如果以上两种方法并不能完全解决问题,你试着用一下360安全卫士的的“IE修复”或其他类似软件,轮启并可以查查是否有病毒之类的。〔微软NET.Framework升级到1.1版应该没问题了〕

3、引起这个问题的原因很多。一般来讲就是给系统打上补丁宴桐差和更换内存、给内存换个插槽这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8174614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存