You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.2 KiB
C++
129 lines
3.2 KiB
C++
#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<cv::Mat> TempImage::getImgVector()
|
|
{
|
|
std::vector<cv::Mat> imgs;
|
|
for (int i = 0; i < m_imgTemplateLib.size(); i++) {
|
|
imgs.push_back(m_imgTemplateLib.at(i)->m_img);
|
|
}
|
|
return imgs;
|
|
}
|
|
std::vector<cv::Mat> TempImage::getImgVector(int nPos)
|
|
{
|
|
std::vector<cv::Mat> 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<TempImageInfo*> 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<TempImageInfo*>::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);
|
|
}
|
|
}
|