我正在尝试从连接到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位..?!
提前感谢您的帮助! :)
答案 0 :(得分:1)
使用CV_BGR2GRAY而不是“CV_BGR2GRAY”。
前者是一个整数常数,后者是一个char *
并且,不用担心,这将是8位灰度。