Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何获取图像的RGB值?_Image Processing_Graphics_Rgb_Textures - Fatal编程技术网

Image processing 如何获取图像的RGB值?

Image processing 如何获取图像的RGB值?,image-processing,graphics,rgb,textures,Image Processing,Graphics,Rgb,Textures,我正在上计算机图形学课,我需要处理纹理,但我不能使用任何库来完成。我一直在加载需要使用的图像的rgb值(图像可以是任何格式,jpg、raw、png等),所以我的问题是,在不使用任何库获取该值的情况下,哪种方法是获取图像(任何格式)rgb值的最简单方法??以下是我在网站上已经找到的内容: unsigned char *data; File *file; file = fopen("image.png", "r");// data = (unsigned char

我正在上计算机图形学课,我需要处理纹理,但我不能使用任何库来完成。我一直在加载需要使用的图像的rgb值(图像可以是任何格式,jpg、raw、png等),所以我的问题是,在不使用任何库获取该值的情况下,哪种方法是获取图像(任何格式)rgb值的最简单方法??以下是我在网站上已经找到的内容:

    unsigned char *data;
    File *file;

    file = fopen("image.png", "r");//

    data = (unsigned char *)malloc(TH*TV*3); //TH and TV are both 50

    fread(data, TH*TV*3, 1, file);
    fclose(file);

    int i;

    for(i=0;i<TH*TV*3;i++){
       //suposing I have a struct RGB for the rgb values
       RGB.r = data[?];// how do I get the r value
       RGB.g = data[?];// how do I get the g value
       RGB.b = data[?];// how do I get the b value
    }
无符号字符*数据;
文件*文件;
file=fopen(“image.png”,“r”)//
数据=(无符号字符*)malloc(TH*TV*3)//TH和TV都是50
fread(数据,TH*TV*3,1,文件);
fclose(文件);
int i;

对于(i=0;i尝试使用一些框架,比如有几个选项可以获得颜色或操纵图像

在这里,我找到了以下示例代码:

cv::Mat img=cv::imread(“lenna.png”);

对于(int i=0;i而言,您希望迭代由3个字节组成的每个像素,而不是迭代读取的每个字节。因此,将
i++
替换为
i++=3

for(i=0;i<TH*TV*3;i+=3){
   RGB.r = data[i];
   RGB.g = data[i+1];
   RGB.b = data[i+2];
}

for(i=0;i首先你停止叫喊!我错过了你打开PNG文件的部分。PNG格式很复杂,编写代码来读取它完全超出了StackOverflow答案的范围。不使用库是不切实际的。JPG和许多其他格式也是如此。有一些格式很容易解析(PBM/PGM/PNM、TGA等),但大多数更现代的(尤其是专注于压缩图像的)如果没有库,阅读起来就不那么简单。png图像是压缩的,这是你应该知道的。所以你上面的代码无法工作。@rekire,很抱歉我错过了这一部分。如果没有库,你不可能阅读png。好吧,让我们换一种图像格式,原始图像或bmp怎么样(我可以使用我想要的格式,我以png为例)@user2275378,此解决方案适用于没有标题的原始像素数据。不是一个原始的相机图像,这是一个完全不同的东西,甚至比PNG更复杂。要让上述代码工作,您需要将图像保存在RGB888中。这应该可以工作。正如旁注:OpenCV将获取图像,并将图像转换为RGB888莫瑞,在那里你也可以访问原始数据。