Qt Qstring转换为string

4 篇文章 0 订阅
2 篇文章 1 订阅

在QT与Opencv一起使用的时候打开图片的时候有个问题,Qt的字符串是Qstring格式的,这个格式不能直接用于Opencv的imread()函数,要转换成普通的string格式才可以进行读取这个图片再进行图片读取,再进行处理。

String和QString之间的转化

//从QString 到 std::string
str = qstr.toStdString();

//从std::string 到QString
qstr = QString::fromStdString(str);

不过目前这个不能转换中文,所以路径里还是最好不要有中文吧,省到麻烦了。

 

用一个label来表示选取的路径了。

再用Opencv的imread去读取图片并用imshow显示是可以的,说明直接用这个函数转换为string是OK的,可以读取。

#include "qt1.h"
#include <qapplication.h>
#include<QMessageBox>
#include<qfiledialog.h>
#include<qimage.h>
#include<qpixmap.h>
#include<qfileinfo.h>
#include<qscrollarea.h>
#include<qgridlayout.h>
#include<opencv2\opencv.hpp>   
#include<opencv2\highgui\highgui.hpp>
#include"stdio.h"
#include"iostream"
using namespace std;
using namespace cv;

qt1::qt1(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
}

void qt1::button()
{
	QString filename;
	filename = QFileDialog::getOpenFileName(this, tr("Select image:"),//用对话框获取目标地址
		"1", tr("Images (*.png *.bmp *.jpg *.gif)"));
	if (filename.isEmpty()) {
		return;
	}

	
	QImage image;
	if (!image.load(filename)) {
		QMessageBox::information(this, tr("Error"), tr("Open file error"));
		return;
	}
	QImage *imgScaled = new QImage;
	*imgScaled = image.scaled(200, 200, Qt::KeepAspectRatio);//设置大小
	
	
	QPixmap pixmap = QPixmap::fromImage(*imgScaled);
	QSize imageSize = pixmap.size();
	
	ui.label->setPixmap(pixmap);
	ui.label->resize(imageSize);
	//qDebug() << "filname: " << filename;

	setWindowTitle(QFileInfo(filename).fileName() + tr(" - imageViewer"));
	
	
	ui.label_2->setText(filename);//把标签2设为路径
	
	
	string str;
	str = filename.toStdString();
	filename = QString::fromStdString(str);//把string转换为Qstring
	Mat img = imread(str);
	imshow("打开图片", img);
	
}
  • 2
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值