• 締切済み

TIFFファイルを開く

TIFFファイルを開く __________________________________________________________________________________ #include <mist.h> #include <tiff.h> int main( void ) { mist::array2< mist::rgb< unsigned char > > img; // カラー画像を格納するための2次元配列の宣言 mist::write_tiff( img, "画像 001.tiff" ); return 0; } __________________________________________________________________________________ このプログラムではTIFFファイルが開けませんでした libファイルやincluddeファイルの設定(パスは通してある)はしているのですが、どのようなプログラムを組めば、TIFFファイルを表示(出力)できるのかわかりません>< お分かりになるかたがいるのならば、ぜひ教えてください。

  • ouku3
  • お礼率50% (5/10)

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

http://mist.suenaga.cse.nagoya-u.ac.jp/trac/ にリファレンスマニュアルやチュートリアル(練習)がありますが、ちゃんと読んでますか? #include <mist/mist.h> #include <mist/io/tiff.h> #include <mist/draw.h> int main( void ) { mist::array2< mist::rgb< unsigned char > > img; // 読み込むなら、writeじゃなくてread。 // read_??? は array2等に画像データを読み込むだけで // 「画面表示」する機能は無い。 mist::read_tiff( img, "画像 001.tiff" ); // これでいいと思うけど、手元の環境では表示できなかった // WinAPIを使うなどの方法も考慮する必要あり? // mist::draw_pixels( img, img.width(),img.hight() ); // あるいは、出力はファイルに行う // mist::write_tiff( img, "画像 002.tiff" ); // ウインドウに表示した場合、 // プログラム終了で画面が閉じるので、ダミーを入れておく // std::string line ; // std::getline(std::cin, line); return 0; }

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

mistのマニュアルを見ると > mist::array2< mist::rgb< unsigned char > > img ; 引数無しのデフォルトコンストラクタでは、画素数0,解像度1.0x1.0の配列を用意します > mist::write_tiff( img, "画像 001.tiff" ); imgをファイルに書き出します。 この間になにもしてないのなら、imgが画素0のままです。 画素0の画像を書き出すのか、画素0の画像は作れないのでエラーになるのかは試してないのでわかりません。 > このプログラムではTIFFファイルが開けませんでした >TIFFファイルを表示(出力)できるのかわかりません この「開く」「表示(出力)」は配列の内容をファイルに出力する(するために 書き込みモードで「開く」)、という意味でよろしいでしょうか? それとも、既存のTIFFファイルから読み込み(するために読み出しモード「開く」)、画面に表示するということでしょうか?

ouku3
質問者

お礼

tiffファイルを読み込んで 表示するプログラムを組みたいのですが、もしよろしければソースプログラムを載せていただけないでしょうか??

関連するQ&A

  • C言語でPGMファイルの読み込みたいです。

    Visual C++ 6.0でPGM画像を読み込みたいのですが、ファイルの読み込みがわかりません。 コメント行は読み飛ばして以下の変数・配列にそれぞれ格納したいです。 int w,h //画像サイズ unsigned char img[][] //画像データ

  • OpenCVの実行エラー

    OpenCVで下記の用なテストプログラムを作成しました。 --------------------------------------- #include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h> #pragma comment(lib, "cv.lib") #pragma comment(lib, "cxcore.lib") #pragma comment(lib, "highgui.lib") int main(void) { unsigned char *Image; IplImage* img = NULL; IplImage* clone = NULL; // 画像読み込み img = cvLoadImage("image.bmp", -1); // 画像コピー clone = cvCloneImage(img); return 0; } --------------------------------------- ところが、実行すると --------------------------------------- Bad argument(Bad image header) in function cvCloneImage, D:\User\VP\openCV\cxcore\src\cxarray.cpp --------------------------------------- というエラーメッセージがでて実行することができませんでした。 OpenCVに付属していたsampleプログラムは動作しました。 // 画像コピー clone = cvCloneImage(img); の一文をコメントアウトするとエラーはなぜかでません。 このエラーはどうしてでるのでしょうか? OSはwindowsXP コンパイルはC++6.0とVS2005の両方で試しましたが同じ結果がでます。

  • VC++6.0 ライブラリを用いたTIFF画像の読み込み

    タイトル通りのことを行おうと、libtiffなるTIFFのライブラリをWEBより落としてきてVC++6.0でプログラミングをしています。 TIFF画像をBITMAP画像にするべく以下のようにソースを記述しました。 HDIB CTiff::LoadTIFFinDIB(CString path) { TIFF *image; unsigned long imageLength; unsigned long imageWidth; unsigned int BitsPerSample; unsigned long LineSize; unsigned int SamplePerPixel; unsigned long RowsPerStrip; int PhotometricInterpretation; long nrow; unsigned long row; char *buf; LPBITMAPINFOHEADER lpDIB; HDIB hDIB; char *lpBits; HGLOBAL hStrip; int i,l; int Align; CSize size; char *p = new char[path.GetLength()+1]; strcpy(p, path); image = TIFFOpen(p, "r"); delete [] p; if(!image) goto TiffOpenError; ・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・ ところが、TIFFOpenで絶対Access Violationのエラーで落ちてしまいます。 この原因がわかる方、ご教授ください。 ちなみにOSはWindows2000 Proです。

  • Cで二次元配列の読み込み

    はじめまして。 hiraです。 今非常に基本的であろうことに悩んでいます。まだまだプログラムを始めたところなのでうまくいきません。 内容は・・・ あるファイルを読み込んで、二次元の配列に格納していく。 です。 具体的には test.txtというファイルがあり、中身は数字の二次元配列です。 カンマやtabで区切られています。配列の大きさ、数字の桁数などはファイルによって違います。 そのファイルを読み込んで、配列に格納したいと考えています。 今は一列を読み込むことには成功しています。そこからどのようにして分けて言ったらいいのか・・・ご教示お願いします。 もしくは、もっと違う方法で読み込む方法があればよろしくお願いします。 #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fin; char array[256]; char buf[256]; fin=fopen("test.txt","r"); if(fin == NULL){ printf("%sがオープンできません\n",fin); exit(1); } while(fgets(buf,256,fin) != NULL) {           ここが問題・・・ } fclose(fin); return 0; }

  • fread エラー C Xcode bmpファイル

    こんにちは。プログラム初心者の大学生です。 現在研究室で作成しているプログラムについて、自身で解決できないエラーが出たため、 お詳しい方に教えていただけないものかと思い投稿しました。 以下のプログラムで、32ビットbmpファイルのヘッダ情報を読み込み、表示させようとしています。 展望としてはヘッダ情報を誘致しておき、後々参照する予定です。 プログラムはMacのXcode(C言語)で作成しているのですが、 fread(PictureHeadBuf, sizeof(unsigned char), 54 ,fpIN); の行で EXC_BAD_ACCESS と表示され、うまく動作しません。 配列のメモリ管理がどうも怪しそうですが、具体的な解決方法がわからない状態です。 なかなか先に進めずに困っています。もし原因のわかる方がいらっしゃれば教えてください。 ぜひよろしくお願い致します。 #include <stdio.h> #include <stdlib.h> /* 入力画像ファイル関連 */ #define FILE_NAME "test.bmp" /* 元データのファイル名 */ int main(void){ int i; /* 入力画像ファイル関連変数 */ FILE *fpIN; unsigned char PictureHeadBuf[54]; /* ヘッダ用バッファ */ unsigned char Header[54]; /* ヘッダの誘致先 */ /*入力画像ファイルをオープン*/ fpIN = fopen(FILE_NAME, "rb"); /*ヘッダ(ファイルヘッダ,情報ヘッダ)の格納 */ fread(PictureHeadBuf, sizeof(unsigned char), 54 ,fpIN); for(i = 0; i < 54; i++){ Header[i] = PictureHeadBuf[i]; printf("%d\n", Header[i]); } /* 入力画像をクローズ */ fclose(fpIN); return(0); }

  • CGI 画像の曜日

    C言語CGI画像についての質問 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <io.h> #include <time.h> void showimg(char []); int main(void) { int no; char *imgfile[] = {"img1.jpg","img2.jpg","img3.jpg"}; srand((unsigned int)time(NULL)); no = rand() % 3; printf("Content-type: image/jpeg\n\n"); showimg(imgfile[no]); return 0; } void showimg(char imgfile[]) { FILE *fp; char buf[1024]; int i, size; fp = fopen(imgfile, "rb"); if(fp != NULL) { _setmode(_fileno(stdout), _O_BINARY); while((size = fread( buf, sizeof(unsigned char), 1024, fp )) != 0) { for(i = 0 ; i < size ; i++) { printf("%c", buf[i]); } } fclose(fp); fflush(stdout); _setmode(_fileno(stdout), _O_TEXT); } } の画像を表示するプログラムを月曜、火曜はimg1.jpgが表示、水曜日木曜日金曜日はimg2.jpgが表示、土曜日日曜日はimg3.jpgが表示するようにしたいですがなかなか参考にできそうなサイトなどがありません。どなたかお勧めのサイトなどがあればお教えください

    • ベストアンサー
    • CGI
  • バイナリファイル(画像)のよみこみ

    レポートで1024×1024ピクセルの画像を、間引いて256×256の画像にしろというのが出されました。画像はrawファイルです。 それで、とりあえず画像を読み込んで、出力するプログラムを書いてみたんですが、コンパイルは出来るのに実行すると不正な処理とけいこくがでてきてしまいます。 ソースは #include<stdio.h> main() { unsigned char in[1024][1024],out[1024][1024]; FILE *fp; int i,j; fp=fopen("aaa.raw","rb"); fread(in,sizeof(unsigned char),1024*1024,fp); fclose(fp); for(i=0;i<1024;i++){ for(j=0;j<1024;j++) out[i][j]=in[i][j]; } fp=fopen("bbb.raw","wb"); fwrite(out,sizeof(unsigned char),1024*1024,fp); fclose(fp); } です。 どこがいけないのかアドバイスいただきたいです。よろしくお願いします。

  • namzuでtiffファイルを全文検索するには

    VineLinuxにnamazeを導入し、ファイルサーバとして運用しています。 現在は、word、excel、ps、pdfファイルなどをサーバに格納し全文検索できるようになっていますが、新しくtiffファイル(文書ファイルをtiff画像にしたもの)についても全文検索できるようにしたいと考えています。 フィルタを見る限りtiffを扱うようにはなっていないように見えます。 tiffファイルのindexを作成する方法を教えてください。

  • C言語で全角文字の扱いについて

    全角を配列に格納するには2バイトを使いますよね。そこで気になることがあるのですが、以下のプログラムで一文字目(私)を表示するには、どうしたらいいのですか?これは間違っています。 教えて下さい。 #include <stdio.h> main(){ char array[100]={"私の名前はXXXです"}; printf("%s",array[0]); }

  • TIFFファイルの仕様について

    TIFFファイルの仕様について教えてください。 (1)WIndowsXP2で作成されたTIFFファイル (2)作成環境不明のお客様先から送られてきたTIFFファイル 【現象】 各ファイルの属性を「読み取り専用」にします。 各ファイルを右クリックし、 「プログラムから開く」-「Windows Picture and FAX Viewer」にて開きます。 画面を回転させます。 読み取り専用であるとのメッセージ表示後、 (1)ファイルは、回転された画像を表示します。 (2)ファイルは、「描画できませんでした。」のメッセージが表示され、画像が表示されません。 これは、TIFFファイルの作成環境によるものなのでしょうか。 常に(1)ファイルの動きをさせたいと考えています。 回避策か、設定等ありましたら、ご教示願います。 以上よろしくお願いします。