【问题标题】:Processing OpenCV and IPCapture library error: Width(0) and height(0) cannot be <= 0处理 OpenCV 和 IPCapture 库错误:宽度(0)和高度(0)不能 <= 0
【发布时间】:2016-06-06 16:16:31
【问题描述】:

我想通过 IPCapture 库从 Ip 摄像头获取视频,然后使用 OpenCV 库在此视频中进行人脸识别以进行处理。如果我只从 IP 摄像机获取视频,则代码有效,但如果我还添加了面部识别,它就不起作用,并且在 opencv.loadImage(cam);it 行告诉我:宽度(0)和高度(0)不能

import ipcapture.*;
import gab.opencv.*;
import java.awt.*;

IPCapture cam;
OpenCV opencv;

void setup() {
  size(512, 384);
  cam = new IPCapture(this, "http://192.168.1.74:90/cam_pic_new.php?  fullscreen", "", "");
  cam.start();
  opencv = new OpenCV(this, 512, 384);
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);
}

void draw() {
  if (cam.isAvailable()) {
    cam.read();
    image(cam, 0, 0);
    opencv.loadImage(cam);
    noFill();
    stroke(0, 255, 0);
    strokeWeight(3);
    Rectangle[] faces = opencv.detect();
    println(faces.length);

    for (int i = 0; i < faces.length; i++) {
      println(faces[i].x + "," + faces[i].y);
      rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
    }
  }
}

更新 感谢您的回答,我尝试的代码是这样的:

import ipcapture.*;
import gab.opencv.*;
import java.awt.*;
IPCapture cam;
OpenCV opencv;

void setup() {
  size(512, 384);
  cam = new IPCapture(this, "http://192.168.1.74:90/cam_pic_new.php", "", "");
  cam.start();
  opencv = new OpenCV(this, 512, 384);
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);
}

void draw() {
  if (cam.isAvailable()) {
    cam.read();
    image(cam, 0, 0);
    if (cam.width > 0 && cam.height > 0) {
      opencv.loadImage(cam);
    }
  }
}

错误出现在opencv.loadImage(cam); 行,它告诉我: 宽度(0)和高度(0)不能

【问题讨论】:

  • 这部分看起来很可疑:http://192.168.1.74:90/cam_pic_new.php? fullscreen。你在浏览器中测试过这个网址吗?它是否显示流? (疯狂猜测,也许试试http://192.168.1.74:90/cam_pic_new.php)?
  • 是的,它显示流并且没有“?全屏”也有同样的错误
  • 你能在单独的草图中做另一个快速测试吗? image(loadImage("http://192.168.1.74:90/cam_pic_new.php"),0,0);
  • @george 是的,我已经完成了,我尝试了您的代码声明 Pimage image; 然后 image(loadImage("http://192.168.1.74:90/cam_pic_new.php"),0,0); 但出现错误 NullPointerException 它告诉我:找不到加载 192.168.1.74:90/cam_pic_new.php 的方法
  • 棘手!也许 IPCapture 库无法使用当前设置进行解码。您的 IP 摄像机是否允许您访问它的设置并使用不同的编码格式?(例如 JPG/MJPG/X264/等)?如果是这样,可能值得尝试不同的格式,希望其中一种能奏效

标签: opencv processing ip-camera


【解决方案1】:

您需要检查图像是否实际加载了任何像素。

查看处理专家George Profenzathis answer。特别是这一点:

if(cam.width > 0 && cam.height > 0){//check if the cam instance has loaded pixels
      opencv.loadImage(cam);//send the cam

【讨论】:

  • 是的,我试过了,但还是不行。同样的错误。如果我打印 cam.width 和 cam.height 的值,它们都高于 0
  • @andrsimo 您能否发布更新后的minimal reproducible example,其中包含您对代码所做的更改?
  • @andrsimo 您可以编辑您的问题以包含您的最新代码。
  • 好的,我已经发布了新软件
猜你喜欢
  • 2020-03-11
  • 1970-01-01
  • 2014-01-24
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多