- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在做一个家庭作业项目,旋转一个简单的二维数组,其中包含 PGM 文件的 RGB 值。
我在这些论坛上阅读了很多关于如何在 C 中执行此操作的帖子,而且我几乎已经开始工作了。我的输出文件具有正确的尺寸并且已旋转,但顶部和侧面周围有黑色粗边框。我只是不知道我做错了什么。
任何帮助将不胜感激!
我修改了提供的代码here开始,这是我现在正在处理的 rotate90
函数:
PGMImage* rotate90(PGMImage *old_img)
{
int x, y;
PGMImage *new_img = malloc(sizeof(PGMImage));
new_img->maxVal = old_img->maxVal;
new_img->width = old_img->height;
new_img->height = old_img->width;
for (x = 0; x < old_img->width; x++)
{
for (y = 0; y < old_img->height; y++)
{
new_img->data[old_img->height - 1 - y][x].r = old_img->data[x][y].r;
new_img->data[old_img->height - 1 - y][x].g = old_img->data[x][y].g;
new_img->data[old_img->height - 1 - y][x].b = old_img->data[x][y].b;
}
}
return new_img;
}
void main()
{
PGMImage* img = malloc(sizeof(PGMImage));
getPGMfile("columns.pgm", img);
save("columns_new.ppm", rotate90(img));
}
save()
和 getPGMfile()
函数可以完美地独立运行。
只有当我将 rotate90()
函数的结果传递给 save()
时,我才会得到奇怪的结果。
最佳答案
在 malloc
语句之后尝试 memcpy(new_img, old_img, sizeof(PGMImage)
怎么样?也许除了 width 和 height 之外的一些其他属性没有初始化。而且,如果 data
变量是一个指针,你是否为 new_img 对象分配了一 block 内存用于 data
?
关于c - 在 C 中旋转 2D PGM 图像阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761259/
#include void lower_string(char*); int main() { char string[100]; printf("Enter
如何使用 Java 将二进制 PGM 文件转换为 ASCII PGM 文件? 当我使用以下代码时,我无法在 B.pgm 中写入 ASCII 值。我也尝试过使用dos.writeInt。 FileInp
我正在尝试对 pgm 执行卷积类型图像 P5 (二进制)使用以下设置: 输入输出数组 vector> image(rows, vector(cols, '\0')); vector> out(rows
我的机器上安装了 zmq 版本 4.1.3 和 pyzmq 版本 15.2.0(我假设是通过 pip 但我现在不记得了)。我需要连接到 UDP epgm 套接字,但收到错误“协议(protocol)不
我目前正在做一个学生项目,它对灰度 pgm 文件进行一些图像处理(膨胀和腐 eclipse )。我试图对图像对象实现扩张,但得到了奇怪的结果。我预计图像对象会比原始图像大。但是根据我使用的内核大小,我
以下代码适用于管理员帐户,但对于非管理员帐户,它会打印两次成功然后抛出 System.Net.Sockets.SocketException (0x80004005):尝试以其禁止的方式访问套接字访问
我需要在库 netpbm/pgm 中创建拉普拉斯运算符。处理图像很简单 - 我计算每个像素。我不使用标准化,因为我知道它是 0 并且我想简化解决方案。 我的代码: #include #include
我需要为类项目创建 PGM 图像的单个灰度直方图。我已经有了读取 PGM 图像的代码。但是我不完全理解如何计算唯一的像素值。我不需要输出图表或类似的东西。任何帮助将不胜感激! 读取PGM图像的代码 h
int i, j; for (i = (*pgm).height - 1; i >= 0; i--) for (j = 0; j < (*pgm).width; j++)
您好,我有一个关于读取 pgm 值的底部值的问题。我制作了一个 2d 动态数组,并为高度和宽度添加了 2 个额外的空格,以便能够创建缓冲区,但是当我尝试读取时将第一个整数设置为 width+1 它不起
我正在尝试自学数字图像处理。我已将我的 pgm 读入结构中。在这个结构中我有像素数组。我可以打印得很好。现在我想根据用户输入裁剪这张照片。我接受这些输入并根据输入的坐标得到一个黑色矩形。我做错了什么?
我正在尝试使用这段代码编写一个 pgm 文件.. myfile (image), (sizeRow*sizeColumn)*sizeof(unsigned char)); 如果我尝试将其写入 .txt
我有一个非常奇怪的错误, 所以我尝试通过将其像素值加载到数组中来读取 pgm 图像,我能够正确读取其版本、高度、宽度和最大可能像素值。然而,当我开始读取像素值时,我总是得到 0。(我知道它不是零,因为
我的目标是读入 PGM 图像并生成颜色值反转的图像。但是当我输入 this image ,我回来了this image .我在 C 中编程,在 Windows 7(64 位)上使用 Eclipse 和
我正在尝试从 .pgm 图像文件 (mars.pgm) 的 header 读取大小值,并使用 sscanf 将结果值分配给整数变量 u 和 v。 程序执行时在第一行打印 P5 832 700 127,
我正在尝试读取和重写 PGM 图像,但它会导致形状困惑。右图为原图,左图为重制图: 这是我正在使用的代码: #include #include #include #include using
我有一百个 128 x 128 的 .pgm 文件,上面有一些形状,我认为它们的色阶是 255(虽然不确定这个,所以如果解决方案也可以接受它会很好考虑),我需要提取这些颜色来处理图像。所以我想最终得到
我有一个包含 0-254 灰度值的 int 数组,我还有图像的 x 和 y 大小。创建 pgm 图像是一件容易的事情,但我想在 jsp 中显示它,所以我需要以某种方式将其转换为 jpeg 或 png
我已经被这个问题困扰了一段时间了。我如何将 pgm 文件中的像素值 0-255 复制到数组中?这是我到目前为止所拥有的。我知道我偏离了应有的样子。 #include #include int ma
我正在尝试将 JavaScript 中的 Canvas 转换为 pgm。在我转换文件并将其下载到我的 table 面后,它具有 pgm 扩展名,但是当我用编辑器打开它时,它被编码为 png。我认为
我是一名优秀的程序员,十分优秀!