実現したいこと
高速で画面上の指定座標上のRGB値を取得する(欲張った目標としては毎秒10000ピクセル程度の速度での解析、最低でも毎秒1500~3000ピクセル)
##問題点
以下のサンプルコードを参考に色々いじって30x16ピクセル分を取得するプログラムを作成したのですが、GetPixelのせいでたったそれだけを解析するのに五秒くらい時間がかかってしまいます。(printfもなにげに処理に時間を使うのでそれを取り除いた場合でも同じくらい時間がかかります)
bmp画像上のRGBを取得するプログラムをメモリに展開し、解析するプログラムでやったことがありますがその時は全く処理に時間を必要としなかったので頑張ればいけるのではないのかなと思っています。
C++
1#include <windows.h> 2#include <stdio.h> 3#include<string> 4#include<iostream> 5using namespace std; 6 7int main(void) 8{ 9 int exit; 10 11 HWND hWnd; 12 HDC hdc; 13 COLORREF clr; 14 INT x, y; 15 x = 1; 16 y = 1; 17 18 hWnd = GetDesktopWindow(); 19 hdc = GetWindowDC(hWnd); 20 clr = GetPixel(hdc, x, y); 21 ReleaseDC(hWnd, hdc); 22 printf("RGB = (%d,%d,%d)\n", 23 GetRValue(clr), 24 GetGValue(clr), 25 GetBValue(clr)); 26 27 cin >> exit;//なぜかキーを入力したら終了しますと表示されずに勝手に終了してしまうための対策用 28 return 0; 29}
【参考】Yahoo知恵袋
試したこと
処理の並列化をしたら少しは早くなるのでは?と思いやろうとしたのですがなぜかOpenMPを有効化にして、とりあえず動作確認でサンプルコードで動かしてみたのですが、”2フェーズの名前参照は、C++/CLI、C++/CX、OpenMP ではサポートされていません。/Zc:twoPhase- を使用します”と警告が出てきてったので諦めました...(このことについても質問したいのですが今回は大丈夫です。)
補足情報(FW/ツールのバージョンなど)
VisualStuido2017,Windws10
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/19 11:36
2018/12/20 01:01
2018/12/21 07:57