我刚刚在Raspberry Pi 3上安装了OpenCV4.0.0。python库似乎可以正常工作,但是我无法使imread()(以及库的其他部分,如FileStorage)适用于C ++。 。
我制作了以下简单程序来演示该问题:
#include <opencv2/opencv.hpp>
using namespace std;
int main() {
cout << "start" << endl;
cv::Mat img = cv::imread("~/opencv_test/img.jpg", cv::IMREAD_UNCHANGED);
cout << img.cols << img.rows << endl;
cv::imwrite("./imgoutput.jpg", img);
cout << "written" << endl;
}
输出如下:
开始
00
书面
这表示图像未正确读取,因为输出尺寸为(0,0)。该图像有效并且存在于指定路径中。我已经尝试过.png和.jpg图像,都可以使用python库正确显示。在此示例中也写入了输出图像,但是它是一个空文件(如果cv :: Mat具有0,0尺寸,则可以预期)。
我正在使用:
g++ -std=gnu++11 -I /usr/local/include/opencv4/ test.cpp -o test.o `pkg-config --libs --cflags opencv`
pkg-config的输出如下:
-I / usr / local / include / opencv -I / usr / local / include -L / usr / local / lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_df -lopencv_dnn lopencv_line_descriptor -lopencv_optflow -lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_rgbd -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_face -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_xobjdetect -lopencv_objdetect -lopencv_ml -lopencv_xphoto -lopencv_highgui - lopencv_videoio -lopencv_imgcodecs -lopencv_photo -lopencv_imgproc -lopencv_core
这似乎包含此示例所需的所有库。
同样,如果我使用python执行相同的任务,则可以正常工作。我为C ++编译不正确吗?