我有一个关于从更大的图像(矩阵)中提取子图像(子矩阵)的编程问题。我有两个点(我要提取的子图像的上限和下限),我想根据这些点从较大的子图像中提取子图像。但是我找不到如何使用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一样。这里有人遇到过这个问题吗?
答案 0 :(得分:2)
如果您在C / C ++中进行图像处理,则应该使用OpenCV。
cv::Mat class可以使用Region Of Interest (ROI)执行此操作。
答案 1 :(得分: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];
}
}