#include "opcv/CvImageViewWidget.h" #include CvImageViewWidget::CvImageViewWidget(QWidget* parent) { if (parent != Q_NULLPTR) this->setParent(parent); this->setStyleSheet("background-color:black;"); curPixmap = new QPixmap(); } void CvImageViewWidget::showImage(cv::Mat const& _cvimg) { if (_cvimg.empty()) { curPixmap = new QPixmap(); this->setPixmap(*curPixmap); this->update(); return; } int width; int height; double zoomRatio = 1.0; width = _cvimg.cols; height = _cvimg.rows; if (width > this->width()) zoomRatio = 1.0 * this->width() / width; cv::resize(_cvimg, curImage, cv::Size(width * zoomRatio, height * zoomRatio)); CvImageToQPixmap(curImage, *curPixmap); this->update(); } void CvImageViewWidget::CvImageToQPixmap(cv::Mat const& _img, QPixmap& tarImg) { const uchar* pSrc = (const uchar*)_img.data; QImage image; if (_img.type() == CV_8UC1) { qDebug() << "CV_8UC1"; image = QImage(pSrc, _img.cols, _img.rows, _img.step, QImage::Format_Grayscale8); } else if (_img.type() == CV_8UC3) { qDebug() << "CV_8UC3"; image = QImage(pSrc, _img.cols, _img.rows, _img.step, QImage::Format_RGB888); } else if (_img.type() == CV_8UC4) { qDebug() << "CV_8UC4"; image = QImage(pSrc, _img.cols, _img.rows, _img.step, QImage::Format_ARGB32); } else { qDebug() << "ERROR: Mat could not be converted to QImage."; return; } tarImg = QPixmap::fromImage(image); } bool CvImageViewWidget::QImage2CvImage(QImage& from, cv::Mat& to) { return false; } void CvImageViewWidget::QPixmapToCvRegion(QPixmap const& _pix, cv::Rect2d& tarImg) { } void CvImageViewWidget::paintEvent(QPaintEvent* event) { //QPainter painter(this); if (!curPixmap->isNull()) { this->setPixmap(curPixmap->scaled(this->width(), this->height(), Qt::KeepAspectRatio)); } QLabel::paintEvent(event); }