將矩形區域螢屏像素值存盤于二維陣列以便計算特征識別數字
引數不太懂設定,直接給我完整代碼吧 每秒要能讀2次,在VS2017下編譯通過的
uj5u.com熱心網友回復:
差不多就是 GetDIBits 的應用http://blog.csdn.net/iamshuke/article/details/5749948
uj5u.com熱心網友回復:
參考http://www.autohotkey.comImageSearch功能對應源代碼。uj5u.com熱心網友回復:
見你的另一個帖子uj5u.com熱心網友回復:
看看各位高招uj5u.com熱心網友回復:
就是CreateCompatibleDC
CreateDIBSection // 直接取到像素資料的指標
從螢屏BitBlt到建立的DC
從指標直接讀像素
分分鐘的事,還要什么完整代碼
結帖率:0%可是信譽度不高哦
uj5u.com熱心網友回復:
很棒,很好,謝謝樓主分享uj5u.com熱心網友回復:
/*************************************************************************
*
* \函式名稱:
* CopyScreenToDIB
*
* \輸入引數:
* LPRECT lpRect - 需要拷貝的螢屏區域
* CDib* pDibDest - 指向目標CDib物件的指標
*
* \回傳值:
* BOOL - 如果操作成功,則回傳TRUE
*
* \說明:
* 該函式將指定矩形位置內的螢屏內容拷貝到DIB中源CDib類pDibSrc中的資料拷貝到pDibDst中
*
*************************************************************************
*/
BOOL CopyScreenToDIB(LPRECT lpRect, CDib* pDibDest)
{
// 螢屏設備背景關系和記憶體設備背景關系句柄
HDC hScrDC, hMemDC;
// 宣告BITMAP臨時句柄和以前的BITMAP句柄
HBITMAP hBitmap, hOldBitmap;
// 調色板句柄
HPALETTE hPalette;
// 獲取矩形區域的坐標
int nX, nY, nX2, nY2;
// DIB圖象的高度和寬度
int nWidth, nHeight;
// 螢屏解析度
int xScrn, yScrn;
// 如果給定的矩形區域為空,則不進行進一步的處理
if (IsRectEmpty(lpRect)) return FALSE;
// 得到一個螢屏設備背景關系
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
// 創建與螢屏設備兼容的記憶體設備背景關系
hMemDC = CreateCompatibleDC(hScrDC);
// 得到矩形的區域坐標
nX = lpRect->left;
nY = lpRect->top;
nX2 = lpRect->right;
nY2 = lpRect->bottom;
// 得到螢屏的解析度,以便后面的判斷處理
xScrn = GetDeviceCaps(hScrDC, HORZRES);
yScrn = GetDeviceCaps(hScrDC, VERTRES);
// 判斷矩形區域是否超出螢屏
if (nX < 0) nX = 0;
if (nY < 0) nY = 0;
if (nX2 > xScrn) nX2 = xScrn;
if (nY2 > yScrn) nY2 = yScrn;
// 計算DIB圖象的高度和寬度
nWidth = nX2 - nX;
nHeight = nY2 - nY;
// 創建一個與螢屏設備背景關系兼容的DDB位圖
hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
// 將DDB位圖選入記憶體設備背景關系
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
// 將螢屏中指定區域的圖象傳輸到記憶體設備背景關系中
BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, nX, nY, SRCCOPY);
// 然后將以前的圖象選入,并得到螢屏區域的DDB圖象句柄
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);
// 將臨時的設備背景關系洗掉
DeleteDC(hScrDC);
DeleteDC(hMemDC);
// 得到當前系統調色板
hPalette = GetSystemPalette();
// 將DDB圖象轉換為DIB圖象
pDibDest->ConvertFromDDB(hBitmap,hPalette);
// 洗掉臨時物件
DeleteObject(hPalette);
DeleteObject(hBitmap);
return TRUE;
}
uj5u.com熱心網友回復:
CreateDIBSection 亮了!uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
呵呵,記得有個CDib類可以完成這一切uj5u.com熱心網友回復:
使用CreateDIBSection ,將視窗資料BitBlt到記憶體DC然后直接操作記憶體uj5u.com熱心網友回復:
一種馬甲而已。
uj5u.com熱心網友回復:
馬甲人人會穿,各有巧妙不同。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/73873.html
標籤:圖形處理/算法
上一篇:pcap_next_ex()回傳值為1.但是沒有資料
下一篇:新人求救,完成埠發送資料的問題
