1.已经实现鼠标坐标与CCD靶面坐标对应上,左上角为起始点0,0;
2.想根据鼠标点击图像,以点击的位置为中心,处理200*200像素范围内的图像,并计算出所在CCD靶面中的位置。
如:鼠标点击屏幕得到位置(703,241)
计算出200*200的位置
Nrect.left =(point.x-200);
Nrect.top =(point.y-200);
Nrect.right =(point.x+200);
Nrect.bottom =(point.y+200);
得到:
Nrect.left=503;
Nrect.top=41;
Nrect.right=903;
Nrect.bottom=441;
with=pDesc->m_pBmpInfo->bmiHeader.biWidth; //取CCD宽度1280 height=pDesc->m_pBmpInfo->bmiHeader.biHeight;//取CCD高度1024 int X_axisN=0; int Y_axisN=0; int num=0; int gao=Nrect.top; int zuo=Nrect.left; for(int i=gao;i<gao+400;i++) { for(int j=zuo;j<zuo+400;j++) { if (pDesc->m_pRawBuffer[i*with+j]>180)// ////////// {// if(pDesc->m_pRawBuffer[i*with+j]>180||(pDesc->m_pRawBuffer[i*with+j]>180)){ Y_axisN=Y_axisN+i; X_axisN=X_axisN+j; num++; } else { // pDesc->m_pRawBuffer[i*with+j] = 10; } }// else { pDesc->m_pRawBuffer[i*with+j] = 10;// } } } X_axisN=X_axisN/num; Y_axisN=Y_axisN/num;
经过测试,图像在200*200区域内,鼠标点击中心与点中心偏一点,显示的灰度值计算有变化,按道理只要在200*200范围内,图像计算出来的数值基本上是一样的,是不是代码没有写对呢?谢谢大家
怎么不用openCV,里面直接由截图的函数,图像大小可以自己设定
鼠标坐标是屏幕坐标,要转化为客户区的坐标:
SCreenToClient(point);