基于 Qt5.14+OpenCV4.6.0 的通用化视觉软件,qt编译器直接运行, qt编译器直接运行 支持多相机多线程,每个工具都是单独的DLL,主程序通过 公用的接口访问以及加载各个工具。 算法工具包含图像处理、检测识别、标定工具、对位工具、几何工具、几何 测量、三维检测、逻辑工具、通讯工具和系统工具。 注意:不提供任何技术指导,自己学习源码,软件编译环境所需软件需要自己安装好

最近在搞一个基于 Qt5.14 和 OpenCV4.6.0 的通用化视觉软件,感觉挺有意思的,分享一下。这个软件的设计思路是模块化的,每个工具都是独立的 DLL,主程序通过统一的接口来加载和调用这些工具。这样做的好处是,扩展性很强,想加新功能直接写个新的 DLL 就行,不用动主程序。

先说说多相机多线程这块。多线程在视觉处理中几乎是标配,毕竟图像处理的计算量不小,单线程很容易卡死。Qt 的 QThread 用起来挺顺手,每个相机单独开一个线程,互不干扰。代码大概长这样:

class CameraThread : public QThread {
    Q_OBJECT
public:
    void run() override {
        while (!isInterruptionRequested()) {
            // 抓取图像
            cv::Mat frame = captureFrame();
            emit frameCaptured(frame);
        }
    }
signals:
    void frameCaptured(const cv::Mat &frame);
private:
    cv::Mat captureFrame() {
        // 这里实现具体的抓图逻辑
    }
};

每个相机对应一个 CameraThread 对象,抓到的图像通过信号 frameCaptured 发出去,主程序或者其他工具可以接收这个信号做进一步处理。

基于 Qt5.14+OpenCV4.6.0 的通用化视觉软件,qt编译器直接运行, qt编译器直接运行 支持多相机多线程,每个工具都是单独的DLL,主程序通过 公用的接口访问以及加载各个工具。 算法工具包含图像处理、检测识别、标定工具、对位工具、几何工具、几何 测量、三维检测、逻辑工具、通讯工具和系统工具。 注意:不提供任何技术指导,自己学习源码,软件编译环境所需软件需要自己安装好

再说说工具模块化。每个工具都是一个独立的 DLL,主程序通过接口来调用。比如,图像处理工具可以这样定义接口:

class ImageProcessor {
public:
    virtual ~ImageProcessor() = default;
    virtual cv::Mat process(const cv::Mat &input) = 0;
};

然后具体的图像处理工具实现这个接口:

class GaussianBlurProcessor : public ImageProcessor {
public:
    cv::Mat process(const cv::Mat &input) override {
        cv::Mat output;
        cv::GaussianBlur(input, output, cv::Size(5, 5), 0);
        return output;
    }
};

主程序通过 QLibrary 动态加载这些 DLL,调用起来也很方便:

QLibrary library("GaussianBlurProcessor.dll");
if (library.load()) {
    auto createProcessor = reinterpret_cast<ImageProcessor*(*)()>(library.resolve("createProcessor"));
    if (createProcessor) {
        std::unique_ptr<ImageProcessor> processor(createProcessor());
        cv::Mat result = processor->process(inputImage);
    }
}

这种设计让整个软件非常灵活,想加新功能直接写个新的 DLL,主程序几乎不用改。

至于算法工具,种类还挺多的,图像处理、检测识别、标定工具、对位工具、几何工具、几何测量、三维检测、逻辑工具、通讯工具和系统工具,基本涵盖了视觉处理的常见需求。每个工具的实现细节就不展开了,源码里都有,自己看吧。

最后提醒一下,这个软件的编译环境需要自己搞定,Qt5.14 和 OpenCV4.6.0 是必须的,其他依赖项也得自己装好。源码不提供技术指导,自己研究吧。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐