【发布时间】: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