2

我有一个关于从更大的图像(矩阵)中提取子图像(子矩阵)的编程问题。我有两个点(我要提取的子图像的上限和下限),我想根据这些点从较大的子图像中提取子图像。但我找不到如何用 C/C++ 做瘦。

我知道用matlab很容易做到。假设这两个点是 (x_max,y_max) 和 (x_min,y_min)。要提取子图像,我只需要编写以下代码:

(MATLAB CODE)-> small_image=big_image(x_min:x_max,y_min,y_max); 

但是在 C 中,我不能像使用 Matlab 那样使用 : 的索引间隔。这里有人遇到过这个问题吗?

4

2 回答 2

2

如果您使用 C/C++ 进行图像处理,您可能应该使用OpenCV

cv::Mat 类可以使用感兴趣区域 (ROI)来做到这一点。

于 2013-08-23T14:40:47.070 回答
1

在直接的 c++ 中,您将使用循环。

int* small_im[]; // or whatever the syntax is

int i = 0, j = 0;
for (i = 0; i < (x_max-x_min); i++)
{
    for (j = 0; j < (y_max-y_min); j++)
    {
      small_im[i][j] = big_im[x_min+i][y_min+j];
    }
}
于 2013-08-23T19:37:21.877 回答