本文整理汇总了C++中Image::DrawLine方法的典型用法代码示例。如果您正苦于以下问题:C++ Image::DrawLine方法的具体用法?C++ Image::DrawLine怎么用?C++ Image::DrawLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Image
的用法示例。
在下文中一共展示了Image::DrawLine方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw_box
/**************************************************************************//**
* @author Hannah Aker
*
* @par Description:
* draw_box - draws boxes around transformation spaces
*
* @param[in,out] image - original image of target
* @param[in,out] ts - object containing transformation space
* @param[in] rows - model height
* @param[in] cols - model width
*
*****************************************************************************/
void draw_box(Image& image, vector<tsObject> &ts, int rows, int cols)
{
// four points for the corners of our outline box
point p1, p2, p3, p4;
for(unsigned int i = 0; i < ts.size(); i++)
{
// set the corners to the transformed model
p1.x = ts[i].transXCenter;
p1.y = ts[i].transYCenter;
p2.x = ts[i].transXCenter + (cols * ts[i].scaleXCenter);
p2.y = ts[i].transYCenter;
p3.x = ts[i].transXCenter;
p3.y = ts[i].transYCenter + (rows * ts[i].scaleYCenter);
p4.x = ts[i].transXCenter + (cols * ts[i].scaleXCenter);
p4.y = ts[i].transYCenter + (rows * ts[i].scaleYCenter);
// draw the lines
image.DrawLine(p1.x, p1.y, p2.x, p2.y, Pixel(0,255,0));
image.DrawLine(p1.x, p1.y, p3.x, p3.y, Pixel(0,255,0));
image.DrawLine(p2.x, p2.y, p4.x, p4.y, Pixel(0,255,0));
image.DrawLine(p4.x, p4.y, p3.x, p3.y, Pixel(0,255,0));
}
}
示例2: main
//.........这里部分代码省略.........
bottom = (bottom + 1) * yScale - 1;
if ( (right - left + 1 < FLESH_REGION_MIN_DIMENSION) || (bottom - top + 1 < FLESH_REGION_MIN_DIMENSION) )
continue;
numLargeRegions++;
handImage.CreateFromParent(image, left, right, top, bottom);
vector<ConnectedRegion*>* fullResRegions;
fullResRegions = fleshDetector->GetFleshRegions(&handImage);
int numFullResRegions = 0;
if ( fullResRegions )
numFullResRegions = fullResRegions->size();
if ( !numFullResRegions )
{
fprintf(stderr, "Failed getting full resolution hand candidate\n");
return 1;
}
int regionIndex = 0;
if ( numFullResRegions > 1 )
{
for (k = 1; k < numFullResRegions; k++)
if ( (*fullResRegions)[k]->HasMorePixels( *((*fullResRegions)[regionIndex]) ) )
regionIndex = k;
}
candidate = new HandCandidate( (*fullResRegions)[regionIndex] );
if ( !candidate->GetScaledFeatures(1, 1, centroid, center, nearEdge, farEdge,
shortLine, longLine, offsetLine, edgeAngle, offsetAngle) )
{
fprintf(stderr, "Error getting hand candidate features for flesh block %d\n", i);
return 1;
}
angledBox = candidate->GetAngledBoundingBox(longLine);
farPoints.clear();
if ( !candidate->GetFarPoints(farPoints) )
fprintf(stderr, "Error getting far points for flesh block %d\n", i);
numFarPoints = farPoints.size();
centroid = handImage.GetTopLevelCoords(centroid);
center = handImage.GetTopLevelCoords(center);
nearEdge = handImage.GetTopLevelCoords(nearEdge);
farEdge = handImage.GetTopLevelCoords(farEdge);
shortLine.Translate(left, top);
longLine.Translate(left, top);
offsetLine.Translate(left, top);
angledBox.Translate(left, top);
for (k = 0; k < numFarPoints; k++)
farPoints[k] = handImage.GetTopLevelCoords(farPoints[k]);
if ( !candidate->GetFeatureVector(features, input) )
{
fprintf(stderr, "Error getting hand candidate features for flesh block %d\n", i);
return 1;
}
classIndex = postureDetector.Classify(input);
if ( classIndex != -1 )
{
hand = new Hand;
hand->SetBounds(left, right, top, bottom);
hand->SetPostureString(postureDetector.GetClassName(classIndex));
hands.push_back(hand);
}
delete candidate;
outlineImage.DrawLine(longColor, 1, longLine);
outlineImage.DrawLine(shortColor, 1, shortLine);
outlineImage.DrawLine(offsetColor, 1, offsetLine);
outlineImage.DrawLine(pointColor, 1, centroid, centroid);
outlineImage.DrawLine(pointColor, 1, center, center);
outlineImage.DrawLine(pointColor, 1, nearEdge, nearEdge);
outlineImage.DrawLine(pointColor, 1, farEdge, farEdge);
outlineImage.DrawRect(angledBoxColor, 1, angledBox);
for (k = 0; k < numFarPoints; k++)
outlineImage.DrawLine(farPointColor, 1, centroid, farPoints[k]);
}
numHands = hands.size();
for (j = 0; j < numHands; j++)
{
hands[j]->GetBounds(left, right, top, bottom);
outlineImage.DrawBox(hands[j]->GetPostureColor(0),
hands[j]->GetPostureColor(1),
hands[j]->GetPostureColor(2),
hands[j]->GetPostureColor(3),
3, left, top, right, bottom);
delete hands[j];
}
hands.clear();
}
if ( !encoder.AddFrame(&outlineImage) )
{
fprintf(stderr, "Error inserting video frame\n");
return 1;
}
}
encoder.Close();
return 0;
}
示例3: Render
void TerrainTest::Render()
{
Image* scr = Screen::Instance();
if (!grid)
return;
color c;
tile* t;
tile* tt;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
t = GetTile(x, y);
c.r = c.g = c.b = t->height * 25;
scr->DrawRect( rect(x*TILE_SIZE, y*TILE_SIZE, TILE_SIZE, TILE_SIZE), c, true);
if (m_bDisplayTypeMap)
{
//Mark tile types
c = color();
switch (GetTileType(x, y))
{
case TILE_SOUTHEDGE:
c.r = 255;
break;
case TILE_WESTEDGE:
c.g = 255;
break;
case TILE_EASTEDGE:
c.b = 255;
break;
case TILE_NORTHEDGE:
c.r = c.g = 255;
break;
case TILE_SWEDGE:
c.r = 128;
break;
case TILE_SEEDGE:
c.g = 128;
break;
case TILE_NWEDGE:
c.b = 128;
break;
case TILE_NEEDGE:
c.r = c.g = 128;
break;
case TILE_SWBEND:
c.g = c.b = 255;
break;
case TILE_SEBEND:
c.g = c.b = 128;
break;
case TILE_NEBEND:
c.r = c.b = 255;
break;
case TILE_NWBEND:
c.r = c.b = 128;
break;
default: break;
}
if (!isDefaultColor(c))
scr->DrawRound( x*TILE_SIZE, y*TILE_SIZE, TILE_SIZE, TILE_SIZE, TILE_SIZE/2, c);
}
//Render edge lines for all tiles that have too drastic a height difference between them
tt = GetTile(x, y-1);
if (tt)
{
if (tt->height > t->height+1)
scr->DrawLine(x*TILE_SIZE, y*TILE_SIZE, x*TILE_SIZE+16, y*TILE_SIZE, color(255), 2);
else if (tt->height+1 < t->height)
scr->DrawLine(x*TILE_SIZE, y*TILE_SIZE, x*TILE_SIZE+16, y*TILE_SIZE, color(0,255), 2);
}
tt = GetTile(x, y+1);
if (tt)
{
if (tt->height > t->height+1)
scr->DrawLine(x*TILE_SIZE, y*TILE_SIZE+14, x*TILE_SIZE+16, y*TILE_SIZE+14, color(255), 2);
else if (tt->height+1 < t->height)
scr->DrawLine(x*TILE_SIZE, y*TILE_SIZE+14, x*TILE_SIZE+16, y*TILE_SIZE+14, color(0,255), 2);
}
tt = GetTile(x+1, y);
if (tt)
{
if (tt->height > t->height+1)
scr->DrawLine(x*TILE_SIZE+14, y*TILE_SIZE, x*TILE_SIZE+14, y*TILE_SIZE+14, color(255), 2);
else if (tt->height+1 < t->height)
scr->DrawLine(x*TILE_SIZE+14, y*TILE_SIZE, x*TILE_SIZE+14, y*TILE_SIZE+14, color(0,255), 2);
}
tt = GetTile(x-1, y);
if (tt)
{
if (tt->height > t->height+1)
scr->DrawLine(x*TILE_SIZE, y*TILE_SIZE, x*TILE_SIZE, y*TILE_SIZE+14, color(255), 2);
//.........这里部分代码省略.........