我最近使用此命令从存储库在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也不会抛出非法或未找到输入的错误我的经验)。我想我的问题是导致非法指令错误的原因的两倍,我该如何解决?
答案 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。