欢迎光临散文网 会员登陆 & 注册

macOS(Intel)配置opencv(C++)

2023-07-02 18:04 作者:SynTimes  | 我要投稿

只是做一份归档。如有不当之处请大佬们指正,谢谢!

前置条件:homebrew,Xcode

  1. 安装pkg-config

    brew install pkg-config

  2. 安装opencv

    brew install opencv

    测试是否安装完成:pkg-config --cflags --libs opencv

        2.1 此时您可能会出现下面的错误:

        Package opencv was not found in the pkg-config search path.
        Perhaps you should add the directory containing `opencv.pc'
        to the PKG_CONFIG_PATH environment variable
        No package 'opencv' found

        你先别急:原因是缺失了opencv.pc这个配置信息文件,故解决方法就是添加这个文件然后将其导入到环境变量中。

            2.1.1解决方案:先创建opencv.pc文件,这里要注意它的路径信息:

            cd /usr/local/lib
            sudo mkdir pkgconfig
            cd pkgconfig
            sudo touch opencv.pc

            然后在opencv.pc中添加以下信息,注意这些信息需要与自己安装opencv时的库路径对应:

            prefix=/usr/local
            exec_prefix=${prefix}
            includedir=${prefix}/include
            libdir=${exec_prefix}/lib

            Name: opencv
            Description: The opencv library
            Version:4.8.0
            Cflags: -I${includedir}/openCV4
            Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core
     ~                                               
            保存退出,然后将文件导入到环境变量:

            export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

            之后执行pkg-config --cflags --libs opencv检验

  3. 由于是用C++并且笔者想在终端中直接使用,所以需要ln -s /usr/local/include/openCV4/openCV2 openCV2

    默认情况下,通过brew安装的opencv目录于:/usr/local/Cellar/opencv

    如果想在终端下使用,所以需要建立软连接

    注意:"OpenCV 4.x+ requires enabled C++11 support"

  4. 下面给出测试

    测试来自opencv官方例程的代码文件

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

    using namespace cv;
    using namespace std;

    void drawText(Mat & image);

    int main()
    {
        cout << "Built with OpenCV " << CV_VERSION << endl;
        Mat image;
        VideoCapture capture;
        capture.open(0);
        if(capture.isOpened())
        {
            cout << "Capture is opened" << endl;
            for(;;)
            {
                capture >> image;
                if(image.empty())
                    break;
                drawText(image);
                imshow("Sample", image);
                if(waitKey(10) >= 0)
                    break;
            }
        }
        else
        {
            cout << "No capture" << endl;
            image = Mat::zeros(480, 640, CV_8UC1);
            drawText(image);
            imshow("Sample", image);
            waitKey(0);
        }
        return 0;
    }

    void drawText(Mat & image)
    {
        putText(image, "Hello OpenCV",
                Point(20, 50),
                FONT_HERSHEY_COMPLEX, 1, // font face and scale
                Scalar(255, 255, 255), // white
                1, LINE_AA); // line thickness and type
    }

  5. g++ example.cpp -o example.o -c -Wall -I/usr/local/include/openCV4 -std=c++11

  6. g++ example.o -o opencv_example -L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core




macOS(Intel)配置opencv(C++)的评论 (共 条)

分享到微博请遵守国家法律