我可以在自己的自定义数据2D数组上使用opencv cvResize()函数吗?如果是的如何?

时间:2011-06-30 17:24:36

标签: opencv resampling

目标:

我正在尝试使用openCV函数cvResize()来重新采样2D数组。[我在opencv中使用cvResize有一个工作代码,我知道它的用法]但是我要重新采样的输入2D数组不是任何图像读取通过openCV使用cvLoadImage()代替 -

1.我想从我拥有的文本文件中读取2D数组。该文件中包含浮点值。我将使用opencv库在此测试代码中打开该文件,读取浮点数的二维数组中的值。

2.然后使用cvResize()调整大小。首先,我想对其进行下采样 - 宽度/ 2,高度/ 2。

3.然后我要将其上采样4宽* 4,高* 4。这是我最后的2D阵列。

4.将最终的2D数组存储为文本文件作为浮点值。

5.基本上我想使用OpenCV使用的双线性插值逻辑,但是我自己的数据。我可以在哪个路径/哪个文件中看到cvResize()的代码?

任何指示赞赏。

2 个答案:

答案 0 :(得分:1)

您可以在自定义数据之上使用Mat包装,然后继续将其用作普通的Mat对象。您将使用的构造函数是:

Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)

答案 1 :(得分:1)

这里的困难似乎是您正在使用数据类型(2D数组)来存储从文件中读取的数据,这与cvResize()使用的内容不兼容(它是IplImage* ?)。

如果您正在使用OpenCV的C接口(并通过观察我知道您的其他问题),在成功将文件中的数据读取到您的自定义数据类型(2D数组?)之后,您需要创建一个{{ 1}}足以存储此信息。

IplImage * cv_data_img = cvCreateImage(cvSize(custom_data_height,custom_data_width),IPL_DEPTH_32F,1);

之后,您将不得不重复IplImage*复制原始数据。

一旦cv_data_img填满了数据,您就可以创建其他cv_data_img来存储IplImage*的结果。

最后,您可以迭代生成的cvResize()并将其复制回原始数据类型(2D数组)或随意执行任何操作。