日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt+opencv二值化

發布時間:2023/12/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt+opencv二值化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我用的是Qt5.6.0+opencv3.2,套件是MinGW,關于在Qt中如何配置的問題,可以參考這篇文章,

http://blog.csdn.net/gufeiyunshi/article/details/50967440

打開圖像做個二值化處理,以證明配置沒有問題。

在ui界面放一個label和一個pushButton,比較喜歡使用Qt做界面開發,它融合了C#和C++兩種語言的好處。

在mainwindow.h寫一個槽函數,作為接受點,處理我們發出的指令。

private slots:void on_pushButton_clicked();

在mainwindow.cpp輸入一下程序:

如果我們使用opencv的方法讀取圖像或者視頻到label中,需要對圖像做一個轉換,QImage類型的圖像才可以在ui中顯示。

QImage img;img=QImage((const unsigned char*)dstImage.data,dstImage.cols,dstImage.rows,QImage::Format_Grayscale8);ui->label->setPixmap(QPixmap::fromImage(img));

注意新建的img是不是指針類型,顯示的是不是指針類型。然后再使用到的就是純粹opencv的知識了。

mainwindow.cpp主程序:

#include "openimage.h"

#include "ui_openimage.h" #include <QString> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <QFileDialog> #include <QMessageBox> using namespace cv; using namespace std; QString filename; openImage::openImage(QWidget *parent) : QMainWindow(parent), ui(new Ui::openImage) { ui->setupUi(this); } openImage::~openImage() { delete ui; } void openImage::on_pushButton_clicked() { Mat srcImage,grayImage,dstImage; srcImage=imread("F:/Projects_Qt/3.jpg"); cvtColor(srcImage,grayImage,CV_BGR2GRAY); threshold(grayImage,dstImage,150,255,THRESH_BINARY); QImage img; img=QImage((const unsigned char*)dstImage.data,dstImage.cols,dstImage.rows,QImage::Format_Grayscale8); ui->label->setPixmap(QPixmap::fromImage(img)); //QImage img=new QImage; //filename=QFileDialog::getOpenFileName(this,tr("選擇圖像"),".","Images(*.png *.bmp *.jpg *tif *.GIF)::Video Files(*.avi *.mp4)"); //filename=QFileDialog::getOpenFileName(this,tr("選擇圖像"),"F:/Projects_Qt/3.jpg",tr("Images(*.png *.bmp *.jpg *tif *.GIF)")); //if(filename.isEmpty()) //{ // return; //} // else // { // QImage* img=new QImage; // if(!(img->load(filename))) // { // QMessageBox::information(this,tr("打開圖像失敗"),tr("打開圖像失敗")); // delete img; // return; // } // ui->label->setPixmap(QPixmap::fromImage(*img)); // } }

?


上面注釋的是尋找文件的方法顯示圖像,不利用opencv處理圖像,不建議使用,但是沒有配置opencv的可以用注掉的程序顯示圖像。
最后的處理結果:












總結

以上是生活随笔為你收集整理的Qt+opencv二值化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。