gpt4 book ai didi

C矩阵 "crop"函数

转载 作者:行者123 更新时间:2023-11-30 19:36:19 24 4
gpt4 key购买 nike

我得到了一个尺寸为宽度x高度的元素矩阵,该矩阵是动态分配的。我需要“裁剪”由以下矩形定义的该矩阵的一部分: (start_col, start_line) (end_col, end_line)

<小时/>

示例:

给定矩阵(3*3):

1 2 3
4 5 6
7 8 9

坐标: (1, 1) (1, 1)

结果矩阵是:

5

我该怎么做?

<小时/>

我的矩阵由如下结构元素组成:

typedef struct Pixel{
int R;
int G;
int B;
}Pixel;

所以我像这样声明并分配了矩阵:

Pixel** img;

img = (Pixel**)malloc(height*sizeof(Pixel*));
for (int i = 0; i <= height-1; i++){
img[i] = (Pixel*)malloc(width*sizeof(Pixel));
}

// ...
//code to populate matrix

现在我应该如何使用 realloc 来保留我需要的小子矩阵?

最佳答案

您可以分配与列相同的行(因此它们只是指向像素的指针,而不是像素本身),然后您可以:

  • 创建“较小”的表格并将像素引用到新表格(并且可能可以免费使用一次)
  • 将它们移动到启动位置并重新分配整个矩阵
  • 将所有“未使用”的像素设置为 NULL,所有非 NULL 的像素都是您的裁剪图像。
  • 返回裁剪起始点的结构体或指针(起始像素的[x][y],或指向像素的指针)。和裁剪的宽度[右侧有多少像素]/高度[左侧有多少像素] - 这样您就不必更改结构,只需处理裁剪后的图像即可。

关于C矩阵 "crop"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com