本文整理汇总了C++中yarp::sig::ImageOf::pixel方法的典型用法代码示例。如果您正苦于以下问题:C++ ImageOf::pixel方法的具体用法?C++ ImageOf::pixel怎么用?C++ ImageOf::pixel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类yarp::sig::ImageOf
的用法示例。
在下文中一共展示了ImageOf::pixel方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: display
void TrackerPool::display(yarp::sig::ImageOf<yarp::sig::PixelRgb> &img){
for(int ii=0; ii<trackers_.size(); ii++){
if(trackers_[ii].is_active()){
//yarp::sig::PixelRgb color = trackers_[ii].is_active()?yarp::sig::PixelRgb(0, 0, 255):yarp::sig::PixelRgb(0, 255, 0);
yarp::sig::PixelRgb color = yarp::sig::PixelRgb(0, 0, 255);
trackers_[ii].display(img, color);
}
}
std::vector<int> to_delete;
for(int ii=0; ii<collisions_disp_.size(); ii++){
for(int jj=-1; jj<1; jj++){
for(int kk=-1; kk<1; kk++){
int x = collisions_disp_[ii].x + jj;
int y = collisions_disp_[ii].y + kk;
if(x>=0 && x<128 && y>=0 && y<128){
img.pixel(y, x) = yarp::sig::PixelRgb(20, 0, 255);
}
}
}
if(++collisions_disp_[ii].count_disp == 100){
to_delete.push_back(ii);
}
}
while(to_delete.size()>0){
int to_del = to_delete.back();
collisions_disp_.erase(collisions_disp_.begin() + to_del);
to_delete.pop_back();
}
}
示例2: debayerHalf
bool BayerCarrier::debayerHalf(yarp::sig::ImageOf<PixelMono>& src,
yarp::sig::ImageOf<PixelRgb>& dest) {
// dc1394 doesn't seem safe for arbitrary data widths
if (src.width()%8==0) {
dc1394video_frame_t dc_src;
dc1394video_frame_t dc_dest;
setDcImage(src,&dc_src,dcformat);
setDcImage(dest,&dc_dest,dcformat);
dc1394_debayer_frames(&dc_src,&dc_dest,DC1394_BAYER_METHOD_DOWNSAMPLE);
return true;
}
if (bayer_method_set && !warned) {
fprintf(stderr, "Not using dc1394 debayer methods (image width not a multiple of 8)\n");
warned = true;
}
// a safer implementation that doesn't use dc1394
int w = src.width();
int h = src.height();
int wo = dest.width();
int ho = dest.height();
int goff1 = 1-goff;
int roffx = roff?goff:goff1;
int boff = 1-roff;
int boffx = boff?goff:goff1;
for (int yo=0; yo<ho; yo++) {
for (int xo=0; xo<wo; xo++) {
PixelRgb& po = dest.pixel(xo,yo);
int x = xo*2;
int y = yo*2;
if (x+1>=w-1 || y+1>=h-1) {
po = PixelRgb(0,0,0);
continue;
}
po.r = src.pixel(x+roffx,y+roff);
po.b = src.pixel(x+boffx,y+boff);
po.g = (PixelMono)(0.5*(src.pixel(x+goff,y)+src.pixel(x+goff1,y+1)));
}
}
return true;
}
示例3: copyImage
void copyImage(yarp::sig::ImageOf<yarp::sig::PixelRgb>& src,
Magick::Image& dest) {
int h = src.height();
int w = src.width();
dest.size(Magick::Geometry(w,h));
dest.depth(8);
for (int i=0; i<h; i++) {
// must transfer row by row, since YARP may use padding in representation
Magick::PixelPacket *packet = dest.setPixels(0,i,w,1);
dest.readPixels(Magick::RGBQuantum,(unsigned char *)(&src.pixel(0,i)));
}
dest.syncPixels();
}
示例4: debayerFull
bool BayerCarrier::debayerFull(yarp::sig::ImageOf<PixelMono>& src,
yarp::sig::ImageOf<PixelRgb>& dest) {
// dc1394 doesn't seem safe for arbitrary data widths
if (src.width()%8==0) {
dc1394video_frame_t dc_src;
dc1394video_frame_t dc_dest;
setDcImage(src,&dc_src,dcformat);
setDcImage(dest,&dc_dest,dcformat);
dc1394_debayer_frames(&dc_src,&dc_dest,
(dc1394bayer_method_t)bayer_method);
return true;
}
if (bayer_method_set && !warned) {
fprintf(stderr, "Not using dc1394 debayer methods (image width not a multiple of 8)\n");
warned = true;
}
int w = dest.width();
int h = dest.height();
int goff1 = 1-goff;
int roffx = roff?goff:goff1;
int boff = 1-roff;
int boffx = boff?goff:goff1;
for (int y=0; y<h; y++) {
for (int x=0; x<w; x++) {
PixelRgb& po = dest.pixel(x,y);
// G
if ((x+y)%2==goff) {
po.g = src.pixel(x,y);
} else {
float g = 0;
int ct = 0;
if (x>0) { g += src.pixel(x-1,y); ct++; }
if (x<w-1) { g += src.pixel(x+1,y); ct++; }
if (y>0) { g += src.pixel(x,y-1); ct++; }
if (y<h-1) { g += src.pixel(x,y+1); ct++; }
if (ct>0) g /= ct;
po.g = (int)g;
}
// B
if (y%2==boff && x%2==boffx) {
po.b = src.pixel(x,y);
} else if (y%2==boff) {
float b = 0;
int ct = 0;
if (x>0) { b += src.pixel(x-1,y); ct++; }
if (x<w-1) { b += src.pixel(x+1,y); ct++; }
if (ct>0) b /= ct;
po.b = (int)b;
} else if (x%2==boffx) {
float b = 0;
int ct = 0;
if (y>0) { b += src.pixel(x,y-1); ct++; }
if (y<h-1) { b += src.pixel(x,y+1); ct++; }
if (ct>0) b /= ct;
po.b = (int)b;
} else {
float b = 0;
int ct = 0;
if (x>0&&y>0) { b += src.pixel(x-1,y-1); ct++; }
if (x>0&&y<h-1) { b += src.pixel(x-1,y+1); ct++; }
if (x<w-1&&y>0) { b += src.pixel(x+1,y-1); ct++; }
if (x<w-1&&y<h-1) { b += src.pixel(x+1,y+1); ct++; }
if (ct>0) b /= ct;
po.b = (int)b;
}
// R
if (y%2==roff && x%2==roffx) {
po.r = src.pixel(x,y);
} else if (y%2==roff) {
float r = 0;
int ct = 0;
if (x>0) { r += src.pixel(x-1,y); ct++; }
if (x<w-1) { r += src.pixel(x+1,y); ct++; }
if (ct>0) r /= ct;
po.r = (int)r;
} else if (x%2==roffx) {
float r = 0;
int ct = 0;
if (y>0) { r += src.pixel(x,y-1); ct++; }
if (y<h-1) { r += src.pixel(x,y+1); ct++; }
if (ct>0) r /= ct;
po.r = (int)r;
} else {
float r = 0;
int ct = 0;
if (x>0&&y>0) { r += src.pixel(x-1,y-1); ct++; }
if (x>0&&y<h-1) { r += src.pixel(x-1,y+1); ct++; }
if (x<w-1&&y>0) { r += src.pixel(x+1,y-1); ct++; }
if (x<w-1&&y<h-1) { r += src.pixel(x+1,y+1); ct++; }
if (ct>0) r /= ct;
po.r = (int)r;
}
}
}
return true;
}
示例5: createTestImage
void TestFrameGrabber::createTestImage(yarp::sig::ImageOf<yarp::sig::PixelRgb>&
image) {
// to test IPreciselyTimed, make timestamps be mysteriously NNN.NNN42
double t = Time::now();
t -= ((t*1000)-(int)t)/1000;
t+= 0.00042;
stamp.update(t);
if (background.width()>0) {
image.copy(background);
} else {
image.zero();
image.resize(w,h);
}
switch (mode) {
case VOCAB_BALL:
{
addCircle(image,PixelRgb(0,255,0),bx,by,15);
addCircle(image,PixelRgb(0,255,255),bx,by,8);
if (ct%5!=0) {
rnd *= 65537;
rnd += 17;
bx += (rnd%5)-2;
rnd *= 65537;
rnd += 17;
by += (rnd%5)-2;
} else {
int dx = w/2 - bx;
int dy = h/2 - by;
if (dx>0) { bx++; }
if (dx<0) { bx--; }
if (dy>0) { by++; }
if (dy<0) { by--; }
}
}
break;
case VOCAB_GRID:
{
int ww = image.width();
int hh = image.height();
if (ww>1&&hh>1) {
for (int x=0; x<ww; x++) {
for (int y=0; y<hh; y++) {
double xx = ((double)x)/(ww-1);
double yy = ((double)y)/(hh-1);
int r = int(0.5+255*xx);
int g = int(0.5+255*yy);
bool act = (y==ct);
image.pixel(x,y) = PixelRgb(r,g,act*255);
}
}
}
}
break;
case VOCAB_LINE:
default:
{
for (int i=0; i<image.width(); i++) {
image.pixel(i,ct).r = 255;
}
}
break;
case VOCAB_RAND:
{
// from Alessandro Scalzo
static unsigned char r=128,g=128,b=128;
int ww = image.width();
int hh = image.height();
if (ww>1&&hh>1) {
for (int x=0; x<ww; x++) {
for (int y=0; y<hh; y++) {
//r+=(rand()%3)-1;
//g+=(rand()%3)-1;
//b+=(rand()%3)-1;
r += Random::uniform(-1,1);
g += Random::uniform(-1,1);
b += Random::uniform(-1,1);
image.pixel(x,y) = PixelRgb(r,g,b);
}
}
}
}
break;
case VOCAB_NONE:
break;
}
ct++;
if (ct>=image.height()) {
ct = 0;
}
if (by>=image.height()) {
by = image.height()-1;
}
if (bx>=image.width()) {
bx = image.width()-1;
}
if (bx<0) bx = 0;
if (by<0) by = 0;
//.........这里部分代码省略.........