cvGetMat中无法识别或不支持的数组类型

时间:2015-05-04 07:36:55

标签: c++ opencv raspberry-pi

我在这里搜索了一下,但似乎没有人有同样的错误,我正在尝试在树莓派上创建一个颜色检测相机,我用过

https://github.com/robidouille/robidouille/tree/master/raspicam_cv

用于本教程并使其正常工作,但现在我已经

IplImage* image = raspiCamCvQueryFrame(capture);
cv::cvtColor(cv::Mat(image), x, cv::COLOR_BGR2HSV);

它会编译,但运行时会给出

cvGetMat函数中无法识别或不支持的数组类型

没有cv :: Mat(图像)我因

而无法编译

从“IplImage *”类型的表达式初始化“cv :: InputArray”类型的引用无效

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,使用新的C ++界面会更好。

以下代码将在窗口中显示来自网络摄像头的Feed,程序将在“q'按下:(source

#include "opencv2/highgui/highgui.hpp"

int main(int argc, const char** argv) {
    cv::VideoCapture capture;
    cv::Mat image;

    // Unless you need to get images from multiple devices,
    // using '-1' will automatically select the webcam.
    capture.open(-1);
    if (capture.isOpened()) {
        cv::namedWindow("WebCam", cv::WINDOW_AUTOSIZE);
        while (1) {
            capture.read(image);
            cv::imshow("WebCam", image);
            int c = cv::waitKey(10);
            if ((char)c == 'q') {
                break;
            }
        }
    }

    capture.release();

    return 0;
}

我已经在Ubuntu 14.04上测试了这段代码并将其编译为:

$ clang++ -o cvtest cvtest.cpp -lopencv_core -lopencv_highgui

如果您迫切希望继续使用IplImage和C界面,那么我无法帮助您。