fix
兼容2种帧数显示逻辑:(1)采集时的实时帧数(2)打开影像时的帧数;
This commit is contained in:
@ -1064,16 +1064,20 @@ void HPPA::removeLayerByNode(LayerTreeNode* node)
|
|||||||
const int tabIndex = m_imageViewerTabWidget->indexOf(widget);
|
const int tabIndex = m_imageViewerTabWidget->indexOf(widget);
|
||||||
if (tabIndex >= 0)
|
if (tabIndex >= 0)
|
||||||
{
|
{
|
||||||
if (m_recordFrameCounter)
|
|
||||||
{
|
|
||||||
m_recordFrameCounter->removeCounter(widget);
|
|
||||||
}
|
|
||||||
m_imageViewerTabWidget->removeTab(tabIndex);
|
m_imageViewerTabWidget->removeTab(tabIndex);
|
||||||
}
|
}
|
||||||
widget->deleteLater();
|
widget->deleteLater();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!mapLayer || mapLayer->layerType() == MapLayer::LayerType::Raster)
|
||||||
|
{
|
||||||
|
if (m_recordFrameCounter)
|
||||||
|
{
|
||||||
|
m_recordFrameCounter->removeCounter(static_cast<RasterLayer*>(mapLayer));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 删除 MapLayerStore 中的 mapLayer
|
// 删除 MapLayerStore 中的 mapLayer
|
||||||
m_MapLayerStore->removeLayer(mapLayer);
|
m_MapLayerStore->removeLayer(mapLayer);
|
||||||
|
|
||||||
@ -1131,10 +1135,6 @@ void HPPA::removeImageByTreeIndex()
|
|||||||
const int tabIndex = m_imageViewerTabWidget->indexOf(layerWidget);
|
const int tabIndex = m_imageViewerTabWidget->indexOf(layerWidget);
|
||||||
if (tabIndex >= 0)
|
if (tabIndex >= 0)
|
||||||
{
|
{
|
||||||
if (m_recordFrameCounter)
|
|
||||||
{
|
|
||||||
m_recordFrameCounter->removeCounter(layerWidget);
|
|
||||||
}
|
|
||||||
m_imageViewerTabWidget->removeTab(tabIndex);
|
m_imageViewerTabWidget->removeTab(tabIndex);
|
||||||
}
|
}
|
||||||
layerWidget->deleteLater();
|
layerWidget->deleteLater();
|
||||||
@ -1701,11 +1701,6 @@ QWidget* HPPA::onCreateTab(QString tabName)
|
|||||||
|
|
||||||
m_imageViewerTabWidget->setCurrentIndex(m_imageViewerTabWidget->count() - 1);
|
m_imageViewerTabWidget->setCurrentIndex(m_imageViewerTabWidget->count() - 1);
|
||||||
|
|
||||||
if (m_recordFrameCounter)
|
|
||||||
{
|
|
||||||
m_recordFrameCounter->addCounter(tabTmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
return tabTmp;
|
return tabTmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1722,7 +1717,11 @@ void HPPA::onTabWidgetCurrentChanged(int index)//代码新建一个tab,会调
|
|||||||
if (m_recordFrameCounter)
|
if (m_recordFrameCounter)
|
||||||
{
|
{
|
||||||
QWidget* currentWidget = m_imageViewerTabWidget->widget(index);
|
QWidget* currentWidget = m_imageViewerTabWidget->widget(index);
|
||||||
m_recordFrameCounter->switchTo(currentWidget);
|
MapLayer* currentMapLayer = m_MapLayerStore->mapLayerForWidget(currentWidget);
|
||||||
|
if (currentMapLayer)
|
||||||
|
{
|
||||||
|
m_recordFrameCounter->switchTo(static_cast<RasterLayer*>(currentMapLayer));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取绘图控件
|
//获取绘图控件
|
||||||
@ -2028,6 +2027,14 @@ void HPPA::onOpenImg()
|
|||||||
QString baseName = fi.completeBaseName();
|
QString baseName = fi.completeBaseName();
|
||||||
|
|
||||||
addLayer(baseName, uri, true);
|
addLayer(baseName, uri, true);
|
||||||
|
|
||||||
|
// 获取影像行数并更新帧数显示
|
||||||
|
MapLayer* mapLayer = m_MapLayerStore->getLayerByAbsolutePath(uri);
|
||||||
|
if (mapLayer && m_recordFrameCounter)
|
||||||
|
{
|
||||||
|
RasterLayer* rasterLayer = static_cast<RasterLayer*>(mapLayer);
|
||||||
|
m_recordFrameCounter->updateFrameCount(rasterLayer, rasterLayer->height());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HPPA::disconnectImagerAndCleanup()
|
void HPPA::disconnectImagerAndCleanup()
|
||||||
@ -2448,6 +2455,12 @@ void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QSt
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MapLayer* mapLayer = m_MapLayerStore->getLayerByAbsolutePath(filePath);
|
||||||
|
if (mapLayer && m_recordFrameCounter)
|
||||||
|
{
|
||||||
|
m_recordFrameCounter->updateFrameCount(static_cast<RasterLayer*>(mapLayer), m_Imager->getFrameCounter());
|
||||||
|
}
|
||||||
|
|
||||||
if (ui.mAction3DPlantPhenotypeScenario->isChecked())
|
if (ui.mAction3DPlantPhenotypeScenario->isChecked())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -2459,11 +2472,6 @@ void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QSt
|
|||||||
QList<Mapcavas*> currentImageViewer = currentWidget->findChildren<Mapcavas*>();
|
QList<Mapcavas*> currentImageViewer = currentWidget->findChildren<Mapcavas*>();
|
||||||
currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFrameCounter());//界面中显示已经采集的帧数
|
currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFrameCounter());//界面中显示已经采集的帧数
|
||||||
|
|
||||||
if (m_recordFrameCounter)
|
|
||||||
{
|
|
||||||
m_recordFrameCounter->updateFrameCount(currentWidget, m_Imager->getFrameCounter());
|
|
||||||
}
|
|
||||||
|
|
||||||
//创建需要显示的图像--opencv版本
|
//创建需要显示的图像--opencv版本
|
||||||
ImageProcessor imageProcessor;
|
ImageProcessor imageProcessor;
|
||||||
//cv::Mat rgbImage(*m_Imager->getRgbImage()->m_matRgbImage, cv::Range(0, m_Imager->getFrameCounter()), cv::Range::all());//2022.3.18重构的
|
//cv::Mat rgbImage(*m_Imager->getRgbImage()->m_matRgbImage, cv::Range(0, m_Imager->getFrameCounter()), cv::Range::all());//2022.3.18重构的
|
||||||
@ -2665,6 +2673,11 @@ void HPPA::addLayer(const QString& baseName, const QString& filePath,bool refres
|
|||||||
|
|
||||||
if (m_MapLayerStore) m_MapLayerStore->addLayer(ml);
|
if (m_MapLayerStore) m_MapLayerStore->addLayer(ml);
|
||||||
|
|
||||||
|
if (m_recordFrameCounter)
|
||||||
|
{
|
||||||
|
m_recordFrameCounter->addCounter(ml);
|
||||||
|
}
|
||||||
|
|
||||||
if (isAddImage)
|
if (isAddImage)
|
||||||
{
|
{
|
||||||
newImage(ml, RasterImageLayer::RendererType::Multiband, node, refresh);
|
newImage(ml, RasterImageLayer::RendererType::Multiband, node, refresh);
|
||||||
|
|||||||
@ -125,6 +125,15 @@ MapLayer* MapLayerStore::getLayerAt(int index) const
|
|||||||
return m_layers[index].mapLayer.get();
|
return m_layers[index].mapLayer.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MapLayer* MapLayerStore::getLayerByAbsolutePath(const QString& absolutePath) const
|
||||||
|
{
|
||||||
|
for (const auto& entry : m_layers) {
|
||||||
|
if (entry.mapLayer->dataPath() == absolutePath)
|
||||||
|
return entry.mapLayer.get();
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
int MapLayerStore::layerCount() const
|
int MapLayerStore::layerCount() const
|
||||||
{
|
{
|
||||||
return (int)m_layers.size();
|
return (int)m_layers.size();
|
||||||
|
|||||||
@ -35,6 +35,7 @@ public:
|
|||||||
bool containsLayer(const QString& url, bool isAbsolutePath = true) const;
|
bool containsLayer(const QString& url, bool isAbsolutePath = true) const;
|
||||||
|
|
||||||
MapLayer* getLayer(const QString& name) const;
|
MapLayer* getLayer(const QString& name) const;
|
||||||
|
MapLayer* getLayerByAbsolutePath(const QString& absolutePath) const;
|
||||||
MapLayer* getLayerAt(int index) const;
|
MapLayer* getLayerAt(int index) const;
|
||||||
int layerCount() const;
|
int layerCount() const;
|
||||||
|
|
||||||
|
|||||||
@ -78,3 +78,21 @@ std::vector<double> RasterLayer::bandWavelengths() const
|
|||||||
}
|
}
|
||||||
return m_provider->bandWavelengths();
|
return m_provider->bandWavelengths();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int RasterLayer::width() const
|
||||||
|
{
|
||||||
|
if (!m_provider) {
|
||||||
|
auto* self = const_cast<RasterLayer*>(this);
|
||||||
|
if (!self->openDataProvider()) return 0;
|
||||||
|
}
|
||||||
|
return m_provider->width();
|
||||||
|
}
|
||||||
|
|
||||||
|
int RasterLayer::height() const
|
||||||
|
{
|
||||||
|
if (!m_provider) {
|
||||||
|
auto* self = const_cast<RasterLayer*>(this);
|
||||||
|
if (!self->openDataProvider()) return 0;
|
||||||
|
}
|
||||||
|
return m_provider->height();
|
||||||
|
}
|
||||||
|
|||||||
@ -31,6 +31,10 @@ public:
|
|||||||
// Get all band wavelengths
|
// Get all band wavelengths
|
||||||
std::vector<double> bandWavelengths() const;
|
std::vector<double> bandWavelengths() const;
|
||||||
|
|
||||||
|
// Get dimensions
|
||||||
|
int width() const;
|
||||||
|
int height() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::unique_ptr<RasterDataProvider> m_provider;
|
std::unique_ptr<RasterDataProvider> m_provider;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "recordFrameCounter.h"
|
#include "recordFrameCounter.h"
|
||||||
|
#include "RasterLayer.h"
|
||||||
|
|
||||||
recordFrameCounter::recordFrameCounter(QWidget* parent)
|
recordFrameCounter::recordFrameCounter(QWidget* parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
@ -16,19 +17,19 @@ recordFrameCounter::recordFrameCounter(QWidget* parent)
|
|||||||
layout->addWidget(m_stackedWidget);
|
layout->addWidget(m_stackedWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void recordFrameCounter::addCounter(QWidget* tabWidget)
|
void recordFrameCounter::addCounter(RasterLayer* mapLayer)
|
||||||
{
|
{
|
||||||
QLabel* label = new QLabel("0");
|
QLabel* label = new QLabel("0");
|
||||||
label->setStyleSheet("color: white;");
|
label->setStyleSheet("color: white;");
|
||||||
label->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
|
label->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
|
||||||
m_labelMap.insert(tabWidget, label);
|
m_labelMap.insert(mapLayer, label);
|
||||||
m_stackedWidget->addWidget(label);
|
m_stackedWidget->addWidget(label);
|
||||||
m_stackedWidget->setCurrentWidget(label);
|
m_stackedWidget->setCurrentWidget(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
void recordFrameCounter::removeCounter(QWidget* tabWidget)
|
void recordFrameCounter::removeCounter(RasterLayer* mapLayer)
|
||||||
{
|
{
|
||||||
auto it = m_labelMap.find(tabWidget);
|
auto it = m_labelMap.find(mapLayer);
|
||||||
if (it != m_labelMap.end())
|
if (it != m_labelMap.end())
|
||||||
{
|
{
|
||||||
QLabel* label = it.value();
|
QLabel* label = it.value();
|
||||||
@ -38,18 +39,18 @@ void recordFrameCounter::removeCounter(QWidget* tabWidget)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void recordFrameCounter::switchTo(QWidget* tabWidget)
|
void recordFrameCounter::switchTo(RasterLayer* mapLayer)
|
||||||
{
|
{
|
||||||
auto it = m_labelMap.find(tabWidget);
|
auto it = m_labelMap.find(mapLayer);
|
||||||
if (it != m_labelMap.end())
|
if (it != m_labelMap.end())
|
||||||
{
|
{
|
||||||
m_stackedWidget->setCurrentWidget(it.value());
|
m_stackedWidget->setCurrentWidget(it.value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void recordFrameCounter::updateFrameCount(QWidget* tabWidget, int frameCount)
|
void recordFrameCounter::updateFrameCount(RasterLayer* mapLayer, int frameCount)
|
||||||
{
|
{
|
||||||
auto it = m_labelMap.find(tabWidget);
|
auto it = m_labelMap.find(mapLayer);
|
||||||
if (it != m_labelMap.end())
|
if (it != m_labelMap.end())
|
||||||
{
|
{
|
||||||
it.value()->setText(QString::number(frameCount));
|
it.value()->setText(QString::number(frameCount));
|
||||||
|
|||||||
@ -6,19 +6,20 @@
|
|||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
|
||||||
|
class RasterLayer;
|
||||||
|
|
||||||
class recordFrameCounter : public QWidget
|
class recordFrameCounter : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit recordFrameCounter(QWidget* parent = nullptr);
|
explicit recordFrameCounter(QWidget* parent = nullptr);
|
||||||
|
|
||||||
void addCounter(QWidget* tabWidget);
|
void addCounter(RasterLayer* mapLayer);
|
||||||
void removeCounter(QWidget* tabWidget);
|
void removeCounter(RasterLayer* mapLayer);
|
||||||
void switchTo(QWidget* tabWidget);
|
void switchTo(RasterLayer* mapLayer);
|
||||||
void updateFrameCount(QWidget* tabWidget, int frameCount);
|
void updateFrameCount(RasterLayer* mapLayer, int frameCount);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QStackedWidget* m_stackedWidget = nullptr;
|
QStackedWidget* m_stackedWidget = nullptr;
|
||||||
QMap<QWidget*, QLabel*> m_labelMap;
|
QMap<RasterLayer*, QLabel*> m_labelMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user