1

我正在尝试从连接到 Raspberry Pi 的网络摄像头捕获 node.js 中的图像。捕获工作正常,但现在当我想传输图像时,我遇到了一些严重的帧率和滞后问题。

现在我的第一个想法是将 RGB 图像转换为 8 位灰度,这应该将性能提高 3 倍(我希望..)。

我为此使用 node.js 和 opencv-node。在这里你可以看到一些代码片段:

var startT = new Date().getTime();
var capture = new cv.VideoCapture();
var frame = new cv.Mat;
var grey = new cv.Mat;
var imgPath = __dirname + "/ramdisk/";
var frame_number = 0;

capture.open(0);

if (!capture.isOpened())
{
    console.log("aCapLive could not open capture!");
    return;
}

function ImgCap()
{
    var elapsed = (new Date().getTime() - startT) / 1000;

    capture.read(frame);
    cv.imwrite(imgPath+".bmp", frame);

    id = setImmediate(ImgCap);
}

ImgCap();

我尝试使用类似的东西

cv.cvtColor(frame, grey, "CV_BGR2GRAY");

阅读图像后,但我只得到一些 TypeError 说参数 2 必须是一个整数......我现在不知道该怎么做。我参考了http://docs.opencv.org/doc/tutorials/introduction/load_save_image/load_save_image.html#explanation将 rgb 转换为灰度图像。

除此之外,我仍然不确定这是否只是为 mit 提供 24 位灰度图像而不是 8 位 ..?!

提前感谢您的帮助!:)

4

1 回答 1

1

使用 CV_BGR2GRAY 而不是“CV_BGR2GRAY”。

前者是整数常数,后者是 char*

而且,不用担心,那将是 8 位灰度。

于 2013-07-21T14:33:32.460 回答