0

以下java opencv代码:

IplImage image = cvCreateImage(cvSize(100, 100), IPL_DEPTH_8U, 3);
cvSaveImage("d:/tmp/test.png", image);

创建以下图像:

创建的图像

这似乎是未清除的缓冲区或某些指针逻辑错误。我应该先调用 cvCreateImage 后清除图像吗?如何清除缓冲区?

4

2 回答 2

0

检查 C 代码,我没有看到清除分配数组的代码。它只包含随机数据。

将所有像素设置为单个值的 java 调用是:

cvSet(image, CV_RGB(0, 0, 0));

我认为应该在文档中提到,调用者有责任清除数据。我们 java 的人习惯于构造函数清除缓冲区,即使我们知道有时这可能是不必要的工作。

于 2013-03-11T07:27:32.530 回答
0

我认为这是更短的方式:

cvZero(image);

(可以清除所有频道)

于 2014-02-23T10:34:03.760 回答