qt常用转换

Mat to qimage

//转换格式
QPixmap qtworld1::getQImFromMat(cv::Mat mat)//mat转换为qimage输出
{
 if (mat.empty()) return QPixmap();
 QImage qImage;
 cv::Mat cvImage;
 switch (mat.type())
 {
 case CV_8UC1:
  cv::cvtColor(mat, cvImage, cv::COLOR_GRAY2BGR);
  break;
 case CV_8UC3:
  //cv::cvtColor(image, cvImage, cv::COLOR_BGR2RGB);
  cvImage = mat;
  break;
 }
 assert(cvImage.isContinuous());
 qImage = QImage(cvImage.data, cvImage.cols, \
  cvImage.rows, cvImage.cols * 3, QImage::Format_BGR888);
 QPixmap pixmap;
 return QPixmap::fromImage(qImage);
}

QImageToCvMat

cv::Mat qtworld1::QImageToCvMat(const QImage &inImage, bool inCloneImageData = true)
{
 switch (inImage.format())
 {case QImage::Format_ARGB32:
 case QImage::Format_ARGB32_Premultiplied:
 {
  cv::Mat  mat(inImage.height(), inImage.width(),
   CV_8UC4,
   const_cast<uchar*>(inImage.bits()),
   static_cast<size_t>(inImage.bytesPerLine())
  );
  return (inCloneImageData ? mat.clone() : mat);
 }
 // 8-bit, 3 channel
 case QImage::Format_RGB32:
 case QImage::Format_RGB888:
 {
  if (!inCloneImageData)
  {
   qWarning() << "CVS::QImageToCvMat() - Conversion requires cloning because we use a temporary QImage";
  }
  QImage   swapped = inImage;
  if (inImage.format() == QImage::Format_RGB32)
  {
   swapped = swapped.convertToFormat(QImage::Format_RGB888);
  }
  swapped = swapped.rgbSwapped();
  return cv::Mat(swapped.height(), swapped.width(),
   CV_8UC3,
   const_cast<uchar*>(swapped.bits()),
   static_cast<size_t>(swapped.bytesPerLine())
  ).clone();
 }
 // 8-bit, 1 channel
 case QImage::Format_Indexed8:
 {cv::Mat  mat(inImage.height(), inImage.width(),
   CV_8UC1,
   const_cast<uchar*>(inImage.bits()),
   static_cast<size_t>(inImage.bytesPerLine())
  );
  return (inCloneImageData ? mat.clone() : mat);
 }
 default:
  qWarning() << "CVS::QImageToCvMat() - QImage format not handled in switch:" << inImage.format();
  break;
 }
 return cv::Mat();
}

将QPixmap转化为Mat

//将QPixmap转化为Mat
cv::Mat qtworld1::QPixmapToCvMat(const QPixmap &inPixmap, bool inCloneImageData = true)
{
 return QImageToCvMat(inPixmap.toImage(), inCloneImageData);
}

QString to char

 QString line1x = ui->lineEdit_8->text();//读出输入到line1中的字符串 
 QByteArray ba1 = line1x.toLatin1();
 const char *p1x = ba1.data();

QString to int

 QString line_pz = ui->lineEdit_11->text();//读出输入到line1中的字符串
 int px = line_px.toInt();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt提供了QString类,该类提供了方便的方法用于ASCII和Unicode之间的转换。 要将ASCII字符串转换为Unicode,可以使用QString的fromAscii()方法。这个方法接受一个ASCII字符串作为参数,并返回一个对应的Unicode字符串。例如: ```cpp QString asciiString = "Hello, ASCII!"; QString unicodeString = QString::fromAscii(asciiString.toLatin1()); ``` 上面的代码将ASCII字符串"Hello, ASCII!"转换为对应的Unicode字符串,并将结果存储在unicodeString变量中。 另一种方法是使用QString的fromLatin1()方法,该方法也可以将ASCII字符串转换为Unicode。例如: ```cpp QString asciiString = "Hello, ASCII!"; QString unicodeString = QString::fromLatin1(asciiString.toLatin1()); ``` 如果要将Unicode字符串转换为ASCII,可以使用QString的toAscii()方法或者toLatin1()方法。这两个方法都会将Unicode字符串转换为对应的ASCII字符串,并返回结果。例如: ```cpp QString unicodeString = "你好,Unicode!"; QString asciiString = unicodeString.toAscii(); ``` 上面的代码将Unicode字符串"你好,Unicode!"转换为对应的ASCII字符串,并将结果存储在asciiString变量中。 需要注意的是,ASCII和Unicode之间的转换可能会涉及到字符集编码的问题。在Qt中,常用的编码是Latin-1编码,也称为ISO 8859-1编码。因此,在进行转换之前,可能需要先将字符串转换为Latin-1编码。可以使用QString的toLatin1()方法来实现这一点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值