- ベストアンサー
ソースを教えてください。
今卒論を制作しているのですが、 急遽プログラミングを使うことになりました。 これまで全く手を付けていなかった分野のため大変困っています。 私の行っている作業としては、 写真をピクセルごとにRGB値をだしていくというものなのですが、 白(R=255 G=255 B=255)となった場合はデータとして出力しない、 省く、除くとしたいのです。 たぶん以下のようなIf文になるとおもうのですが、 If R=255 and G=255 and B=255 then thenのあとの出力しない、省く、除くとはどのような ソースとなるのでしょうか? まだプログラムに関して未熟なので、用語の使い方に 誤りなどがあったかもしれませんが、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
全ビット255のみを白と扱っているようですが、 255,255,254は白とはいわないのでしょうか?? 写真の画像解析だと全ビット255の白というのも極小でしかありません。 普通白とはRGB値で240以上のものを指します。 一部放送などではこれ以上の点は一律にカットされてしまいます。 よってプログラムは if R>240 and G>240 and B>240 then ~ とされるのが望ましい。 上記の場合、何も処理しないのですから普通はネストを抜ける処理、 例えばExit subだとか、Exit For、 あるいはGotoを使って好きな場所にとばすのが一般的だと思います。 (Gotoの多用は忌み嫌われるので避けること)
その他の回答 (3)
- ngsvx
- ベストアンサー率49% (157/315)
回答が出揃っているようなので蛇足として読んでください。 条件によっては記述を変えると難しくなる場合があります。 そのような場合、 if 条件 then <何も書かない> else <ここに処理> endif と書いたり、 if !(条件) then <処理> endif とするのがいいと思います。
お礼
このような書き方も出来るんですね。 参考になります。 ありがとうございます。
#1の方が示した方法 if R < 255 and G < 255 and B < 255 then データ出力 だと、RGBの内一つでも255だったら出力しません。 一つでも255未満だったら「白」じゃないので if R < 255 or G < 255 or B < 255 then データ出力 の方が良いかと…。
お礼
指摘ありがとうございます。 orとandを理解したいと思います。
- ballville
- ベストアンサー率47% (233/487)
使用言語が分かりませんが ご質問のような調子で書くなら if R < 255 and G < 255 and B < 255 then データ出力 というように、条件を反転させるほうが分かりやすいと思います。
お礼
反転させたほうが確かに分かりやすいです。 ありがとうございます。
お礼
回答ありがとうございます。 数値の点に関してまで指摘いただいて 本当にありがとうございます。 言語もつかわせてもらいます。
補足
gungnir7さんに教えていただきたいのですが、 普通白とはRGB値で240以上のものを指すというのは どこの情報なのでしょうか? 色のことで研究をしているので情報源が分かるので あればいろいろ調べたいのですが。 例えば黒の場合の領域など。 ほかの方でも分かる方がいらっしゃったら、 質問の趣旨からはずれるのですがよろしくお願いします。