#include "opcv/CvImageLoaderModel.h" #include #include #include CvImageLoaderModel::CvImageLoaderModel() { mCvImageView = new CvImageViewWidget(); mCvImageView->installEventFilter(this); mCvImageView->resize(200, 200); mCvImageData = std::make_shared(); } unsigned int CvImageLoaderModel::nPorts(PortType portType) const { unsigned int result = 1; switch (portType) { case PortType::In: result = 0; break; case PortType::Out: result = 1; default: break; } return result; } NodeDataType CvImageLoaderModel::dataType(PortType portType, PortIndex portIndex) const { return CvImageData().type(); } QJsonObject CvImageLoaderModel::save() const { return QJsonObject(); } void CvImageLoaderModel::restore(QJsonObject const&) { QJsonObject modelJson = NodeDataModel::save(); } void CvImageLoaderModel::loadImage(QString fileName) { if (fileName == "") return; cv::Mat tempImg = cv::imread(fileName.toStdString().c_str()); mCvImageData->setCvImage(tempImg); mCvImageView->showImage(*mCvImageData->CvImage()); } bool CvImageLoaderModel::eventFilter(QObject* object, QEvent* event) { if (object == mCvImageView) { if (event->type() == QEvent::MouseButtonPress) { imageName = QFileDialog::getOpenFileName(nullptr, tr("Open Image"), QDir::homePath(), tr("Image Files(*.png *.jpg *.jpeg *.bmp)")); if (imageName == "") { return false; } loadImage(imageName); Q_EMIT dataUpdated(0); return true; } else if (event->type() == QEvent::Resize) { } } return false; } std::shared_ptr CvImageLoaderModel::outData(PortIndex port) { return std::dynamic_pointer_cast(mCvImageData); }