本文整理汇总了C++中CDib::ClipCDib方法的典型用法代码示例。如果您正苦于以下问题:C++ CDib::ClipCDib方法的具体用法?C++ CDib::ClipCDib怎么用?C++ CDib::ClipCDib使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CDib
的用法示例。
在下文中一共展示了CDib::ClipCDib方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateDepthStream
void CVisionTab::updateDepthStream()
{
if(WAIT_OBJECT_0 == WaitForSingleObject(kinect.m_dFrameReadyEvent, 0))
{
if(pBufDepth == NULL && pDepth != NULL) {
pBufDepth = pDepth->CopyCDib();
SetEvent(m_GetDimgEvent);
}
if(pDepth != NULL) {delete pDepth; pDepth=NULL;}
CDib *pDibDepth = kinect.getCDibDepthImage()->CopyCDib();
pDepth = pDibDepth->CopyCDib();
if(pDibDepth) {
// Display update
if(clip) {
CDib *pDepth = pDibDepth->ClipCDib(m_ClipRect); // memory leak when using median filter...
m_DispDepth.SetDib(pDepth);
} else {
m_DispDepth.SetDib(pDibDepth->CopyCDib());
}
delete pDibDepth;
}
}
}
示例2: GetDepthClipImage
CDib* CVisionTab::GetDepthClipImage(RECT *pRect)
{
CDib* pTmp;
CDib* pDib;
if(WAIT_OBJECT_0 == WaitForSingleObject(m_GetDimgEvent, INFINITE))
pTmp = GetDepthImage();
if(pTmp) pDib = pTmp->ClipCDib(pRect);
delete pTmp; pTmp=NULL;
return pDib;
}
示例3: ColorBoxRecog
//.........这里部分代码省略.........
}
}
// *****************************************************************
//
// 본 프로그램의 좌표는 크게 아래 3가지로 나뉜다.
// Clip 좌표(ci_pt): clip image를 기준으로 한 좌표
// Global image 좌표(mpt): 640x480의 전체 이미지를 기준으로 한 좌표
// World 좌표: Camera calibration을 통한 월드 좌표계
//
// *****************************************************************
static Coordi prePoint[NUMBOX]; // Low pass filter구현을 위한 이전 좌표 저장 변수
static Coordi preGiPt[NUMBOX];
double alpha = 0.3;
Coordi gi_pt[NUMBOX]; // global image point
unsigned char val = 255;
CDib* bDib[NUMBOX];
// RGBY in order
for(i=0; i<NUMBOX; i++) {
// Color Box Position ------------------
CPoint cp = kdemat[i]->GetMaxCoordi(); // Clip image에서의 KDE max 좌표
CPoint ci_pt = kdemat[i]->GetThresMeanCoordiClip(0.2, cp, 60); // depth 정보에 따른 Area 계산식 구현할 것!
//bDib[i] = kdemat[i]->GetThresBinaryClip(0.1, cp, 60); // Binary image 사용
// Color Box Orientation ----------------
CDib* pTmp[10] = {NULL,}; // Image processing 후 지우기 위한 배열
int sub=20;
pTmp[0] = src->ClipCDib(ci_pt.x-sub, ci_pt.y-sub, ci_pt.x+sub, ci_pt.y+sub); // Clipped Grayscale 이미지 사용
pTmp[1] = pTmp[0]->GetGrayCDib();
//pTmp[2] = pTmp[1]->BrightnessG(25);
pTmp[3] = pTmp[1]->ContrastG(3);
pTmp[10] = pTmp[3]->GaussianSmoothingG(2);
bDib[i] = pTmp[10];
for(int k=0; k<10; k++){
if(pTmp[k]) { delete pTmp[k]; pTmp[k]=NULL;}
}
double maxkde = kdemat[i]->GetMaxValue();
double currx = (ci_pt.x + m_ClipRect.left);
double curry = (ci_pt.y + m_ClipRect.top);
double currz = (double)kinect.getDepthValue(currx, curry);
double currRz = bDib[i]->GetSobelOrientation(); // 여기서 실제 orientation 계산
// Get global x, y, z-axis coordinate
// Global image 좌표, Low pass filter
gi_pt[i].x = currx*alpha + (1-alpha)*preGiPt[i].x;
gi_pt[i].y = curry*alpha + (1-alpha)*preGiPt[i].y;
gi_pt[i].z = currz*alpha + (1-alpha)*preGiPt[i].z;
gi_pt[i].rz = currRz*alpha + (1-alpha)*preGiPt[i].rz;
// depth noise 처리
if(currz == 0.0) {
gi_pt[i].z = preGiPt[i].z; // 현재 depth 값이 0일 경우 이전 값을 사용
}