- ベストアンサー
スクリーンの画像をメモリに読み込みたい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
★アドバイス ・『GetDC(NULL)』として画面全体のデバイス・コンテキストを取得します。 その後に取得したデバイス・コンテキストからメモリ・デバイス・コンテキストを作成します。 あとはご自由に演算して下さい。 ・以上。
その他の回答 (1)
- MrBan
- ベストアンサー率53% (331/615)
> できれば、なるべく高速な方法がいいです。 GetPixelとかすると異常に遅くなりますので、 メモリにブロック転送してメモリ操作することをお勧めします。
お礼
無事にできました。ありがとうございました。
補足
お早い回答ありがとうございます。 そうですね、1つ1つ取得すると遅くなりそうなので 一度に転送したいのですがその方法がわかりません。
関連するQ&A
- スクリーンセイバーの作り方?
画像をランダムに表示させるだけのシンプルなスクリーンセイバーを作りたいと思っています。 VBかVCでやりたいと思うのですが、プログラミングのなんたるかもわからない超初心者ですので、どこから手をつけて良いかわかりません。 スクリーンセイバーって初心者には敷居の高いプログラムなのでしょうか? まずどういったところから勉強すればいいか…とか、サンプルソースを配布しているようなサイトがあれば、どうか教えてください。
- 締切済み
- Visual Basic
- C++の画像処理について【画像のピクセル値を表示する方法】
画像処理に関する質問です。初歩的なことかもしれませんが、ご教授お願いいたします。 開発環境はVisual C++ 2005です。 JPEGまたはBMP画像を読み込んで、その画像のピクセル値を表示するプログラムを作成したいのですが、まったくどうしてよいか判らず、行き詰っています。 これまでいろいろ試してみたのですが、読み込んだ画像をBit値に変換してしまったり(そのせいでパソコンがクラッシュしてしまいました…)、うまくいきません。 画像処理の対象となる原画像を取り込み、その原画像のピクセルの色情報を表示するためには、どのような処理を行えばよいのでしょうか? どうぞよろしくお願いします。
- 締切済み
- C・C++・C#
- 【VisualC++.NET】画像の表示に関して質問です
『VisualC++.NET』を使用して画像処理プログラムを作成している高専生なのですが、表示方法に関して質問です。 今現在は『MFCアプリケーション』の『シングルドキュメント』で画像処理プログラムを作成し、画像を表示させていますが、このままでは、元画像を表示させたまま処理後の画像を表示させることができません。 そのため、処理後の画像を「ダイアログ」に表示させたいのですが、その方法やそれにつながる良い情報をご存知の方がいらっしゃるようでしたら、お教え願います。
- ベストアンサー
- C・C++・C#
- ファイルアクセスより先にCPUやメモリが動くことはありますか?
現在、画像の表示などを行うプログラムを、VC++2005で記述しています。 (.NETではなく、DirectXでもなく、Win32APIを使っています。) 次のような問題が起きたのですが、原因がはっきりしませんので、 ご助言いただければと思います。 マウスカーソルが重なった時点で画像を即時に表示する、という動作を 記述したのですが、うまくいかない時には、画像が出ません。 (ちゃんと表示されたりされなかったりします。) また、他人の高速なマシン環境で動作させると、それだけでなく、 他の大量の画像を読み込み・出力する処理が、正常に動きません。 つまり、画像が表示されないのですが・・・。 一応、推測される原因としては、次のように考えています。 画像を表示するには、まずBMPへのファイルアクセス、続いて メモリに乗せて、最後にウィンドウを再描画して表示、となりますが、 この、最初のファイルアクセスが終わらないうちに、 もしかすると次の処理が走ってしまっているのではないか、 と想像されます。 根拠としては、先に記述した現象からの想像なのですが、 <1> マウスを何度もかぶせ、何度もファイルアクセスさせる、ということは その回数分だけファイルアクセスが起きているということであり、 メモリやCPUはついていけても、ディスクは間に合わないでいるのでは ないか、と思われたこと <2> 高速なマシンで動かすと画像の取得に失敗するのに、低速なマシンで 動かすと正しく表示される(OSなどの環境は同じです)、ということは、 つまり、ディスクと、メモリ+CPUとの間の速度のギャップが大きい、 ゆえにディスクが取り残されてしまったためではないか、と思われたこと 勿論、マウスオーバーイベントで毎回ディスクアクセス、なんて作り自体 まずいのはわかっていますので、これは何れ修正しますが、 ただ、上記のような推論は正しいのでしょうか? もし正しいとすれば、どのような処理を記述すれば、 この現象を防ぐことができますでしょうか? どなたか教えてくださればと思います。 よろしくお願い致します。
- 締切済み
- C・C++・C#
- 画像一致判定のアルゴリズム
【やりたいこと】 2枚のデジカメなどで撮った画像を自動で合成したいのです。 その2枚は少し(数十ピクセル)左右上下にずれた画像で、最終的にはその2枚を平均化するなどして合成したい。 問題は、その2枚の画像がどの方向に何ピクセルずれているかを求めなければならないのです。 とりあえず1ピクセルずらしながら、差分を合計しその差分が最小となるずれを見つけるようにプログラムしましたが実用的な速度になりません。 【質問したいこと】 2枚の画像のずれを高速に求めるアルゴリズムはありませんでしょうか。 精度はあまり良くなくても構いません。ある程度絞り込めればその付近を1ピクセル調べる方法をとります。
- ベストアンサー
- その他(プログラミング・開発)
- ファイルの中の画像読み込み
VC++でOpenCVを使いながらプログラムを組んでいます。 大量の画像に自分の作ったプログラムの処理をかけようと思っています。 そこで、ファイルの中にある、名前に共通性のない画像に対して処理をかけたいのですが、 その画像読み込み方法がわかりません。 このような場合はすべて名前を手で変更なりするしかないのでしょうか。 どこかのHPには載っているのかもしれませんが、 相応しいワードが見つからず自分の手では見つけられませんでした。 できればHPかプログラムの書き方、検索ワードでもいいので教えていただきたいです。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- C# 画像のトリミング処理
C#の課題で画像のトリミング処理を行いたいのですが、 どういった処理を行えばいいのか分かりません。 ネットでもいろいろ調べてみたのですが、 Picturebox上に表示させる画像のトリミング方法は見つかっても、 画像そのものにトリミング処理を行う方法は載っていませんでした。 上記のソースを参考にして、 Pictureboxをプリントスクリーンで撮って保存するやり方も試してみたのですが、Pictureboxよりも大きな画像(パソコンの解像度ぎりぎり)の処理で上手くいきません。 C#のソースプログラムでは 画像そのものに直接手を加える形でのトリミング処理は出来ないのでしょうか?
- ベストアンサー
- C・C++・C#
- プログラムについて
プログラムを勉強していてわからないことが3つあります。 1ソースプログラムを編集し、次にコンパイルしてオブジェクト プログラムを作成し、さらに関数を引用した場合などには他の オブジェクトプログラムと結合し、最終的に実行形式の プログラムを得て実行します。 と教科書に書いてあるのですが、関数を引用した場合などには他のオブジェクトプログラムと結合するとはどういうことですか? 2メモリを多く費やせば処理は速くなり、処理速度を犠牲にすればメモリを節約できるとありますがなぜこうなるのですか? メモリを節約するとどんなメリットがありますか? 3プログラムの高速化では 必要な演算回数を少なくする。無駄な繰り返しを省く。 速い演算を多くし、遅い演算を少なくする。 とあるのですが具体的にどういうことですか? プログラム初心者です。 わかりやすく教えていただければ幸いです。 どうぞよろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- メモリの開放を全て行いたいが開放し損ねている VC++6.0 使用
こんにちは。 Win2000環境 VC++6を使用してあるアプリケーションを開発してまして そのアプリ終了時に、確保したメモリを開放しているのですが 「すべてのメモリを開放できませんでした」というような表示がされてしまいます。 (この表示文字自体は、そのアプリの仕様です。エラーチェックしてくれています) 自分ではmallocしたデータは全て開放しているつもりですが どのメモリ(変数)が開放し損ねているのかわからずに困っています。 VCのデバッグモードを使用して処理をたどってみても、場所が特定できません。 mallocしている部分をコメントアウト等して ちょっとづつでも場所を特定できればいいのですが、 諸事情により(プログラムの処理上)それができない形になっています。 皆さんは、メモリを開放させる処理で、どこかメモリを開放し損ねている場合 どのようにその場所を突き止めているのでしょうか? VC++のデバッグモードの何かしらの機能か何かで その場所を表示させるような事なのできないのでしょうか? ちょっとわかりにくい説明ですが、 ご存知の方、どうぞよろしくお願い致します。
- ベストアンサー
- C・C++・C#
お礼
すみません、CreateDIBSectionを使用したら無事にできました。 ありがとうございました。
補足
迅速な解答ありがとうございます。 CreateCompatibleDCでメモリデバイスコンテキストは作成できました。 恐らく、画面全体のdcからメモリdcにbitbltか何かを使ってコピーするということでしょうか。 そうだとすると、メモリdcにコピーしたあと、どこに画像情報が含まれているのかわからないのですが。