• 締切済み

画像処理についての質問です

Cプログラムで、ある画像(ppm形式)を取り込んで 1、左右を逆にする 2、次に時計回りに90度回転させる というソースを教えてもらいたいです、お願いします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

新しく質問するならこの質問は締め切りましょうね http://oshiete1.goo.ne.jp/qa4381687.html > 画像を取り込むところまではできてます とありますが qa4381687.htmlではコンパイルすら通ってませんね

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

一部訂正 画像ファイルのデータの並びは画像の幅、高さの順でした ・・・

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

PPMのデータを読み込む部分が出来ているのでしょうか? マジックナンバー "P3"、"P6" 画像の縦、横 画素の最大値 画素データR 画素データG 画素データB 画素データR 画素データG 画素データB といった具合になっているものを構造体などに読み込みます データの持ち方が arImage[Height][Width][3]とするなら 左右の反転は 1行中のデータを for( y = 0; y < height; y++ ) {   for( x = 0; x < width / 2; x++ ) {     swap( arImage[y][x][0], arImage[y][width -x - 1][0] );     swap( arImage[y][x][1], arImage[y][width -x - 1][1] );     swap( arImage[y][x][2], arImage[y][width -x - 1][2] );   } } としてやればいいでしょう 右端から半分までのデータを左端から半分までを入れ替えます # swapは第1引数と、第二引数を入れ替える関数を定義してください 時計回りは 行走査したデータを 列操作のデータと入れ替えます この場合元データと、回転後のデータを別々に持っておいた方が楽でしょう for ( y = 0; y < height; y++ ) {   for ( x = 0; x < width; x++ ) {     arImageDest[x][ width - y - 1][0] = arImageSrc[y][x][0];     arImageDest[x][ width - y - 1][1] = arImageSrc[y][x][1];     arImageDest[x][ width - y - 1][2] = arImageSrc[y][x][2];   } } といった具合になると思います

noname#69423
質問者

お礼

画像を取り込むところまではできてます☆ わかりやすい解説ありがとうございます(^ω^w)!!

関連するQ&A