【问题标题】:showing a very simple image in OpenCV在 OpenCV 中显示一个非常简单的图像
【发布时间】:2013-08-08 01:24:10
【问题描述】:

我是 OpenCV 的新手,我有一个非常简单的代码来制作白色图像并显示它:

IplImage* track=cvCreateImage(cvGetSize(frame1),IPL_DEPTH_8U,3);
cvSet(track,cvScalar(255,255,255));
cvShowImage("Result",track);

当我运行它时,我得到了这个错误:

OpenCV 错误:断言失败 (udata

为什么会这样?

【问题讨论】:

  • 我无法重现您的问题。可以发frame1的声明吗?
  • offtop:我建议你使用 cvMat

标签: c opencv


【解决方案1】:

只需检查你的 frame1 并确保它不是 NULL 。

【讨论】:

  • 不,不是。我查过了。
【解决方案2】:

我怀疑错误出在这条线上

cvCreateImage(cvGetSize(frame1),IPL_DEPTH_8U,3);

要验证错误来自何处,请尝试使用 cvSize(320,240) 而不是 cvGetSize(frame1)。如果它在那时有效,请检查 frame1 的大小(如果您发布代码来声明和初始化 frame1,我们可以为您提供更多帮助)。

【讨论】:

  • 我使用了这个:CvCapture* video= cvCreateFileCapture("D:\\A1.avi"); IplImage* frame1 = cvQueryFrame(video);但是很奇怪,当我按照你说的使用cvSize(320,240),想在单独的窗口中同时显示“frame1”和“track”时,没关系,没有问题。但是当我使用 cvGetSize(frame1) 时,错误又出现了。
  • cvQueryFrame 文档说“用户不应发布或修改返回的图像”。您在这里没有这样做,但使用访问器函数也可能存在问题。我检查了用于视频分析的代码,发现我总是先克隆图像。另一种可能性是 cvSize(frame1->width, frame1->height)。
猜你喜欢
  • 2020-02-10
  • 1970-01-01
  • 2021-07-14
  • 2014-10-24
  • 2013-10-31
  • 2019-10-19
  • 2017-05-31
  • 2011-07-02
  • 1970-01-01
相关资源
最近更新 更多