使用node.js中的opencv-node将24位RGB图像转换为8位灰度

时间:2013-07-21 13:29:48

标签: node.js opencv webcam rgb grayscale

我正在尝试从连接到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转换为灰度图像。

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

提前感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

使用CV_BGR2GRAY而不是“CV_BGR2GRAY”。

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

并且,不用担心,这将是8位灰度。