c语言中取一张图片的具体位置RGB像素值

c语言中取一张图片的具体位置RGB像素值
取到彩色图像RGB像素值
AInt8U R = pRgbImgData[y*srcImg->iWidthStep + c*srcImg->iChannels + 2];
AInt8U G = pRgbImgData[y*srcImg->iWidthStep + c*srcImg->iChannels + 1];
AInt8U B = pRgbImgData[y*srcImg->iWidthStep + c*srcImg->iChannels];
    y就是top(行数)
    c就是left(列数)
    iChannels:彩色是三通道
e.g.
b = pColorSrc->pImageData[y_bg * widthstep + x_bg * 3];
g = pColorSrc->pImageData[y_bg * widthstep + x_bg * 3 + 1];
r = pColorSrc->pImageData[y_bg * widthstep + x_bg * 3 + 2];
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你不想使用图像处理库函数,你可以使用C语言的文件操作和位操作来手动修改图像像素的RGB值。以下是一个基本的示例代码,展示了如何通过修改RGB值来修改图片像素达到480*320变成320*240: ```c #include <stdio.h> #include <stdlib.h> typedef struct { unsigned char r, g, b; } RGB; int main() { FILE *inputFile = fopen("input_image.rgb", "rb"); // 打开输入文件 FILE *outputFile = fopen("output_image.rgb", "wb"); // 打开输出文件 int inputWidth = 480; int inputHeight = 320; int outputWidth = 320; int outputHeight = 240; RGB *inputImage = (RGB *)malloc(inputWidth * inputHeight * sizeof(RGB)); // 分配输入图像内存 RGB *outputImage = (RGB *)malloc(outputWidth * outputHeight * sizeof(RGB)); // 分配输出图像内存 fread(inputImage, sizeof(RGB), inputWidth * inputHeight, inputFile); // 读取输入图像数据 for (int y = 0; y < outputHeight; y++) { for (int x = 0; x < outputWidth; x++) { int inputX = (x * inputWidth) / outputWidth; int inputY = (y * inputHeight) / outputHeight; RGB inputPixel = inputImage[inputY * inputWidth + inputX]; RGB *outputPixel = &outputImage[y * outputWidth + x]; // 修改RGB值 // 示例:将红色通道置为0 outputPixel->r = 0; outputPixel->g = inputPixel.g / 2; outputPixel->b = inputPixel.b; } } fwrite(outputImage, sizeof(RGB), outputWidth * outputHeight, outputFile); // 写入输出图像数据 fclose(inputFile); // 关闭输入文件 fclose(outputFile); // 关闭输出文件 free(inputImage); // 释放输入图像内存 free(outputImage); // 释放输出图像内存 return 0; } ``` 请注意,此代码假设输入图像是以二进制形式存储的RGB值序列,每个像素由一个RGB结构表示。你需要根据实际情况修改输入和输出文件路径,并确保你的输入图像与代码中指定的尺寸匹配。 这只是一个基本示例,你可以根据自己的需求进行修改和扩展。但是需要注意的是,手动处理图像像素会更加复杂和耗时,使用图像处理库函数可以更方便地完成这些任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值