画像を半分に切り抜くプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kerotan0820
記事: 91
登録日時: 14年前

画像を半分に切り抜くプログラム

#1

投稿記事 by kerotan0820 » 12年前

OS:ubuntu
コンパイラ:gcc
言語:C
コマンドラインからシェルスクリプトで実行しています。

今現在、画像処理プログラミングの練習として、画像を半分に切り抜くという課題を行っています。
右半分を切り出す課題に挑戦してみたのですが、どれも正常な画像が出力されず、このようになってしまいました。
output.jpeg
output.jpeg (40 KiB) 閲覧数: 3526 回
(画像の下のほうがくろくなっているのはコマンドラインでppm形式をjpeg形式に変換しようとしたところなぜかできてしまいました)
(コマンドは:  cjpeg ./デスクトップ/lake_right.ppm > ./デスクトップ/lake_right.jpeg )

本題なのですが、下のとおり手順を進めました。

①コンパイル

コード:

$ gcc ./デスクトップ/cutimage_right.c -o ./デスクトップ/cutimage_right
結果 cutimage_right というオブジェクトコードファイルが生成されました。

ソースはこの通りです。

コード:


# include <stdio.h>
# define XL 800
# define YL 600
# define BPP 3

int main()
{
  short x,y;
  unsigned char data[BPP];
  
  for(y=0; y<YL; y++)				//y軸 巡回
  {
    for(x=0;x<XL; x++)				//x軸 巡回
    {
      fread(data, BPP, 1, stdin);		//標準入力から読み込み
      if(x>XL/2) fwrite(data, BPP, 1, stdout);	//
    }
  }
}
②プログラムを実行(画像ファイルを与え、処理を加えた画像を出力)

コード:

$ ./デスクトップ/cutimage_right <./デスクトップ/lake.raw> ./デスクトップ/lake_right.raw
③画像のヘッダー情報を作り rawバイナリーファイルとドッキングする。
ファイル名: lake_right.ppm
内容:

コード:

P6
#
400 600
255

コード:

$ cat ./デスクトップ/lake_right.raw >> ./デスクトップ/lake_right.ppm
そして lake_right.ppm ファイルを開いて見たところ、ねじれるような描画の画像になってしまっていました。
この課題の見本のプログラムでは、出力部分の条件

コード:

if(x>XL/2) fwrite(data, BPP, 1, stdout);	//
これは以下のとおりでした。

コード:

if(x<XL/2) fwrite(data, BPP, 1, stdout);	//
xがX軸最大値であるXLの半分未満である間という条件で左半分が出力できたので
xがX軸最大値であるXLの半分より大きい間という条件で右半分が出力されないかと思ったのですが、されませんでした。
原因が分からず困っております。
ご教示お願いいたします。
けろけろにゃー (」・ω・)」うー!

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 画像を半分に切り抜くプログラム

#2

投稿記事 by ISLe » 12年前

kerotan0820 さんが書きました:xがX軸最大値であるXLの半分未満である間という条件で左半分が出力できたので
xがX軸最大値であるXLの半分より大きい間という条件で右半分が出力されないかと思ったのですが、されませんでした。
原因が分からず困っております。
「より大きい」ではなく「以上」なのでは?

kerotan0820
記事: 91
登録日時: 14年前

Re: 画像を半分に切り抜くプログラム

#3

投稿記事 by kerotan0820 » 12年前

ISLe さんが書きました:
kerotan0820 さんが書きました:xがX軸最大値であるXLの半分未満である間という条件で左半分が出力できたので
xがX軸最大値であるXLの半分より大きい間という条件で右半分が出力されないかと思ったのですが、されませんでした。
原因が分からず困っております。
「より大きい」ではなく「以上」なのでは?

その通りでした。
お恥ずかしい限りです。
ありがとうございました。
けろけろにゃー (」・ω・)」うー!

閉鎖

“C言語何でも質問掲示板” へ戻る