gpt4 book ai didi

c++ - 将图像拆分为 64x64 block

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:34 25 4
gpt4 key购买 nike

我只是想知道如何将像素阵列(R、G、B、A、R、G、B、A、R、G、B、A 等)拆分为 64x64 block 。我自己尝试了几种方法,但它们似乎都过于复杂且有点过于困惑。

我有以下变量(显然填充了信息):

int nWidth, nHeight;
unsigned char *pImage;

基本上对于我想调用的每个 block :

void ProcessChunk(int x, int y, int width, int height)

你可能想知道为什么处理函数有widthheight参数,但是如果图像不能被64整除,那么就会有更小的图像边缘的 block (右侧和底部)。请参阅此图片以更好地理解我的意思(红色 block 是将具有 <64 宽度高度 参数的 block )。

Chunk diagram

提前致谢。

最佳答案

只要定义一个MIN()宏来确定两个表达式中的最小值,然后就很简单了:

void ProcessChunk(unsigned char *pImage, int x, int y, int width, int height);

#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define CHUNKSIZE 64

void ProcessImage(unsigned char *pImage, int nWidth, int nHeight)
{
int x, y;

for (x = 0; x < nWidth; x += CHUNKSIZE)
for (y = 0; y < nHeight; y += CHUNKSIZE)
ProcessChunk(pImage, x, y, MIN(nWidth - x, CHUNKSIZE), MIN(nHeight - y, CHUNKSIZE));
}

关于c++ - 将图像拆分为 64x64 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3696616/

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