Qt显示神经网络检测结果之各种函数

(1)展示浏览页面并获取目录且将该目录下文件显示在comboBox

	path = QDir::toNativeSeparators(QFileDialog::getExistingDirectory(this, tr("view file"), QDir::currentPath()));//打开目录页面,选择相应目录,path获取字符
	ui->PATHLineEdit->setText(path);//将目录显示在LineEdit上
	QFileInfoList list;
	QDir dir(path);
	dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);//获取path下的所有文件
	list = dir.entryInfoList();//放到一个list里
	for(int i = 0;i < list.length(); i++ )
    {
        file = list.at(i).fileName();
        ui->comboBox->addItem(file);//逐一显示到comboBox上
    }

(2)检测此时comboBox上显示的是哪个内容

	for(int i = 0; i < list.length(); i++ )//list.length()的大小即comboBox内容的数量,且一一对应
    {
        if(ui->comboBox->currentIndex()==i)//找出对应内容
        {
            imgBef = list.at(i).fileName().toStdString();//获取该文件名
        }
    }

(3)报错弹窗

QMessageBox::information(this, "错误!", "请选择.jpg文件");
QMessageBox::information(this, "错误!", "请选择正确的文件位置");

(4)文件目录处理

//由于openc无法读取Qstring字符串,要先将Qstring转化为string,
//但是目录转化后只有一个“\”,Qt还是无法读取,需要将“\”转化为“\\”,
//之后再用opencv读取图片
img = path.toStdString();//Qstring转化为string
for(i = 0; i < iSize; i++)
{
	if('\\' == img[i])
	{
		img1 = img1 + "\\"+"\\";
		continue;
	}
	img1 = img1 + img[i];
}

(5)opencv Mat类型转化为Qt QImage

QImage Widget::Mat2QImage(cv::Mat& image)
{
    QImage img;

    if (image.channels() == 3) {
        cvtColor(image, image, CV_BGR2RGB);
        img = QImage((const unsigned char*)(image.data), image.cols, image.rows,
            image.cols * image.channels(), QImage::Format_RGB888);
    }
    else if (image.channels() == 1) {
        img = QImage((const unsigned char*)(image.data), image.cols, image.rows,
            image.cols * image.channels(), QImage::Format_ARGB32);
    }
    else {
        img = QImage((const unsigned char*)(image.data), image.cols, image.rows,
            image.cols * image.channels(), QImage::Format_RGB888);
    }

    return img;
}

(6)在Qt label中显示opencv检测结果

Mat Image = detect(names_file_, cfg_file_, weights_file_, img1);//opencv检测结果
QImage QImg = Mat2QImage(Image);         //opencv Mat类型转化为Qt QImage
QSize laSize=ui->showLabel->size();      //label_carema是要显示图片的label的名称
QImg = QImg.scaled(laSize,Qt::IgnoreAspectRatio);//重新调整图像大小以适应窗口
ui->showLabel->setPixmap(QPixmap::fromImage(QImg));//显示图片

(7)包含的头文件

#include "widget.h"
#include "ui_widget.h"
#include <iostream>
#include <opencv2\opencv.hpp>
#include <QDebug>
#include <QDir>
#include <QString>
#include <QFileDialog>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include "opencvdarknet.h"
#include <QMessageBox>
#include <QImage>
#include "opencv2/imgproc/types_c.h"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值