HI!我创建了一个函数来获取图像的灰度版本,但我试图通过引用传递此函数生成的位的目标时遇到问题:
void grayscale (const unsigned char *source, unsigned char **dest, int data_size) {
for (int i=0; i < data_size; i= i+4) {
int gray = (source[i] + source[i+1] + source[i+2]) / 3;
gray = 255 - (int)cos(source[i])*255;
*dest[i] = (char)gray;
*dest[i + 1] = (char)gray;
*dest[i + 2] = (char)gray; //HERE AN ERROR
*dest[i + 3] = (char)255;
}
}
Run Code Online (Sandbox Code Playgroud)
我用这个函数调用:
grayscale(source, &destination, width*height*4 );
Run Code Online (Sandbox Code Playgroud)
指针有问题吗?(我正在研究目标C,我获得了EXC_BAD_ACCESS).
谢谢
目前尚不清楚为什么要使用额外的间接级别dest,因为*dest没有被修改,但很可能你需要做以下事情 - 更改:
*dest[i] = (char)source[i];
*dest[i + 1] = (char)gray;
*dest[i + 2] = (char)gray;
*dest[i + 3] = (char)255;
Run Code Online (Sandbox Code Playgroud)
至:
(*dest)[i] = (char)source[i];
(*dest)[i + 1] = (char)gray;
(*dest)[i + 2] = (char)gray;
(*dest)[i + 3] = (char)255;
Run Code Online (Sandbox Code Playgroud)
其原因是运算符优先级/关联性.
如果没有看到调用代码也很难说,但我猜你可能需要改变:
(*dest)[i] = (char)source[i];
Run Code Online (Sandbox Code Playgroud)
至:
(*dest)[i] = (char)source[i / 4];
Run Code Online (Sandbox Code Playgroud)
如果您正在尝试将单个平面图像转换为RGBA.
| 归档时间: |
|
| 查看次数: |
1011 次 |
| 最近记录: |