回答編集履歴

1

追記

2016/05/16 01:37

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -35,3 +35,51 @@
35
35
 
36
36
 
37
37
  ところで、C言語でstd:vector<>は使えません。提示されているプログラムはC++言語です。
38
+
39
+
40
+
41
+ ---
42
+
43
+ 【追記】
44
+
45
+ TEC_SNさんはどのような形式で画像をメモリ上で表現するか決めることに失敗しているのだと思います。画像をメモリ中で表現する方法を明確にしましょう。
46
+
47
+
48
+
49
+ ①2次元の情報を1次元配列で表現する方法はいくつか有ります。どのようにされていますか?
50
+
51
+ ②また、画像1ピクセルを表現する方法も多数あります。どのようにされてますか?
52
+
53
+
54
+
55
+ ①として良く用いられるのは、行の幅を固定し、次々と行をつなげていく方法です。
56
+
57
+ メモリ中では、[第1行のデータ列][第2行のデータ列]...[第Height行のデータ列]のように並ぶことになります。(第Height行→第1行の順にする場合とか、行と列を逆にすることも考えられます。)
58
+
59
+
60
+
61
+ ②は色々ありますが、もし、0~255のグレイスケール画像でしたら、単純に1バイトで1ピクセルを表現する場合が多いです。(カラーの場合はRGBの3バイトを使うことが多いです。)
62
+
63
+
64
+
65
+ もし、outRotatBufferとoutBuffer、および、画像表示用のフリーソウトウェアが上記に記述した①②の方式を使っている場合であれば下記でできる筈です。
66
+
67
+
68
+
69
+ > outRotatBuffer.push_back( outBuffer.at( x1 + y1*x_in );
70
+
71
+
72
+
73
+ しかし、
74
+
75
+
76
+
77
+ > outRotatBuffer.push_back( outBuffer.at( (x1 + ( y1 * 800 ) ) * 2 ) );
78
+
79
+
80
+
81
+ で1ピクセル毎に縦線が入った画像にならないのでしたら、上記①②の想定とは異なっていると思います。
82
+
83
+ ①②について明確にする必要が有ります。この式の `* 2`は何のために設けているのでしょうか? その辺にヒントがありそうな気がします。
84
+
85
+