はじめて質問させていただきます
C言語はある程度はわかりますが、まだ勉強中です
タイトルの通り、16*16の指定した画像の左上([0,0])のドットのRGBを取得したいのですが上手くいきません
検索などをして一応下記のように作ってはみたのですが0.0000が表示されるだけで取得してくれません
取得位置の問題かと思い、全体を黒に塗った画像を使ってみたのですが0のままでした
どこが間違っているのでしょうか?お教えいただけると助かります
(下記のプログラムでは16*16のtest.bmpというファイルを読み込んで、左上のRedを取得しようとしています)
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fo;
unsigned char header[54];
unsigned char pixcel[16][16][3];
fo=fopen("test.bmp","rb");
fread(header,1,54,fo);//前54byte(?)が邪魔
fread(pixcel,1,16*16*3,fo);
fclose(fo);
printf("%f",pixcel[0][0][0]);
}
画像のRGB取得
Re:画像のRGB取得
printf("%i",pixcel[0][0][0]);
ではどうでしょうか?
追記:
あと、pixcel[0][0][0]は左下のピクセルを参照していますよ。
ではどうでしょうか?
追記:
あと、pixcel[0][0][0]は左下のピクセルを参照していますよ。

Re:画像のRGB取得
>>dicさん
すみません、抜けていました
24ビットです
>>h2so5さん
それで試してみましたが、全面黒[255,255,255]で0でした
左下だとは知りませんでした・・・情報ありがとうございます
すみません、抜けていました
24ビットです
>>h2so5さん
それで試してみましたが、全面黒[255,255,255]で0でした
左下だとは知りませんでした・・・情報ありがとうございます
Re:画像のRGB取得
っと・・・すみません、色々やってて頭が混乱してたみたいです・・・
printf("%i",pixcel[0][0][0]);
で再度やったみたところ上手くいきました
教えてくれてありがとうございました
[追加]
24ビット bmpファイルのバイナリの内容の54byte分がRGBを取得するのに邪魔(ヘッダー)だというのは検索して見つけたのですが、pngファイルの場合のヘッダー部分のbyteがわかりません
わかる方が居ましたら教えてもらえると助かります
printf("%i",pixcel[0][0][0]);
で再度やったみたところ上手くいきました
教えてくれてありがとうございました
[追加]
24ビット bmpファイルのバイナリの内容の54byte分がRGBを取得するのに邪魔(ヘッダー)だというのは検索して見つけたのですが、pngファイルの場合のヘッダー部分のbyteがわかりません
わかる方が居ましたら教えてもらえると助かります

Re:画像のRGB取得
pngのヘッダーのサイズは調べれば出てくると思いますが、
bmpと違いpngは圧縮されているのでヘッダーをちゃんと読まないとRGBの取得は不可能です。
本当はbmpもヘッダーをちゃんと読むべきです。
pixcel[0][0][0]が左上を指すのか左下を指すのかはbmpによって違うこともありますし、
ビット数もいくつか種類があるので。
pngのデータは複雑で私もよく分かりません。
自分だったらlibpngに丸投げかも...
bmpと違いpngは圧縮されているのでヘッダーをちゃんと読まないとRGBの取得は不可能です。
本当はbmpもヘッダーをちゃんと読むべきです。
pixcel[0][0][0]が左上を指すのか左下を指すのかはbmpによって違うこともありますし、
ビット数もいくつか種類があるので。
pngのデータは複雑で私もよく分かりません。
自分だったらlibpngに丸投げかも...

Re:画像のRGB取得
pngは難しいのですか・・・ありがとうございます
現状、24ビットで問題ないですし256色bmpなども視野に調べてみようと思います
libpngは今wikiを読んでみましたがとても有用そうですね
現状、24ビットで問題ないですし256色bmpなども視野に調べてみようと思います
libpngは今wikiを読んでみましたがとても有用そうですね