所以我有一个int **
. 它包含像素值。我想要做的是改变一组像素值的值;假设值为 90,我想将其更改为它必须创建 x 像素量的黑色边缘的最大级别。过去一个小时我一直在搞乱它,似乎无法弄清楚如何更改 ** 中的实际值
这是我到目前为止所拥有的:
int pgmDrawEdge( int **pixels, int numRows, int numCols, int edgeWidth, char **header ){
int i=0, j=0, count=0;
int intensity=atoi(header[2]);
while(count<edgeWidth){
for(; i<numRows; i++){
for(; j<numCols; j++){
pixels[i][j]=intensity;
}
}
count++;
}
return 0;
}
这是主函数调用:
pgmDrawCircle(pixel, rows, cols, circleCenterRow, circleCenterCol, radius, header);
我认为我的想法是正确的,但就像我上面提到的那样,我似乎无法弄清楚如何让价值发生变化。
我不认为我这样做,但我需要分配内存吗?它是从主系统传入的,所以我认为我不需要,因为它已经满了......对吗?
根据要求,这里是 pgmRead:
int ** pgmRead( char **header, int *numRows, int *numCols, FILE *in ){
int i, j, temp, intensity;
fgets(header[0], maxSizeHeadRow, in);
fgets(header[1], maxSizeHeadRow, in);
fscanf(in, "%d %d", numCols, numRows);
fscanf(in, "%d", &intensity);
sprintf(header[2], "%d", intensity);
int **ptr=(int **)malloc(*numRows*sizeof(int *));
for(i=0; i<*numRows; i++){
ptr[i]=(int *)malloc(*numCols*sizeof(int));
}
for(i=0; i<*numRows; i++){
for(j=0; j<*numCols; j++){
fscanf(in, "%d", &temp);
ptr[i][j]=temp;
}
}
fclose(in);
return ptr;
}
在主函数中:
int **pixel=NULL;
pixel=pgmRead(header, &rows, &cols, in);
if(strcmp(argv[1],"-e")==0){
printf("Edge Drawing\n");
pgmDrawEdge(pixel, rows, cols, edgeWidth, header);
}