Ubuntu非法指令opencv

时间:2015-07-01 19:30:16

标签: c++ opencv ubuntu

我最近使用此命令从存储库在Ubuntu 12.04.5上安装了opencv。

sudo apt-get install libopencv-dev python-opencv

当我尝试运行以下代码以确认它正常工作时,我收到一条非法指令(编译正常)。

#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include<iostream>

using namespace std;

int main(){
    cv::Mat img;
    img = cv::imread("RO.ppm");
    cout << img.size() << endl;
    return 0;
 }

我使用此命令编译(由于未定义的引用错误)。

g++ -o test test.cpp $(pkg-config opencv --cflags --libs)

更新:注释掉cout行不会改变结果,我已经三次检查此目录中是否存在RO.ppm(即使它没有imread也不会抛出非法或未找到输入的错误我的经验)。我想我的问题是导致非法指令错误的原因的两倍,我该如何解决?

1 个答案:

答案 0 :(得分:1)

你不能直接cout cv :: Size而不重载'&lt;&lt;' cv :: Size的运算符。相反,您可以从cv :: Size获取行和列,并将它们相乘以获得图像的总大小:

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<iostream>

using namespace std;

int main(){
    cv::Mat img;
    img = cv::imread("RO.ppm");
    cv::Size img_size = img.size();

    int cols =  img_size.width;
    int rows =  img_size.height;
    cout << "image size: " << rows*cols << endl;


    return 0;
 }

有关cv :: Size的使用情况,请参阅此类post