基于Qt和OpenCV的工业视觉检测APP

该项目实现了一套结合颜色识别、角度检测、数字识别功能的视觉检测系统,能够通过TCP通讯与下位机(如ABB IPB120机械臂)交互。系统包括模板图片管理、端口监听、数据发送等功能,并使用了OpenCV库进行图像处理,同时具备IP摄像头的实时演示。部分源码展示了主界面及颜色检测的类定义。
摘要由CSDN通过智能技术生成

主要功能

颜色识别,角度检测,数字识别,TCP通讯

主界面

包含功能:模板图片集获取,模板图片集清除,端口选择,开启端口监听,关闭端口监听,检测结果发送下位机(本次演示所用下位机为 ABB的IPB 120 型机械臂)

演示效果

IP摄像头演示
IP摄像头演示

实机演示

实机演示

部分源码

主界面

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <opencv2/opencv.hpp>
#include <QDebug>
#include <QTimer>
#include <QTime>
#include <QString>
#include "ip_camera_setting.h"
#include <iostream>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDesktopServices>
#include <QUrl>
#include "color_detector.h"
#include "angle_detector.h"
#include <QCloseEvent>
#include <QVector>
#include "contourwithdata.h"

using namespace std;

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void MennBarInit(); //菜单初始化

private slots:

    void on_quit_button_clicked();  //退出按钮

    void on_clear_button_clicked(); //清除按钮

    void local_camera_open();   //打开本地摄像头

    void ip_camera_open(std::string address, std::string port);  //打开ip摄像头

    cv::Mat camera_capture(cv::Mat frame); //拍照

    void server_open_port(int port);    //服务器监听端口

    void server_accept_connection();    //服务器接受连接

    void server_send(const QString &data);  //服务器发送数据

    std::string temp( cv::Mat frame );    //临时函数
    std::string detect_color(cv::Mat imgOriginal);    //颜色检测

//    void on_test_clicked(); //测试按钮

    void on_Server_startup_clicked();

    void on_capture_clicked();

    void on_clear_templates_clicked();

protected:
    void closeEvent(QCloseEvent *event) override;

private:
    Ui::MainWindow *ui;

    QString result;

    cv::Mat frame;
    std::vector<Mat> img_template;   //用于存储模板图像
    cv::VideoCapture capture;
    std::string camera_IP, camera_port;
    cv::Mat frame_temp;
//    int num = 0;

    ip_camera_setting *ip_camera_setting_widget;

    QTcpServer *tcpServer;
    QTcpSocket *tcpSocket;

    QTimer *camera_timer;

    color_detector *col_detector;

    int template_num = 0;
//    angle_detector *agl_detector;

    Angle_detector *a;	//角度+数字识别
};
#endif // MAINWINDOW_H

颜色识别

#ifndef COLOR_DETECTOR_H
#define COLOR_DETECTOR_H

#include <QString>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;

class color_detector
{
public:
    color_detector(cv::Mat imgOriginal);	

    QString color_result();		//识别结果

private:
    QString color;  	//颜色编号
};

#endif // COLOR_DETECTOR_H

项目获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zanerogl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值