Author Topic: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)  (Read 10257 times)

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
众所周知,当前版本processing的默认摄像头/视频库是臃肿的庞大的低效的讨厌的Quicktime
不幸的是,要使用Libraries/Video中的例子你除了需要安装Quicktime外,
还要装个更加奇怪的从来没听说过的VDIG(是吧,亲)。

幸运的是,官方决定,从2.0开始,放弃使用Quicktime啦(撒花撒花)。
取而代之的是,牛人Andres Colubri 写的 GSVideo 库
这头牛写的GLGraphics 库也将合并入2.0版本的processing,用于替换原先低效的opengl渲染。

因此,本篇介绍的就是基于GSVideo 的摄像头/视频互动
GSVideo http://gsvideo.sourceforge.net/

                                                                                                                        つづく

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #1 on: October 25, 2011, 04:41:19 PM »
gsvideo这个库比较大,下载起来特别慢,所以我搬运到了国内
感谢盛大的网盘EverBox(做个广告,非常好用)
http://www.everbox.com/f/ApkApJZI2sUc1XVkskqrkuowHQ
大家用力下吧


vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #2 on: October 26, 2011, 05:10:22 PM »
一个非常简易的只跟踪黄色像素的范例 [r > 150 && r < 220 && g > 100 && b < 50]




Code
//color_tracking.pde
import codeanticode.gsvideo.*;

Detector bs;
GSCapture cam;
PImage img;

final int SCALE = 2;
final int W = 640;
final int H = 480;

void setup()
{
  // Size of applet
  size(W, H);
  rectMode(CORNERS);
  ellipseMode(CORNERS);

  // Capture
  cam = new GSCapture(this, W/SCALE, H/SCALE);
  cam.start();

  // BlobDetection
  img = new PImage(cam.width, cam.height);
  bs = new Detector(this, 0, 0, cam.width, cam.height, 255);
  stroke(255, 0, 0, 150);
  strokeWeight(3);
  noFill();
}

void draw()
{
  if (cam.available() == true)
  {
    cam.read();
    image(cam, 0, 0, width, height);
    img.copy(cam, 0, 0, cam.width, cam.height,
      0, 0, img.width, img.height);
     
    img.loadPixels();
    for (int i = 0; i < img.width*img.height; i++) {
      int pixelColor = img.pixels[i];
      int r = (pixelColor >> 16) & 0xff;
      int g = (pixelColor >> 8) & 0xff;
      int b = pixelColor & 0xff;

      //通过if语句限制要跟踪的颜色的范围
      if (r > 150 && r < 220 && g > 100 && b < 50)
        img.pixels[i] = 255;
      else
        img.pixels[i] = 0;
    }
   
    img.updatePixels();   
    bs.imageFindBlobs(img);
    bs.loadBlobsFeatures();

    int n_blobs = bs.getBlobsNumber();
    PVector[] A = bs.getA();
    PVector[] D = bs.getD();
    println(A);
    for (int i=0;i<n_blobs;i++)
    {
      ellipse(A[i].x*SCALE, A[i].y*SCALE, D[i].x*SCALE, D[i].y*SCALE);
    }
  }
}

完整的工程文件夹见附件,依赖于GSVideo 库,下载见贴内


bhyyhb

  • Newbie
  • *
  • Posts: 2
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #3 on: December 17, 2011, 10:38:45 PM »
有帮助,非常感谢,我试了你帖子里说的“一个非常简易的只跟踪黄色像素的范例”但是有问题“Cannot find a class or type named"Detector""为什么啊

bhyyhb

  • Newbie
  • *
  • Posts: 2
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #4 on: December 18, 2011, 11:00:39 PM »
已经解决了,是我自己没看仔细

moon

  • Newbie
  • *
  • Posts: 1
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #5 on: March 08, 2012, 12:35:26 AM »
请问一下楼主,这个程序中如何用串口输出跟踪点的坐标呢?
PVector[] A = bs.getA();这个数组定义是什么意思?

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #6 on: March 09, 2012, 05:42:29 PM »
A1:
你先得学会怎么用串口
然后坐标只是float或者int的变量而已,输出就可以了
最后,你在arduino端需要写对应的接受代码

A2:
这是个PVector类型的数组,即表示一组坐标点(x,y)
具体定义看源代码

xiaxu_702

  • Newbie
  • *
  • Posts: 1
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #7 on: March 26, 2012, 02:33:16 PM »
非常感谢~~这对我们初学者来说是莫大的帮助

panhao1

  • Newbie
  • *
  • Posts: 13
  • 华科学弟多苦逼 泪看学姐变人妻
    • ncf零社区
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #8 on: March 29, 2012, 01:26:52 AM »
这玩意那个关于openCV图像捕捉的真好用 不过openGL渲染效率真的很低么?
msn已经闲置
个人邮箱 4812ph@163.com
企业邮箱 panhao1@ncf-china.com

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #9 on: March 29, 2012, 10:18:59 AM »
这玩意那个关于openCV图像捕捉的真好用 不过openGL渲染效率真的很低么?

不会低啊,而且现在都可以用shader/vbo/fbo
当然和C++不好比

simplestonly

  • Newbie
  • *
  • Posts: 11
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #10 on: June 10, 2012, 10:35:43 PM »
已经解决了,是我自己没看仔细
我和你出现了同样问题 但是我没有造出来那里除了错 希望能帮助我 谢谢
真正的艺术家能完成作品

高粱

  • Newbie
  • *
  • Posts: 1
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #11 on: June 25, 2013, 11:02:12 PM »
楼里两个地址都打不开呀,晕

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #12 on: June 26, 2013, 10:18:25 AM »
楼里两个地址都打不开呀,晕

打不开你的网络问题

DA6022

  • Newbie
  • *
  • Posts: 6
Re: [摄像头] 基于GSVideo的摄像头/视频互动介绍(坑)
« Reply #13 on: April 19, 2016, 10:39:43 AM »
话说怎么调用摄像机的摄像头呢?普通的网络摄像头调用是可以的。

Tags: GSVideo