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 ); }
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); }