コード例 #1
0
void CEditView_Paint::Call_OnPaint(
	int nPaintFlag,   //!< 描画する領域を選択する
	bool bUseMemoryDC //!< メモリDCを使用する
)
{
	CEditView* pView = GetEditView();

	//各要素
	CMyRect rcLineNumber(0,pView->GetTextArea().GetAreaTop(),pView->GetTextArea().GetAreaLeft(),pView->GetTextArea().GetAreaBottom());
	CMyRect rcRuler(pView->GetTextArea().GetAreaLeft(),0,pView->GetTextArea().GetAreaRight(),pView->GetTextArea().GetAreaTop());
	CMyRect rcBody(pView->GetTextArea().GetAreaLeft(),pView->GetTextArea().GetAreaTop(),pView->GetTextArea().GetAreaRight(),pView->GetTextArea().GetAreaBottom());

	//領域を作成 -> rc
	std::vector<CMyRect> rcs;
	if(nPaintFlag & PAINT_LINENUMBER)rcs.push_back(rcLineNumber);
	if(nPaintFlag & PAINT_RULER)rcs.push_back(rcRuler);
	if(nPaintFlag & PAINT_BODY)rcs.push_back(rcBody);
	if(rcs.size()==0)return;
	CMyRect rc=rcs[0];
	int nSize = (int)rcs.size();
	for(int i=1;i<nSize;i++)
		rc=MergeRect(rc,rcs[i]);

	//描画
	PAINTSTRUCT	ps;
	ps.rcPaint = rc;
	HDC hdc = pView->GetDC();
	pView->OnPaint( hdc, &ps, bUseMemoryDC );
	pView->ReleaseDC( hdc );
}
コード例 #2
0
CvRect HoGProcessor::detectObject(CvSVM *svmModel, IplImage *input, IplImage *result, CvRect rectHead, int normalization){
	int StepWidth = 10;
	int StepHeight = 10;
	
	int nWindow = 3;
	
	int scaleWidth = 2;
	int scaleHeight = 2;

	ImageProcessor ip;

	//loai bo truong hop toc dai
	if(rectHead.height > rectHead.width)
		rectHead.height = rectHead.width;		

	CvRect rectHuman = cvRect(rectHead.x + rectHead.width/2 - rectHead.width*scaleWidth/2, 
		rectHead.y - 6, 
		rectHead.width*scaleWidth, 
		rectHead.height*scaleHeight);

	vector<CvRect> lstRect;
	CvMat* img_feature_vector;
	IplImage **newIntegrals;
	for(int i = 0; i < nWindow; i++)
	{
		for(int j = 0; j < nWindow; j++)
		{
			CvRect rect;
			rect.width = rectHuman.width + StepWidth*i;
			rect.height = rectHuman.height + StepHeight*j;
			rect.x = rectHuman.x - StepWidth*i/2;
			rect.y = rectHuman.y - StepHeight*j/2;
						
			if(rect.x < 0) rect.x = 0;
			if(rect.y < 0) rect.y = 0;
			if(rect.x + rect.width > input->width) rect.width = input->width - rect.x;
			if(rect.y + rect.height > input->height) rect.height = input->height - rect.y;		
			
			IplImage* candidate_img = ip.getSubImageAndResize(input, rect, 48, 48);
			if(candidate_img)
			{
				newIntegrals = calculateIntegralHOG(candidate_img);
				img_feature_vector = calculateHOG_window(newIntegrals,cvRect(0,0,48,48),4);
				
				for (int k = 0; k < 9; k++)
				{
					cvReleaseImage(&newIntegrals[k]);				
				}
				cvReleaseImage(newIntegrals);
				cvReleaseImage(&candidate_img);

				double predict_rs = svmModel->predict(img_feature_vector, true);				
				if(predict_rs >= -1)				
					lstRect.push_back(rect);		
								
				cvReleaseMat(&img_feature_vector);	
			}				
		}
	}	

	if(lstRect.size() > 0)
	{		
		return MergeRect(lstRect);				
	}	
	return cvRect(0,0,-1,-1);	
}