-1
我正在使用更改位图图像的程序。我想要做的只是将图像翻转180度,但无论我做什么,我要么摧毁标题,要么导致分段错误,要么模糊混乱。像素保持像素数据,每个数组元素是像素的单独颜色。这里是我的翻转图像代码:翻转c中的图像
通过逆转每一行(当时的规划扭转每一列)
for(r = 0; r < 1; r++) {
j = ((WIDTH * 3) - 3);
i = 0;
while(i < j) {
memmove(temp, &pixels[r][i], 3);
memmove(&pixels[r][i], &pixels[r][j], 3);
memmove(&pixels[r][j], temp, 3);
i += 3;
j -= 3;
}
}
通过旋转180度
unsigned char pixels2[HEIGHT][WIDTH * 3];
for(r = 0; r < HEIGHT; r++) {
for(c = 0; c < (WIDTH * 3) - 3; c += 3) {
memmove(&pixels2[HEIGHT - r][(WIDTH * 3) - c], &pixels[r][c], 1);
}
}
我知道我破坏记忆莫名其妙,但对于我的生活我无法弄清楚如何。任何帮助,将不胜感激。
你操纵什么图像格式? R,G和B的这个RGB是三位字节还是RGB独立平面?它可能是16位格式的RGBA或RGB? – tadman
考虑使用一些库,也许[OpenCV](http://opencv.org/);并使用调试器 –
它是BGR。每个像素颜色都存储为一个无符号字符 –