扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:longway 来源:天极开发 2007年10月16日
关键字:
|
void CDSControl::GetMousePos(BYTE* pb,int *xPos,int* yPos) { int x,y; BOOL mouseFound = FALSE; for(y = 0; y < m_bmpHei; y ++){ for(x = 0; x < m_bmpWid; x ++){ if(pb[0] == 255){ // 因为白色为(255,255,255),判断一个255 即可 pb[2] = 255; // 设为红色,别忘了 BGRA 的内存排列方式 pb[1] = pb[0] = 0; // // 计算坐标 *xPos = ScreenWid - x * ScreenWid / m_bmpWid; *yPos = y * ScreenHei / m_bmpHei; mouseFound = TRUE; break; } pb += 4; } if(mouseFound){ break; } } } |
(摄像头扫描坐标) (与屏幕坐标(蓝)相对的摄像头坐标(红)) |
*xPos = ScreenWid - x * ScreenWid / m_bmpWid; *yPos = y * ScreenHei / m_bmpHei; |
void CDSControl::DNS(BYTE* pIn,BYTE* pReduce,BYTE* pOut) { // pIn 新图的数据区指针,pReduce 背景指针,pOut 存储区指针 if(!pReduce) return; // 没有背景图就不处理 int differentPoint = 0; for(int i = 0; i < m_bmpBufferLen; i ++){ // m_bmpBufferLen 为数据区长度 pOut[i] = abs(pIn[i] - pReduce[i]); // 相减,取差值的绝对值 if(pOut[i] > 32){ // 相差大于 32 就认为是不同的点,此值因摄像头而异,与噪音有关,请自行试验 differentPoint ++; // 不同点增加 pOut[i] = pIn[i]; // 把不同点赋回它的颜色 } if(differentPoint > 200){ // 不同点大于 200 就认为有情况,应适当改变 // 调用警报等…… } } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者