#include "TempImage.h" #include "qdir.h" #include "HubBase.h" #include "imgcodecs.hpp" TempImage::TempImage() { } TempImage::~TempImage() { release(); } void TempImage::init(const QString& strbase, const QString &str) { QString strTmp = strbase + "\\template\\" + str + "\\"; QDir dir(strTmp); QStringList filters; filters << "*.bmp" << "*.jpg"<<"*.png"; dir.setNameFilters(filters); dir.setFilter(QDir::Files); dir.setNameFilters(filters); QFileInfoList fileList = dir.entryInfoList(); for (int j = 0; j < fileList.size(); j++) { QFileInfo info = fileList[j]; QString strPath = info.absoluteFilePath(); QString strName = info.baseName(); //cv::Mat src = cv::imread((strPath).toLatin1().data(), 0); cv::Mat src = cv::imread(std::string((const char*)strPath.toLocal8Bit()), 0); add(src, strName, strPath); } } void TempImage::add(cv::Mat &img, QString strFileName, QString strFilePath) { if (img.empty()) { return; } TempImageInfo*pInfo = new TempImageInfo(img, strFileName, strFilePath); m_imgTemplateLib.push_back(pInfo); } bool TempImage::release() { for each (TempImageInfo* pInfo in m_imgTemplateLib) { delete pInfo; } m_imgTemplateLib.clear(); return true; } std::vector TempImage::getImgVector() { std::vector imgs; for (int i = 0; i < m_imgTemplateLib.size(); i++) { imgs.push_back(m_imgTemplateLib.at(i)->m_img); } return imgs; } std::vector TempImage::getImgVector(int nPos) { std::vector imgs; imgs.clear(); if (m_imgTemplateLib.size() <= 0) return imgs; if (nPos == 0) { for (int i = 0; i < m_imgTemplateLib.size(); i++) { imgs.push_back(m_imgTemplateLib.at(i)->m_img); } } else if (nPos == 1){ imgs.push_back(m_imgTemplateLib.at(0)->m_img); } else if (nPos == 2){ imgs.push_back(m_imgTemplateLib.at(m_imgTemplateLib.size()-1)->m_img); } return imgs; } std::vector TempImage::getVectors() { return m_imgTemplateLib; } void TempImage::remove(const QString& strKey) { // for (int i = 0; i < m_imgTemplateLib.size(); i++) { // if (m_imgTemplateLib.at(i)->m_strFileName == strKey) { // hubBase::removeFile(m_imgTemplateLib.at(i)->m_strAbsoluteFilePath); // TempImageInfo * pTemp = m_imgTemplateLib.at(i); // m_imgTemplateLib.erase(pTemp); // break; // } // } for (std::vector::iterator its = m_imgTemplateLib.begin(); its != m_imgTemplateLib.end(); ++its){ if ((*its)->m_strFileName == strKey){ TempImageInfo* pTemp = (*its); hubBase::removeFile(pTemp->m_strAbsoluteFilePath); m_imgTemplateLib.erase(its); delete pTemp; break; } } } void TempImage::reload(const QString& strbase, const QString &str) { release(); QString strTmp = strbase + "\\template\\" + str + "\\"; QDir dir(strTmp); QStringList filters; filters << "*.bmp" << "*.jpg" << "*.png"; dir.setNameFilters(filters); dir.setFilter(QDir::Files); dir.setNameFilters(filters); QFileInfoList fileList = dir.entryInfoList(); for (int j = 0; j < fileList.size(); j++) { QFileInfo info = fileList[j]; QString strPath = info.absoluteFilePath(); QString strName = info.baseName(); cv::Mat src = cv::imread(std::string((const char*)strPath.toLocal8Bit()), 0); add(src, strName, strPath); } }