gpt4 book ai didi

c++ - Ubuntu非法指令opencv

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:37 24 4
gpt4 key购买 nike

我最近使用此命令从存储库在 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;
}

我使用这个命令编译(由于 undefined reference 错误)。

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

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

最佳答案

如果不为 cv::Size 重载 '<<' 运算符,则不能直接计算 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;
}

看到这个类似的post用于 cv::Size 的使用。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com