【问题标题】:How to save image from cvNamedWindow如何从 cvNamedWindow 保存图像
【发布时间】:2012-05-30 22:59:58
【问题描述】:

我需要保存已在 cvNamedWindow 中显示的图像。问题是源图像可能已经更改,所以我需要以某种方式从窗口中获取它。 作为替代解决方案,当前显示的帧可以保存在 IplImage 对象中,但也许有人知道如何直接从 cvNamedWindow 获取 IplImage? 提前致谢。 PS。在c++项目中使用opencv。

【问题讨论】:

    标签: c++ c opencv


    【解决方案1】:

    如果你需要这样做,那你就错了。

    假设您正在使用一个多线程应用程序,该应用程序在第一个线程中捕获帧,并在第二个线程中使用cvNamedWindow() 显示它们。在这种情况下,您需要防止这两个线程同时访问该帧:调查互斥锁

    如果您的应用程序只有一个线程,您只需在调用 cvNamedWindow() 之前执行 cvWriteFrame() 以将帧保存到磁盘,或使用以下命令将帧复制到另一个 IplImage

    IplImage* copy_img = cvCreateImage(cvGetSize(orig_img), orig_img->depth, orig_img->nChannels);
    
    cvCopy(orig_image, copy_img, NULL); 
    

    只是不要忘记在完成后释放图像以释放分配的资源。

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多