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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值