No.3
- 回答日時:
すみません。
ちょっと勘違いがありました。>指定したカラーの座標(X,Y)を配列で取得する方法が処理の内容でしたが、
これを単にカラーの座標(X,Y)を配列で取得する方法と受け取ってしまいました。
指定した座標の色をPictureBox上で取得するにはGetPixcelとかの関数があります。
これで1点1点比較していき、指定したカラーと一致するものを
配列に待避させていけばいいかと思います。
ただ、既にGetDIBitmapsを使っておられるとのことなので、
今後も本格的な画像処理プログラミングを考えているのなら、
このままGetDIBitmapsを使えばいいかとも思います。
>どうも実際のPictureのXYとは違い、
>独自の配列を持っているようで圧倒的にPictureの方が大きくなります。
実際のPictureのXYとは違い、配列の方は上下反転しています。
また、配列はバイトで宣言していると思いますが、
フルカラーの場合は1点につき4バイトなので配列の大きさも4倍になります。
圧倒的にpictureの方が大きくなりますの意味がちょっとよく分かりません。
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.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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- 生物学 脳の記録部位の集計方法について 1 2022/06/11 21:26
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
- 統計学 Rを用いた「繰り返しがある直交表実験計画法」の分析方法 8 2023/08/01 17:58
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
DBから取得した値を配列へ代入する
-
C#でbyte配列から画像を表示さ...
-
構造体配列の一部初期化!!!
-
エクセルでXY座標に並べられた...
-
VB6で、一次元配列と二次元配列...
-
定数配列の書き方
-
配列の中の最大値とそのインデ...
-
オブジェクト名を変数で参照で...
-
配列の要素がすべてカラかどう...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
ActiveReports(アクティブレポ...
-
VB.NETの配列にExcelから読み込...
-
VBで配列に格納されているデー...
-
8bitインデックス画像の入出力方法
-
Redim とEraseの違いは?
-
VBでの配列をEXCELに出力する方法
-
EXCEL VBA 配列デー...
-
Excel2010のinputboxで複数デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報