利用鼠标在图象上画任意区域,因为一般程序扣取之后,提取的都是当前区域的最小矩形.
现在利用opencv能提取最准确的区域.代码如下
//vcPoint是记录所有鼠标移动的点
vector<CPoint>::iterator itor=vcCPoint.begin();
int number = vcCPoint.size();
CvScalar scalar;
CvMat* storage = cvCreateMat(1,number,CV_32FC2);
int i=0,j=0;
while(itor!=vcCPoint.end())
{
scalar.val[0]=itor->x;
scalar.val[1]=itor->y;
cvSet1D(storage,i++,scalar);
itor++;
}
CvPoint2D32f pt;
for(i=0;i<tmpImg->GetWidth();i++)
{
for(j=0;j<tmpImg->GetHeight();j++)
{
pt.x=i;
pt.y=j;//这里判断图象的点是否在这个区域里面
if(cvPointPolygonTest(storage,pt,0)<0)
{
tmpImg->SetPixelColor(i,tmpImg->GetHeight()-j-1,RGB(255,255,255));
}
}
}
cvReleaseMat(&storage);