
VisualStudio2013でC++のプログラミングをしています。モノクロ画像でモザイク処理のプログラミングをしていますが、なかなかうまくいかないので質問させていただきました。指摘が欲しいプログラミングは以下の通りです。
int a,i,j; /*3~4つ目のfor文に使います。aは特定箇所の平均輝度値として使用します*/
int siz=8; /*モザイクのブロック処理の大きさです。8*8でモザイク処理をします*/
for (y = 0; y<256; y++){/*256は画像Y軸です*/
for (x = 0; x<256; x++){/*256は画像X軸です。この2つのforで画像全領域を参照します*/
for (y=0;y<i*siz; y++){/*Y軸で指定した箇所のみ参照のつもりですが、色々間違っているようです*/
for (x = 0; x <j*siz; x++){/*X軸で指定した箇所のみ参照のつもりですが、色々間違っているようです*/
a = a + in_image[y][x]; /*in_image[y][x]はYとXの座標に該当したピクセルの輝度値です*/
}
}
a = a / (siz*siz); /*特定箇所を収集された輝度値の平均を出しています*/
for (y = 1*i; y < i*siz;y++){/*特定箇所のみを指定します*/
for (x = 0; x < j*siz; x++){/*特定箇所のみを指定します*/
out_image[y][x] = a; /*out_image[y][x]は出力する箇所の輝度値です。特定箇所にaで代入します*/
}
}
i++;
j++;/*画像全てを8*8モザイク処理するまでは繰り返します*/
}
}
詳しい条件は以下の通りです
・画像の読み込みや出力などは省略しています。
・3、4つめのfor文ではモザイク化する箇所を参照し、8*8の平均輝度値を求めたいです。
・5、6つめのfor文では求めた輝度値で参照した8*8の箇所に輝度値を代入したいです。
・この6つのforループで256*256の画像を8*8モザイク化したいです。
・指摘、変更して欲しい箇所は3つめのfor文以降です。intを更に宣言はOKで、for文などの個数を増やしたり減らすのはNGでお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
一番外側のループで回答しましたが、実際はiの値次第で外側のxのループがずっと続くか、外側のループが1回だけになるか…。
いずれにしろ期待動作はしません。
何よりiの値も不定ですし。
>・3、4つめのfor文ではモザイク化する箇所を参照し、8*8の平均輝度値を求めたいです。
外側の2つのループはステップを8に(サイズが256なら32回回ればいい)、
内側の2つのループで8x8の領域の精査を行うようにすればいいでしょう。
当たり前ですがカウントに使う変数は別にして。
No.1
- 回答日時:
細かく見てはいませんが…
>for (y = 0; y<256; y++){
のforループの内側に
>for (y=0;y<i*siz; y++){
のforループが存在します。
どっちも『同じ変数y』を使用します。
外側のループ開始でyが0になりました。
次のループではy++により、1になっていることを期待します。
さて、内側のループ開始でyを0にしました。
ループ終了したときには『内側のfor文で指定しているy++により』インクリメントされてi*sizになって無事ループ終了しました。
めでたい!!
では外側のループ続けるためにy++を実行しましょう。
外側のループは前回yが0で今度は1になっていないといけません。
さて、値はいくつでしょう?
先ほどおめでたい行事があったことは忘れてはいけませんね。
ループ実行中にカウントに使っている変数がどうなるのか意識しないと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- その他(プログラミング・Web制作) python pandas 行ごとに列名(列番号)を指定して抽出したい 1 2023/05/26 13:47
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
ネットワークループとルーティ...
-
Escキーを押すと、中断する時と...
-
アセンブラによるウェイト(WAIT...
-
VBA:For構文のエラー、対策教え...
-
ループの後判断どんな時使うの
-
VBA for i=1 to lastrow
-
Javascriptでalertを大量のルー...
-
Application->Run();の機能につ...
-
VBAで3秒だけ時間を止めたい
-
DOSコマンドのループ内のTIMEコ...
-
Do whileでExitせず、ループの...
-
比較演算子に上限や下限を抑え...
-
WinAPI「MsgWaitForMultipleObj...
-
イベントの発生を待つ
-
ループの途中でユーザーからの...
-
VBA Boxが空白の場合のメッセー...
-
Excel VBAで、アクティブシート...
-
エクセル関数で1〜12の数字がル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
流れ図(フローチャート)が分か...
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
VBAでの一時停止と再開の方法
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
VBAで3秒だけ時間を止めたい
-
vb.netです。2次元配列の要素を...
-
エクセルの当番表を作っていま...
-
vb.netからエクセル関数書き込み
-
DOSコマンドのループ内のTIMEコ...
-
「偶数・奇数の和」のフローチ...
-
GIFアニメをループさせたくない
-
Do whileでExitせず、ループの...
-
VB2010でCSVファイルの読み込み
-
【VBA】全て空白のセルの列の非...
-
アクティブセルから、A列最終行...
おすすめ情報