opencv图像处理qt_qt opencv图像处理 - CSDN
  • 自己写的QT图像处理系统,和opencv进行了结合,希望有所帮助,这一次是第二版,比上一版增加了更多功能,当然啦,免费。
  • 包括:图像翻转、图像形态学处理、滤波、缩放、旋转 Github地址:https://github.com/tong123/image_proc_sys

    包括:图像翻转、图像形态学处理、滤波、缩放、旋转等功能




    Github地址:https://github.com/tong123/image_proc_sys

    展开全文
  • QT+opencv图像处理

    2020-07-30 09:51:19
    使用QT做界面下的采用opencv库编的图像处理软件,对于刚入门视觉学习,图像处理的人应该很有帮助,功能也比较全面,对于图像的基本处理都集成了,也可以根据自己需求添加相应功能;opencv为2.4.9其他版本的话可以...
  • 文章链接:https://blog.csdn.net/q_z_r_s 机器感知 一个专注于SLAM、机器视觉、Linux 等相关技术文章分享的公众号 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <...QFil...

    文章链接:https://blog.csdn.net/q_z_r_s 

    机器感知

    一个专注于SLAM、机器视觉、Linux 等相关技术文章分享的公众号
     

     

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QImage>
    #include <QFileDialog>
    #include <QTimer>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private slots:
        void on_openButton_clicked();
        QImage Mat2QImage(const cv::Mat &mat);
        void display(QImage image);
        void salt(cv::Mat &image, int n);
    
        void on_saltButton_clicked();
        void on_reduceButton_clicked();
        void colorReduce0(cv::Mat &image, int div);
    
        void on_originalButton_clicked();
    
    private:
        Ui::MainWindow *ui;
        cv::Mat image;
        cv::Mat originalimg; //store the original img
        QImage qimg;
        QImage imgScaled;
        cv::Mat rgb;
    };
    
    #endif // MAINWINDOW_H
    
    
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QDebug>
    
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_openButton_clicked()
    {
        QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),
                                    ".",tr("Image Files (*.png *.jpg *.bmp)"));
        qDebug()<<"filenames:"<<fileName;
        image = cv::imread(fileName.toLatin1().data());
        ui->imgfilelabel->setText(fileName);
        //here use 2 ways to make a copy
    //    image.copyTo(originalimg);          //make a copy
        originalimg = image.clone();        //clone the img
        qimg = MainWindow::Mat2QImage(image);
        display(qimg);                      //display by the label
        if(image.data)
        {
            ui->saltButton->setEnabled(true);
            ui->originalButton->setEnabled(true);
            ui->reduceButton->setEnabled(true);
        }
    }
    
    QImage MainWindow::Mat2QImage(const cv::Mat &mat)
    {
        QImage img;
        if(mat.channels()==3)
        {
            //cvt Mat BGR 2 QImage RGB
            cvtColor(mat,rgb,CV_BGR2RGB);
            img =QImage((const unsigned char*)(rgb.data),
                        rgb.cols,rgb.rows,
                        rgb.cols*rgb.channels(),
                        QImage::Format_RGB888);
        }
        else
        {
            img =QImage((const unsigned char*)(mat.data),
                        mat.cols,mat.rows,
                        mat.cols*mat.channels(),
                        QImage::Format_RGB888);
        }
        return img;
    }
    
    void MainWindow::display(QImage img)
    {
        QImage imgScaled;
        imgScaled = img.scaled(ui->imagelabel->size(),Qt::KeepAspectRatio);
    //  imgScaled = img.QImage::scaled(ui->imagelabel->width(),ui->imagelabel->height(),Qt::KeepAspectRatio);
        ui->imagelabel->setPixmap(QPixmap::fromImage(imgScaled));
    }
    
    void MainWindow::on_originalButton_clicked()
    {
        qimg = MainWindow::Mat2QImage(originalimg);
        display(qimg);
    }
    
    void MainWindow::on_saltButton_clicked()
    {
        salt(image,3000);
        qimg = MainWindow::Mat2QImage(image);
        display(qimg);
    }
    void MainWindow::on_reduceButton_clicked()
    {
        colorReduce0(image,64);
        qimg = MainWindow::Mat2QImage(image);
        display(qimg);
    }
    void MainWindow::salt(cv::Mat &image, int n)
    {
    
        int i,j;
        for (int k=0; k<n; k++)
        {
    
            i= qrand()%image.cols;
            j= qrand()%image.rows;
    
            if (image.channels() == 1)
            { // gray-level image
    
                image.at<uchar>(j,i)= 255;
    
            }
            else if (image.channels() == 3)
            { // color image
    
                image.at<cv::Vec3b>(j,i)[0]= 255;
                image.at<cv::Vec3b>(j,i)[1]= 255;
                image.at<cv::Vec3b>(j,i)[2]= 255;
            }
        }
    }
    
    // using .ptr and []
    void MainWindow::colorReduce0(cv::Mat &image, int div)
    {
    
          int nl= image.rows; // number of lines
          int nc= image.cols * image.channels(); // total number of elements per line
    
          for (int j=0; j<nl; j++)
          {
    
              uchar* data= image.ptr<uchar>(j);
    
              for (int i=0; i<nc; i++)
              {
    
                // process each pixel ---------------------
                    data[i]= data[i]/div*div+div/2;
    
                // end of pixel processing ----------------
    
              } // end of line
          }
    }
    

    效果展示:
    1. 打开图片

    2. Salt Process

    3.Color Reduce

     

     

     

    参考文章:https://www.cnblogs.com/emouse/archive/2013/03/31/2991333.html

     

    展开全文
  • 介绍如何用Qt的Label控件显示OpenCV的Mat类图像

    文章目录

    示例

    注意:本文不会提及太多Qt的具体操作,主要介绍如何用Qt的Label控件显示OpenCV的Mat类图像。
    博主是在VS中使用Qt和OpenCV的,主要使用了三个控件,LabelPush ButtonCheck Box,UI界面效果如下图。
    在这里插入图片描述
    OpenCV中的图像主要存储在Mat类中,要让其显示在Qt的Label控件上,必须先将其转换为Qt的QImage类。这部分代码如下:

    Mat temp;
    cvtColor(srcImg, temp, CV_BGR2RGB);//BGR convert to RGB
    QImage Qtemp = QImage((const unsigned char*)(temp.data), temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
    ui.label->setPixmap(QPixmap::fromImage(Qtemp));
    ui.label->resize(Qtemp.size());
    ui.label->show();
    

    ps:Mat类图像是按照BGR顺序存储的图像,而QImage是按照RGB顺序存储的,在类型转换前需要将通道更改。

    效果如下:
    在这里插入图片描述

    代码

    Qt.h文件

    #pragma once
    #pragma execution_character_set("utf-8")//display chinese words
    
    #include <QtWidgets/QMainWindow>
    #include <opencv2/opencv.hpp>
    #include "ui_MatdisplayinQt.h"
    
    using namespace cv;
    
    class MatdisplayinQt : public QMainWindow
    {
    	Q_OBJECT
    
    public:
    	MatdisplayinQt(QWidget *parent = Q_NULLPTR);
    	int isGray = 0;
    	Mat srcImg, grayImg;
    
    private:
    	Ui::MatdisplayinQtClass ui;
    
    private slots:
    	void on_checkBox_clicked();
    	void on_pushButton_clicked();
    };
    

    Qt.cpp文件

    #include "MatdisplayinQt.h"
    
    MatdisplayinQt::MatdisplayinQt(QWidget *parent)
    	: QMainWindow(parent)
    {
    	ui.setupUi(this);
    }
    
    void MatdisplayinQt::on_pushButton_clicked()
    {
    	srcImg = imread("00.jpg");
    	cvtColor(srcImg, grayImg, CV_BGR2GRAY);
    
    	Mat temp;
    	QImage Qtemp;
    	if (!isGray)
    	{
    		cvtColor(srcImg, temp, CV_BGR2RGB);//BGR convert to RGB
    		Qtemp = QImage((const unsigned char*)(temp.data), temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
    	}
    	else
    	{
    		cvtColor(grayImg, temp, CV_GRAY2RGB);//GRAY convert to RGB
    		Qtemp = QImage((const unsigned char*)(temp.data), temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
    	}
    	ui.label->setPixmap(QPixmap::fromImage(Qtemp));
    	ui.label->resize(Qtemp.size());
    	ui.label->show();
    }
    
    void MatdisplayinQt::on_checkBox_clicked()
    {
    	if (ui.checkBox->isChecked())
    	{
    		isGray = 1;
    	}
    	else
    	{
    		isGray = 0;
    	}
    }
    

    main.cpp文件

    #include "MatdisplayinQt.h"
    #include <QtWidgets/QApplication>
    
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
    	MatdisplayinQt w;
    	w.show();
    	return a.exec();
    }
    
    展开全文
  • 最近做了一个基于Opencv3和Qt5的图像处理GUI,具有图像预处理、形态学操作、图像滤波、图像分割等四大功能模块. 图像预处理主要包括以下五个部分:  "①灰度化."  "②二值化."  "③对比度和亮度."  "④直方图...

    最近做了一个基于Opencv3和Qt5的图像处理GUI,具有图像预处理、形态学操作、图像滤波、图像分割等四大功能模块.

    图像预处理主要包括以下五个部分:
      "①灰度化."
      "②二值化."
      "③对比度和亮度."
      "④直方图均衡化."
      "⑤设置感兴趣区域."

    形态学处理主要包括以下七个部分:
      "①膨胀、腐蚀."
      "②开、闭运算."
      "③梯度、顶帽、黑帽运算."
      "④填充孔洞."
      "⑤去除小面积区域."
      "⑥形态学重构."
      "⑦轮廓的提取及描述."

    图像滤波处理主要包括以下五种滤波:
      "①方框滤波."
      "②均值滤波."
      "③高斯滤波."
      "④中值滤波."
      "⑤双边滤波."

    图像分割主要包括以下五种类型的分割:
      "①基于阈值的大津法分割"
      "②基于形态学的分水岭算法分割"
      "③基于边缘检测的Canny、Sobel、Laplacian算子分割"
      "④基于区域的生长法分割"
      "⑤基于图论的Grabcut分割"
      "⑥基于活动轮廓模型的Leverset分割"

    已经打包成EXE文件,欢迎下载试用。(注:有一些Bug没有解决)

    链接地址:http://download.csdn.net/detail/dingkeyanlail/9810589




    展开全文
  • Qt & OpenCV图像处理

    2019-02-21 14:18:29
    源码 Image_process.pro #------------------------------------------------- ...# Project created by QtCreator 2019-02-19T20:30:33 # #------------------------------------------------- QT += core gui ...
  • 在使用VS+QT+OpenCV图像处理的过程中,对OpenCV中的Mat类型的数据格式一直很头疼CV_8UC4,CV_32F等等格式的输出如果是在使用namewindow+imshow的组合进行弹窗输出时确实是没有什么大问题,但是当需要把图片转成...
  • 前言 本来8月底就是暑假的时候已经写完了。结果自己作死的想在笔记本上面安装CPU版的tensorflow。...晚上有空就写几个图像处理的算法。话说现在就业形势已经这么艰难了吗?我师兄出去别人都只肯开7...
  • 最近小博甚是堕落,在做深度学习好久没有啥进展,哎,人生最苦莫过于程序员啊,今天这篇文章就来和大家一起学学QT吧,下面我用QT实现摄像头的拍照,录像,以及打开视频文件,图像处理等操作 qt主要是用来做...
  • 本博客主要记录自己平时查找的图像处理的方法。 1、读入本地图像,提取单通道图像,截取ROI区域,保存图像 //读入图像 Mat img = imread("./dataset/imgpictures_car1/00497.jpg"); //提取单通道图 vector<Mat...
  • 操作系统:ubuntu16.04...opencv2.pro #------------------------------------------------- # # Project created by QtCreator 2020-01-08T23:47:22 # #------------------------------------------------- QT +...
  • 1、其中菜单栏的文件里实现打开测试文件,打开自定义文件,还原图像,清除图像,退出系统等功能,这些功能的实现可以参考《opencv编程案例》这本书。 2、在实验过程中由于我所用的版本是QT5.7.1,所以按照书本打的...
  • 本文译自:[OPENCV QT TUTORIAL] OPENGL WIDGET TO SHOW OPENCV IMAGES IN A QT GUI (FIRST PART) 此教程是关于在Qt图形界面中显示OpenCV图像的问题,还利用了Qt中的OpenGL。
  • Qt中利用OpenCV2.4.4多线程打开多摄像机 每个线程处理一个摄像机,从中拿出帧显示到主线程的Label控件上 模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 ...
  • OpenCV 3和Qt5计算机视觉应用开发_源码 OpenCV 3和Qt5计算机视觉应用开发_源码
  • 本文是在学习基于c++的opencv图像处理时所做的一些个人笔记,现在还不知道为啥一些头文件或者vector容器内包含的类型会加载不出来,如有程序执行不成功的,解决不了的可以留言,在本人能力范围内尽力帮助大家解决,...
  • 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门) Qt开发专栏:项目实战(点击传送门) OpenCV开发专栏...
  • OpenCV图像处理编程实例》例程复现 随书代码下载:http://www.broadview.com.cn/28573 总结+遇到的issue解决: 第一章 初识OpenCV 1.VS2015安装OpenCV2.4.11 四步骤: 1)步骤一:下载Windows安装包OpenCV...
  • Qt图像的缩放显示 实现图像缩放的方法很多,在 OpenCV&amp;Qt学习之一——打开图片文件并显示 的例程中,label控件是通过 ui-&gt;imagelabel-&gt;
1 2 3 4 5 ... 20
收藏数 6,003
精华内容 2,401
关键字:

opencv图像处理qt