【processing计算机视觉】6.1.视觉追踪之颜色初步识别

计算机视觉基础知识

        经典场景:空间,光源,摄像机。像素单元:不同特征颜色的差异。

        对于RGB类的像素,通过距离函数比较颜色的相似程度float diff = dist(r1,g1,b1,r2,g2,b2)。分析颜色距离,才能跟踪或查找颜色。


input:

import processing.video.*;

Capture video;  //摄像机引擎

void setup(){
  size(600,445);
  video = new Capture(this);
  video.start();  
}

void captureEvent(Capture video){  //为保证摄像机实时获取图像,要创建一个捕获时间函数以及一个回调和时间回调
  video.read();
}

void draw(){
  if (video.available() == true){
    image(video,0,0); 
    
    float worldRecord = 500;  //追踪世界记录或阈值

    //XY coordinate of closest color
    int closestX = 0;
    int closestY = 0;
    
    video.loadPixels();
    color trackColor = color(29,64,114);  //追踪颜色1
    //color trackColor = color(109,98,88);  //追踪颜色2
    
    //Begin loop to walk through every pixel
    for (int x = 0;x < video.width;x++){
      for (int y = 0;y < video.height;y++){
        int loc = x + y*video.width;
        //current color定义当前颜色
        color currentColor = video.pixels[loc];
        float r1 = red(currentColor);
        float g1 = green(currentColor);
        float b1 = blue(currentColor);
        float r2 = red(trackColor);
        float g2 = green(trackColor);
        float b2 = blue(trackColor);
      
        //compare color通过距离函数比较颜色的相似程度
        float d = dist(r1,g1,b1,r2,g2,b2);
      
        //similar to tracked color如相似则追踪位置      
        if (d < worldRecord){
          worldRecord = d;
          closestX = x;
          closestY = y;
        }
        loc++;
      }
      //draw the pixel
      stroke(255,0,0);
      noFill();
      ellipse(closestX,closestY,16,16);
      
    }
  }
}

output(追踪颜色1): color trackColor = color(29,64,114);

 output(追踪颜色2): color trackColor = color(109,98,88);

 备注:此案例为视觉追踪之颜色初步识别,颜色用红圈标出。录像过程中刷新间隔大,图像会短时定格。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶屋檐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值