• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:困っています)

困っています!上手く機能しない画像判別プログラム

このQ&Aのポイント
  • 質問者は、画像を白黒判別し、カウントするプログラムを作成しましたが、上手く機能してくれません。
  • 質問者は、プログラムについて助言を求めています。
  • 助けが必要な箇所や気づいたことなど、どんな情報でも歓迎しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

If System.Drawing.Color.BlackToArgb() = Bitmap.GetPixel(x, y).ToArgb() Then は If System.Drawing.Color.Black.ToArgb() = Bitmap.GetPixel(x, y).ToArgb() Then の間違いでは? また、この行で、System.Drawing.Color.BlackのAプロパティとBitmap.GetPixel(x, y)のAプロパティが一致している保証はあるのでしょうか? 赤、青、緑の要素以外に、不透明度(Aプロパティ、アルファチャンネル)が一致していないと、ToArgb()メソットの返り値同士での色の一致は判定できません。 dim ChkColor As Color = Color.FromArgb(0) の1行を宣言部に足し If System.Drawing.Color.Black.ToArgb() = Bitmap.GetPixel(x, y).ToArgb() Then の行を ChkColor = Bitmap.GetPixel(x, y) if ChkColor.R = 0 And ChkColor.G = 0 And ChkColor.B = 0 then の2行に分けてみて下さい。 色を判定するたびにSystem.Drawing.Color.Blackプロパティを参照するのは処理の無駄ですし、まだKnownColor.Blackと書いた方がマシです。 もっと言えば、System.Drawing.Color.Blackが黒色かどうかも怪しいです。

noname#14777
質問者

お礼

大変解りやすい回答ありがとうございました。おかげさまで完成に大分近づくことが出来ました。もう一つお聞きしたいのですが、Bitmap.GetPixelの部分で、"非共有メンバを参照するには、オブジェクト参照が必要です"というエラーがでるのですが、よくわかりませんでした。よろしければ、教えてください。お願いします。

その他の回答 (1)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

>Bitmap.GetPixelの部分で どこかプログラムの初期化部分で Dim myBitmap As New Bitmap("file.bmp") って感じで、Bitmap型のグローバルオブジェクトを定義、作成して下さい(この例ではコンストラクタにファイル名を指定して、作成しつつファイルからロードしています) 後は、実際に使う部分で myBitmap.GetPixel(x,y) とか BmpWW = myBitmap.width BmpHH = myBitmap.height って感じで使います。

noname#14777
質問者

お礼

おー!!出来た。すげー!!ほんとありがとうございます。出来ました。大変わかりやすくて助かりました。また聞くことがあったらよろしくお願い致します。

関連するQ&A

専門家に質問してみよう