![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.2ベストアンサー
- 回答日時:
すみません。
ちょっと勘違いがありました。>指定したカラーの座標(X,Y)を配列で取得する方法が処理の内容でしたが、
これを単にカラーの座標(X,Y)を配列で取得する方法と受け取ってしまいました。
指定した座標の色をPictureBox上で取得するにはGetPixcelとかの関数があります。
これで1点1点比較していき、指定したカラーと一致するものを
配列に待避させていけばいいかと思います。
ただ、既にGetDIBitmapsを使っておられるとのことなので、
今後も本格的な画像処理プログラミングを考えているのなら、
このままGetDIBitmapsを使えばいいかとも思います。
>どうも実際のPictureのXYとは違い、
>独自の配列を持っているようで圧倒的にPictureの方が大きくなります。
実際のPictureのXYとは違い、配列の方は上下反転しています。
また、配列はバイトで宣言していると思いますが、
フルカラーの場合は1点につき4バイトなので配列の大きさも4倍になります。
圧倒的にpictureの方が大きくなりますの意味がちょっとよく分かりません。
hawkwindさん回答有難うございます。
PictureとGetDIBitmapsの誤差の正体が分かりました。
ScaleをTwipsPerPixelXで割っていたのに、実際のPictureのXY座標に当てはめるときにTwipsPerPixelXで掛けるのを忘れていました。
また、配列は左右反転になっていたようです。
全体的な処理も想定しているような動作になってきているので一安心といったところです。
ありがとうございました。
No.3
- 回答日時:
すみません。
ちょっと勘違いがありました。>指定したカラーの座標(X,Y)を配列で取得する方法が処理の内容でしたが、
これを単にカラーの座標(X,Y)を配列で取得する方法と受け取ってしまいました。
指定した座標の色をPictureBox上で取得するにはGetPixcelとかの関数があります。
これで1点1点比較していき、指定したカラーと一致するものを
配列に待避させていけばいいかと思います。
ただ、既にGetDIBitmapsを使っておられるとのことなので、
今後も本格的な画像処理プログラミングを考えているのなら、
このままGetDIBitmapsを使えばいいかとも思います。
>どうも実際のPictureのXYとは違い、
>独自の配列を持っているようで圧倒的にPictureの方が大きくなります。
実際のPictureのXYとは違い、配列の方は上下反転しています。
また、配列はバイトで宣言していると思いますが、
フルカラーの場合は1点につき4バイトなので配列の大きさも4倍になります。
圧倒的にpictureの方が大きくなりますの意味がちょっとよく分かりません。
No.1
- 回答日時:
>指定したカラーの座標(X,Y)を配列で取得する方法はありますか?
DIBとして配列に読み込みます。使うのはGetDIBitmapsです。
かなり難易度の高いAPIなので本を一冊購入するぐらいで臨んで下さい。
>画像自体が大きいので、
>出来るだけ早い処理で取得出来るものをと考えています
画像が大きいものを早く処理したいのですか?
処理にもよりますがフィルタですとVBだと30秒前後かかります。
私どものところでも実績はありますが、
画像処理ではC言語を使ってDLLというのが普通です。
処理が単純なら平凡にPictureBoxの縦横をFor文で回した方が楽です。
どうしても早さを求めるとなると、その勉強だけで1、2週間はとびますから。
hawkwindさん、早速回答有難うございます。
GetDIBitmapsは使用しております。ネット上で紹介されている方法をチラッと参考にした程度なので、使用方法が正しいかどうかは分かりませんが、どうも実際のPictureのXYとは違い、独自の配列を持っているようで圧倒的にPictureの方が大きくなります。
そこで、Picture / GetDIBitsの最大値 の結果をGetDIBitsで取得した配列の座標に掛けたのですが、誤差が出てしまいました。
現在の対策は実際のPictureをFor文で回す。を分割処理で、結果を得られればループ終了。のような事を考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
動的配列のメリット・デメリッ...
-
Excel2010のinputboxで複数デー...
-
EXCEL VBAの課題です
-
VBScriptでCSVファイルを読み出...
-
配列のペースト出力結果の書式...
-
VBA Dowhile 判断条件に動的配...
-
VBA ReDim と ReDim Preserve ...
-
excel vbaの配列なんですが・・・
-
エクセルでXY座標に並べられた...
-
VBA 桁数が混在するソート
-
Excel VBA マクロ ブロック崩し...
-
配列の要素がすべてカラかどう...
-
【VBA】レコードセットからグラ...
-
2次元配列でウォッチが出来ない
-
VBで配列に格納されているデー...
-
VB.NETの配列にExcelから読み込...
-
VBA どっちが速い?
-
Access レコードセットを動的配...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
Redim とEraseの違いは?
-
VB.NETの配列にExcelから読み込...
-
VB6のメモリ解放に関して
-
配列の中の最大値とそのインデ...
-
構造体配列内の文字列検索のよ...
-
構造体配列の特定のメンバーをF...
-
VBAでMODE関数をつくる
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
Segmentation Fault (メモリ制限?)
-
定数配列の書き方
-
OutOfMemoryExceptionの回避策...
-
VBScriptでCSVファイルを読み出...
-
コンボボックスのインデックス...
-
DBから取得した値を配列へ代入する
おすすめ情報