我最近使用此命令从存储库在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(即使未读也不会因我的经验中的非法或未找到的输入而引发错误) 。我想我的问题有两个,是什么导致了非法指令错误,我该如何解决?

最佳答案

您不能直接退出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

关于c++ - Ubuntu非法指令opencv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31170060/

10-12 02:34