【发布时间】:2012-05-30 22:59:58
【问题描述】:
我需要保存已在 cvNamedWindow 中显示的图像。问题是源图像可能已经更改,所以我需要以某种方式从窗口中获取它。 作为替代解决方案,当前显示的帧可以保存在 IplImage 对象中,但也许有人知道如何直接从 cvNamedWindow 获取 IplImage? 提前致谢。 PS。在c++项目中使用opencv。
【问题讨论】:
我需要保存已在 cvNamedWindow 中显示的图像。问题是源图像可能已经更改,所以我需要以某种方式从窗口中获取它。 作为替代解决方案,当前显示的帧可以保存在 IplImage 对象中,但也许有人知道如何直接从 cvNamedWindow 获取 IplImage? 提前致谢。 PS。在c++项目中使用opencv。
【问题讨论】:
如果你需要这样做,那你就错了。
假设您正在使用一个多线程应用程序,该应用程序在第一个线程中捕获帧,并在第二个线程中使用cvNamedWindow() 显示它们。在这种情况下,您需要防止这两个线程同时访问该帧:调查互斥锁。
如果您的应用程序只有一个线程,您只需在调用 cvNamedWindow() 之前执行 cvWriteFrame() 以将帧保存到磁盘,或使用以下命令将帧复制到另一个 IplImage:
IplImage* copy_img = cvCreateImage(cvGetSize(orig_img), orig_img->depth, orig_img->nChannels);
cvCopy(orig_image, copy_img, NULL);
只是不要忘记在完成后释放图像以释放分配的资源。
【讨论】: