qt-opencv图像分割之Otsu算法实例

本文介绍了如何使用Qt和OpenCV在Ubuntu环境下进行图像分割,重点是Otsu算法的应用。首先,文章展示了.pro项目文件的配置和UI设计,接着详细讲解了mainwindow.h和mainwindow.cpp中的代码实现。最后,通过打开图片和视频展示了运行效果,验证了Otsu算法在图像二值化中的效果。
摘要由CSDN通过智能技术生成

1 .pro项目文件配置

添加

INCLUDEPATH += /usr/local/include \
                /usr/local/include/opencv
                /usr/local/include/opencv2

LIBS += /usr/local/lib/libopencv_* \

2 ui设计

在这里插入图片描述
在这里插入图片描述

3 代码

3.1 mainwindow.h

class MainWindow : public QMainWindow
{
   
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    cv::Mat src; //左边QLabel对应的mat
    QImage qimgs; //左边QLabel对应的qimg
    cv::VideoCapture cap;

    cv::Mat otsu; //右边QLabel对应的mat
    QImage qimgo; //右边QLabel对应的qimg

private slots:
    void on_closeAct_triggered();

private:
    Ui::MainWindow *ui;
};

3.2 mainwindow.cpp

Otsu原理

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QDebug"

#include<QFileDialog>

using namespace cv;

void mat2qimg(Mat &src,QImage &qimg);
int getOtsuThreshold(long* histo, long totals);
void getHistogram(Mat& src,long* histo);


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
   
    ui->setupUi(this);
    int rows = ui->bgrLabel->height();
    int cols = ui->bgrLabel->width();

    //打开图片
    connect(ui->imgAct,&QAction::triggered,this,[=](){
   
    	//打开文件对话框,返回文件路径
        QString fp = QFileDialog::getOpenFileName(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值