Browse Source

添加测温对应模块, 修改了之前因为测试导致的空指针问题

master
zara 1 year ago
parent
commit
8be76266dd
  1. 33
      CMakeLists.txt
  2. 20
      CMakeLists.txt.user
  3. 18
      install.nsi.in
  4. 222
      installsa.nsi.in
  5. 120
      mainwindow.cpp
  6. 11
      mainwindow.h
  7. 3
      menu1.cpp
  8. 80
      menu5_1.cpp
  9. 44
      menu5_1.h
  10. 126
      menu5_1.ui
  11. 38
      menu6.cpp
  12. 31
      menu6.h
  13. 95
      menu6.ui
  14. 24
      multipoint.cpp
  15. 14
      player.cpp
  16. 22
      player.h
  17. 53
      player.ui
  18. 105
      usbcontrol.cpp
  19. 7
      usbcontrol.h

33
CMakeLists.txt

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.5)
set(PROJECT_VERSION 1.4.2.4)
set(PROJECT_VERSION 1.4.2.6)
add_definitions(-DProjectVersion=\"${PROJECT_VERSION}\")
project(zxrcClient VERSION ${PROJECT_VERSION} LANGUAGES CXX)
@ -20,6 +20,10 @@ configure_file(install.nsi.in @@ -20,6 +20,10 @@ configure_file(install.nsi.in
install.nsi
@ONLY
)
configure_file(installsa.nsi.in
installsa.nsi
@ONLY
)
set(QFluentDIR "C:/QFluentWidgets_v170")
@ -91,6 +95,15 @@ set(PROJECT_SOURCES @@ -91,6 +95,15 @@ set(PROJECT_SOURCES
${CMAKE_CURRENT_BINARY_DIR}/qt5app.rc
multipoint.cpp
multipoint.h
idpath.cpp
idpath.h
idpath.ui
player.cpp
player.h
player.ui
menu5_1.h menu5_1.cpp menu5_1.ui
menu6.cpp menu6.h menu6.ui
)
###
@ -99,13 +112,13 @@ set(PROJECT_SOURCES @@ -99,13 +112,13 @@ set(PROJECT_SOURCES
###1,
###2zxj02,.
#add_executable (zxrcClient WIN32 ${PROJECT_SOURCES})
#target_include_directories (zxrcClient PRIVATE ${INCLUDE_DIRS})
#target_link_directories (zxrcClient PRIVATE ${LIB_DIRS})
#target_link_libraries (zxrcClient PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
#target_link_libraries (zxrcClient PRIVATE QFluentWidgets::Widgets ${LIBS})
#target_link_libraries (zxrcClient PRIVATE ${OpenCV_LIBS})
#target_compile_definitions (zxrcClient PRIVATE CLIENT=0)
add_executable (zxrcClientSA WIN32 ${PROJECT_SOURCES} )
target_include_directories (zxrcClientSA PRIVATE ${INCLUDE_DIRS})
target_link_directories (zxrcClientSA PRIVATE ${LIB_DIRS})
target_link_libraries (zxrcClientSA PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries (zxrcClientSA PRIVATE QFluentWidgets::Widgets ${LIBS})
target_link_libraries (zxrcClientSA PRIVATE ${OpenCV_LIBS})
target_compile_definitions (zxrcClientSA PRIVATE CLIENT=0)
#add_executable (zxrcClientSim WIN32 ${PROJECT_SOURCES})
@ -130,9 +143,7 @@ set(LOCALALGO @@ -130,9 +143,7 @@ set(LOCALALGO
sagauss.h
twopoint.cpp
twopoint.h
idpath.cpp
idpath.h
idpath.ui
)
add_executable (zxrcClientPC WIN32 ${LOCALALGO} ${PROJECT_SOURCES})

20
CMakeLists.txt.user

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 11.0.1, 2024-06-25T18:03:56. -->
<!-- Written by QtCreator 11.0.1, 2024-07-08T17:21:27. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@ -415,7 +415,23 @@ @@ -415,7 +415,23 @@
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/WorkSpace/zxrcClientNew/build-zxrcClient-Desktop_Qt_5_15_2_MSVC2019_64bit-Release</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">zxrcClientSA</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.zxrcClientSA</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">zxrcClientSA</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/WorkSpace/zxrcClientNew/build-zxrcClient-Desktop_Qt_5_15_2_MSVC2019_64bit-Release</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
</valuemap>
</data>
<data>

18
install.nsi.in

@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "中芯热成上位机"
!define PRODUCT_NAME "中芯热成上位机PC"
!define PRODUCT_VERSION "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@.@CMAKE_PROJECT_VERSION_TWEAK@"
!define PRODUCT_PUBLISHER "zxrc"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\zxrcClient.exe"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\zxrcClientPC.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
@ -30,7 +30,7 @@ SetCompressor lzma @@ -30,7 +30,7 @@ SetCompressor lzma
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\zxrcClient.exe"
!define MUI_FINISHPAGE_RUN "$INSTDIR\zxrcClientPC.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
@ -59,10 +59,10 @@ FunctionEnd @@ -59,10 +59,10 @@ FunctionEnd
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "zxrcClient.exe"
File "zxrcClientPC.exe"
CreateDirectory "$SMPROGRAMS\中芯热成上位机"
CreateShortCut "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk" "$INSTDIR\zxrcClient.exe"
CreateShortCut "$DESKTOP\中芯热成上位机.lnk" "$INSTDIR\zxrcClient.exe"
CreateShortCut "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk" "$INSTDIR\zxrcClientPC.exe"
CreateShortCut "$DESKTOP\中芯热成上位机.lnk" "$INSTDIR\zxrcClientPC.exe"
SetOverwrite try
File "D3Dcompiler_47.dll"
@ -130,10 +130,10 @@ SectionEnd @@ -130,10 +130,10 @@ SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\zxrcClient.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\zxrcClientPC.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\zxrcClient.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\zxrcClientPC.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
@ -202,7 +202,7 @@ Section Uninstall @@ -202,7 +202,7 @@ Section Uninstall
Delete "$INSTDIR\imageformats\qgif.dll"
Delete "$INSTDIR\iconengines\qsvgicon.dll"
Delete "$INSTDIR\D3Dcompiler_47.dll"
Delete "$INSTDIR\zxrcClient.exe"
Delete "$INSTDIR\zxrcClientPC.exe"
Delete "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk"
Delete "$DESKTOP\中芯热成上位机.lnk"

222
installsa.nsi.in

@ -0,0 +1,222 @@ @@ -0,0 +1,222 @@
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "中芯热成上位机SA"
!define PRODUCT_VERSION "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@.@CMAKE_PROJECT_VERSION_TWEAK@"
!define PRODUCT_PUBLISHER "zxrc"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\zxrcClientSA.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Language Selection Dialog Settings
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\zxrcClientSA.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"
; Reserve files
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME} ${PRODUCT_VERSION}Setup.exe"
InstallDir "$PROGRAMFILES\中芯热成上位机"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "zxrcClientSA.exe"
CreateDirectory "$SMPROGRAMS\中芯热成上位机"
CreateShortCut "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk" "$INSTDIR\zxrcClientSA.exe"
CreateShortCut "$DESKTOP\中芯热成上位机.lnk" "$INSTDIR\zxrcClientSA.exe"
SetOverwrite try
File "D3Dcompiler_47.dll"
SetOutPath "$INSTDIR\iconengines"
File "iconengines\qsvgicon.dll"
SetOutPath "$INSTDIR\imageformats"
File "imageformats\qgif.dll"
File "imageformats\qicns.dll"
File "imageformats\qico.dll"
File "imageformats\qjpeg.dll"
File "imageformats\qsvg.dll"
File "imageformats\qtga.dll"
File "imageformats\qtiff.dll"
File "imageformats\qwbmp.dll"
File "imageformats\qwebp.dll"
SetOutPath "$INSTDIR"
File "libEGL.dll"
File "libGLESv2.dll"
File "logo.ico"
File "opencv_videoio_ffmpeg470_64.dll"
File "opencv_world470.dll"
File "opengl32sw.dll"
SetOutPath "$INSTDIR\platforms"
File "platforms\qwindows.dll"
SetOutPath "$INSTDIR"
File "Qt5Core.dll"
File "Qt5Gui.dll"
File "Qt5Svg.dll"
File "Qt5Xml.dll"
File "Qt5Widgets.dll"
File "qtcsettings.cmake"
SetOutPath "$INSTDIR\styles"
File "styles\qwindowsvistastyle.dll"
SetOutPath "$INSTDIR\translations"
File "translations\qt_ar.qm"
File "translations\qt_bg.qm"
File "translations\qt_ca.qm"
File "translations\qt_cs.qm"
File "translations\qt_da.qm"
File "translations\qt_de.qm"
File "translations\qt_en.qm"
File "translations\qt_es.qm"
File "translations\qt_fi.qm"
File "translations\qt_fr.qm"
File "translations\qt_gd.qm"
File "translations\qt_he.qm"
File "translations\qt_hu.qm"
File "translations\qt_it.qm"
File "translations\qt_ja.qm"
File "translations\qt_ko.qm"
File "translations\qt_lv.qm"
File "translations\qt_pl.qm"
File "translations\qt_ru.qm"
File "translations\qt_sk.qm"
File "translations\qt_tr.qm"
File "translations\qt_uk.qm"
File "translations\qt_zh_TW.qm"
SetOutPath "$INSTDIR"
SectionEnd
Section -AdditionalIcons
CreateShortCut "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\zxrcClientSA.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\zxrcClientSA.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
Abort
FunctionEnd
Section Uninstall
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\usbcam.lib"
Delete "$INSTDIR\translations\qt_zh_TW.qm"
Delete "$INSTDIR\translations\qt_uk.qm"
Delete "$INSTDIR\translations\qt_tr.qm"
Delete "$INSTDIR\translations\qt_sk.qm"
Delete "$INSTDIR\translations\qt_ru.qm"
Delete "$INSTDIR\translations\qt_pl.qm"
Delete "$INSTDIR\translations\qt_lv.qm"
Delete "$INSTDIR\translations\qt_ko.qm"
Delete "$INSTDIR\translations\qt_ja.qm"
Delete "$INSTDIR\translations\qt_it.qm"
Delete "$INSTDIR\translations\qt_hu.qm"
Delete "$INSTDIR\translations\qt_he.qm"
Delete "$INSTDIR\translations\qt_gd.qm"
Delete "$INSTDIR\translations\qt_fr.qm"
Delete "$INSTDIR\translations\qt_fi.qm"
Delete "$INSTDIR\translations\qt_es.qm"
Delete "$INSTDIR\translations\qt_en.qm"
Delete "$INSTDIR\translations\qt_de.qm"
Delete "$INSTDIR\translations\qt_da.qm"
Delete "$INSTDIR\translations\qt_cs.qm"
Delete "$INSTDIR\translations\qt_ca.qm"
Delete "$INSTDIR\translations\qt_bg.qm"
Delete "$INSTDIR\translations\qt_ar.qm"
Delete "$INSTDIR\styles\qwindowsvistastyle.dll"
Delete "$INSTDIR\qtcsettings.cmake"
Delete "$INSTDIR\Qt5Widgets.dll"
Delete "$INSTDIR\Qt5Svg.dll"
Delete "$INSTDIR\Qt5Gui.dll"
Delete "$INSTDIR\Qt5Xml.dll"
Delete "$INSTDIR\Qt5Core.dll"
Delete "$INSTDIR\platforms\qwindows.dll"
Delete "$INSTDIR\opengl32sw.dll"
Delete "$INSTDIR\opencv_world470.dll"
Delete "$INSTDIR\opencv_videoio_ffmpeg470_64.dll"
Delete "$INSTDIR\logo.ico"
Delete "$INSTDIR\libGLESv2.dll"
Delete "$INSTDIR\libEGL.dll"
Delete "$INSTDIR\imageformats\qwebp.dll"
Delete "$INSTDIR\imageformats\qwbmp.dll"
Delete "$INSTDIR\imageformats\qtiff.dll"
Delete "$INSTDIR\imageformats\qtga.dll"
Delete "$INSTDIR\imageformats\qsvg.dll"
Delete "$INSTDIR\imageformats\qjpeg.dll"
Delete "$INSTDIR\imageformats\qico.dll"
Delete "$INSTDIR\imageformats\qicns.dll"
Delete "$INSTDIR\imageformats\qgif.dll"
Delete "$INSTDIR\iconengines\qsvgicon.dll"
Delete "$INSTDIR\D3Dcompiler_47.dll"
Delete "$INSTDIR\zxrcClientSA.exe"
Delete "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk"
Delete "$DESKTOP\中芯热成上位机.lnk"
Delete "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk"
RMDir "$SMPROGRAMS\中芯热成上位机"
RMDir "$INSTDIR\translations"
RMDir "$INSTDIR\styles"
RMDir "$INSTDIR\platforms"
RMDir "$INSTDIR\imageformats"
RMDir "$INSTDIR\iconengines"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd

120
mainwindow.cpp

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
#include <QDesktopServices>
#include <QDebug>
#define ddd qDebug()<<__LINE__<<__FUNCTION__
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
@ -13,11 +14,13 @@ MainWindow::MainWindow(QWidget *parent) @@ -13,11 +14,13 @@ MainWindow::MainWindow(QWidget *parent)
ui->setupUi(this);
initIns();
ddd;
initUI();
ddd;
initConnect();
ddd;
//#if CLIENT==1
@ -49,7 +52,15 @@ void MainWindow::initUI() @@ -49,7 +52,15 @@ void MainWindow::initUI()
fpscount = 0;
path = QApplication::applicationDirPath()+"/";
setWindowTitle(QString::fromLocal8Bit("中芯热成上位机")+ QString(ProjectVersion));
QString title = QString::fromLocal8Bit("中芯热成上位机");
#if CLIENT==0
title +="SA";
#else
title +="PC";
resize(960,800);
#endif
setWindowTitle(title+ QString(ProjectVersion));
setWindowIcon(QIcon("logo.ico"));
@ -69,26 +80,54 @@ void MainWindow::initUI() @@ -69,26 +80,54 @@ void MainWindow::initUI()
m2 = new menu2();
m3 = new menu3();
m4 = new menu4();
ddd;
m5 = new menu5();
m5_1 = new menu5_1();
ddd;
ui->toolbox->addItem(m1,u8"相机设置");
ui->toolbox->addItem(m2,u8"算法设置");
ui->toolbox->addItem(m3,u8"显示设置");
ui->toolbox->addItem(m4,u8"保存设置");
ddd;
#if CLIENT==2
ui->toolbox->addItem(m5,u8"多点校正");
#endif
#if CLIENT==0
ui->toolbox->addItem(m5_1,u8"多点校正");
#endif
#if CLIENT==2
menu6* m6 = new menu6;
ui->toolbox->addItem(m6, u8"测温设置");
connect(m6,&menu6::signalSetTemp,[=](double temp){
b_temp_save = true;
d_temp = temp;
});
connect(m6,&menu6::signalTurnTemp,[=](bool b){
b_temp = b;
});
#endif
type = gray16;
rows = ui->spinBox->value();
cols = ui->spinBox_2->value();
ddd;
ui->scrollAreaWidgetContents->setMinimumSize(cols+20,rows+20);
ui->label->resize(cols,rows);
ddd;
if(m_mp != nullptr)
m_mp->setparas(rows,cols);
ddd;
ui->tableWidget->horizontalHeader()->hide();
ui->tableWidget->verticalHeader()->hide();
@ -106,11 +145,13 @@ void MainWindow::initUI() @@ -106,11 +145,13 @@ void MainWindow::initUI()
lpath->setUrl(QUrl(path));
ui->statusbar->addWidget(lfps);
ui->statusbar->addWidget(lpath);
ddd;
b_con = false;
d_con = 1;
d_con_bright = 0;
ddd;
}
@ -242,6 +283,31 @@ void MainWindow::initConnect() @@ -242,6 +283,31 @@ void MainWindow::initConnect()
connect(m5,SIGNAL(signaloff()),m_mp,SLOT(off()));
#endif
#if CLIENT==0
connect(m5_1,&menu5_1::signalSetbase,[=](int index){
slotlogtext(u8"开始保存第"+QString::number(index)+u8"个背景");
mpidx = index;
mpsum = 0;
mpnum = 16;
});
connect(m5_1,&menu5_1::signalFlash,[=](int index){
ucontrol->mpflash(index);
});
connect(m5_1,&menu5_1::signalStatus,[=](bool b){
ucontrol->mpstatus(b);
});
connect(m5_1,&menu5_1::signalPop,[=](int index){
ucontrol->mppop(index);
});
connect(m5_1,&menu5_1::signalscratch,[=](int* value){
for(int i = 0;i<5;i++){
ucontrol->mpset1(i+1,value[i]);
}
});
#endif
connect(m2,&menu2::signalsetDE,[=](bool b){
b_con = b;
});
@ -488,19 +554,15 @@ void MainWindow::slotShowImage(cv::Mat img) @@ -488,19 +554,15 @@ void MainWindow::slotShowImage(cv::Mat img)
}
if(turnl){
}
else if(turnr){
if(b_temp_save){
m_temp[img.at<ushort>(imageY,imageX)/4] = d_temp;
b_temp_save = false;
}
if(b_con){
if(b_con && (!b_temp)){
cv::Mat image;
@ -546,7 +608,26 @@ void MainWindow::slotShowImage(cv::Mat img) @@ -546,7 +608,26 @@ void MainWindow::slotShowImage(cv::Mat img)
else{
lmask[(i+r)*(2*r+1)+(j+r)] = 1;
if(lastimage.type() == CV_16UC1){
QTableWidgetItem *item = new QTableWidgetItem(QString::number(lastimage.at<ushort>(row,col)));
QTableWidgetItem *item;
if(b_temp && m_temp.size()>2){
double t0 = lastimage.at<ushort>(row,col);
QList<double> temps = m_temp.keys();
int len = temps.size();
if(t0<temps[1])
t0 = (t0-temps[0])/(temps[1]-temps[0])*(m_temp[temps[1]]-m_temp[temps[0]]) + m_temp[temps[0]];
else if(t0>temps[temps.size()-2]){
t0 = (t0-temps[len-2])/(temps[len-1]-temps[len-2])*(m_temp[temps[len-1]]-m_temp[temps[len-2]]) + m_temp[temps[len-2]];
}
else for(int k = 0;k<temps.size()-1;k++){
if(t0>temps[k] && t0<temps[k+1])
t0 = (t0-temps[k])/(temps[k+1]-temps[k])*(m_temp[temps[k+1]]-m_temp[temps[k]]) + m_temp[temps[k]];
}
item= new QTableWidgetItem(QString::number(t0));
}
else
item= new QTableWidgetItem(QString::number(lastimage.at<ushort>(row,col)));
int gray = lastimage.at<ushort>(row,col)/64/2+64;
item->setBackground(QColor(gray,gray,gray));
ui->tableWidget->setItem(i+r,j+r,item);
@ -624,6 +705,16 @@ void MainWindow::slotShowImage(cv::Mat img) @@ -624,6 +705,16 @@ void MainWindow::slotShowImage(cv::Mat img)
int avg = sum/rows/cols;
sigma = sqrt( sum2/rows/cols -avg*avg);
if(mpnum>0){
mpsum += avg;
if(mpnum == 1){
mpsum = mpsum/16;
ucontrol->mpset(mpidx,mpsum);
m5_1->slotGetavg(mpsum);
}
mpnum --;
}
if(lastimage.type() == CV_16UC1){
ui->lineEdit_5->setText(QString::number(lows));
ui->lineEdit_6->setText(QString::number(highs));
@ -789,7 +880,14 @@ void MainWindow::initIns() @@ -789,7 +880,14 @@ void MainWindow::initIns()
m_tp = new twoPoint();
m_clhe = new clhe();
m_mp = new MultiPoint();
#else
m_mp = nullptr;
mpnum = 0;
#endif
b_temp = false;
b_temp_save = false;
}

11
mainwindow.h

@ -9,6 +9,8 @@ @@ -9,6 +9,8 @@
#include "menu3.h"
#include "menu4.h"
#include "menu5.h"
#include "menu5_1.h"
#include "menu6.h"
#include "usbcontrol.h"
#include "usbthread.h"
@ -83,6 +85,7 @@ private: @@ -83,6 +85,7 @@ private:
menu3* m3;
menu4* m4;
menu5* m5;
menu5_1* m5_1;
QLabel* lfps ;
HyperlinkLabel* lpath;
@ -145,5 +148,13 @@ private: @@ -145,5 +148,13 @@ private:
bool saveeeee;
QMap<double , uint*> birghts;
int mpnum;
int mpidx;
double mpsum;
bool b_temp;
bool b_temp_save;
double d_temp;
QMap<double, double> m_temp;
};
#endif // MAINWINDOW_H

3
menu1.cpp

@ -6,7 +6,7 @@ menu1::menu1(QWidget *parent) : @@ -6,7 +6,7 @@ menu1::menu1(QWidget *parent) :
ui(new Ui::menu1)
{
ui->setupUi(this);
#if CLIENT==2
ui->pushButton_12->hide();
ui->pushButton->hide();
ui->pushButton_2->hide();
@ -18,6 +18,7 @@ menu1::menu1(QWidget *parent) : @@ -18,6 +18,7 @@ menu1::menu1(QWidget *parent) :
ui->pushButton_8->hide();
ui->pushButton_13->hide();
ui->pushButton_14->hide();
#endif
}
menu1::~menu1()

80
menu5_1.cpp

@ -0,0 +1,80 @@ @@ -0,0 +1,80 @@
#include "menu5_1.h"
#include "ui_menu5_1.h"
menu5_1::menu5_1(QWidget *parent) :
QWidget(parent),
ui(new Ui::menu5_1)
{
ui->setupUi(this);
}
menu5_1::~menu5_1()
{
delete ui;
}
void menu5_1::on_pushButton_clicked()
{
emit signalSetbase(ui->spinBox->value());
}
void menu5_1::on_pushButton_2_clicked()
{
emit signalFlash(ui->spinBox->value());
}
void menu5_1::on_radioButton_clicked()
{
emit signalStatus(true);
}
void menu5_1::on_radioButton_2_clicked()
{
emit signalStatus(false);
}
void menu5_1::on_pushButton_3_clicked()
{
emit signalPop(ui->spinBox->value());
}
void menu5_1::on_pushButton_4_clicked()
{
bright[1] = 16383*(bright[1]-bright[0])/(bright[4]-bright[0]);
bright[2] = 16383*(bright[2]-bright[0])/(bright[4]-bright[0]);
bright[3] = 16383*(bright[3]-bright[0])/(bright[4]-bright[0]);
bright[4] = 16383;
bright[0] = 0;
emit signalscratch(bright);
}
void menu5_1::slotGetavg(int avg)
{
bright[ui->spinBox->value()-1] = avg;
switch (ui->spinBox->value()) {
case 1:
ui->label_2->setText(QString::number(avg));
break;
case 2:
ui->label_3->setText(QString::number(avg));
break;
case 3:
ui->label_4->setText(QString::number(avg));
break;
case 4:
ui->label_5->setText(QString::number(avg));
break;
case 5:
ui->label_10->setText(QString::number(avg));
break;
default:
break;
}
}

44
menu5_1.h

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
#ifndef MENU5_1_H
#define MENU5_1_H
#include <QWidget>
namespace Ui {
class menu5_1;
}
class menu5_1 : public QWidget
{
Q_OBJECT
public:
explicit menu5_1(QWidget *parent = nullptr);
~menu5_1();
void slotGetavg(int avg);
signals:
void signalSetbase(int);
void signalFlash(int);
void signalStatus(bool);
void signalPop(int);
void signalscratch(int[]);
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_radioButton_clicked();
void on_radioButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
private:
Ui::menu5_1 *ui;
int bright[5];
};
#endif // MENU5_1_H

126
menu5_1.ui

@ -0,0 +1,126 @@ @@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>menu5_1</class>
<widget class="QWidget" name="menu5_1">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>303</width>
<height>230</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QRadioButton" name="radioButton">
<property name="text">
<string>打开</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="radioButton_2">
<property name="text">
<string>关闭</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>背景序号</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="SpinBox" name="spinBox">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>5</number>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>亮度1</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>亮度2</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>亮度3</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>亮度4</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_10">
<property name="text">
<string>亮度5</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>读出对应背景</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>固化对应背景</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>保存对应背景</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>自动增益</string>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>SpinBox</class>
<extends>QSpinBox</extends>
<header location="global">qfluentwidgets</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

38
menu6.cpp

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
#include "menu6.h"
#include "ui_menu6.h"
menu6::menu6(QWidget *parent) :
QWidget(parent),
ui(new Ui::menu6)
{
ui->setupUi(this);
ui->label->hide();
ui->label_2->hide();
ui->comboBox->hide();
ui->doubleSpinBox->hide();
}
menu6::~menu6()
{
delete ui;
}
void menu6::on_pushButton_clicked()
{
emit signalSetTemp(ui->doubleSpinBox_2->value());
}
void menu6::on_radioButton_clicked()
{
emit signalTurnTemp(true);
}
void menu6::on_radioButton_2_clicked()
{
emit signalTurnTemp(false);
}

31
menu6.h

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
#ifndef MENU6_H
#define MENU6_H
#include <QWidget>
namespace Ui {
class menu6;
}
class menu6 : public QWidget
{
Q_OBJECT
public:
explicit menu6(QWidget *parent = nullptr);
~menu6();
signals:
void signalSetTemp(double t);
void signalTurnTemp(bool );
private slots:
void on_pushButton_clicked();
void on_radioButton_clicked();
void on_radioButton_2_clicked();
private:
Ui::menu6 *ui;
};
#endif // MENU6_H

95
menu6.ui

@ -0,0 +1,95 @@ @@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>menu6</class>
<widget class="QWidget" name="menu6">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>240</width>
<height>320</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>类型</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>距离</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>温度</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox_2">
<property name="minimum">
<double>-200.000000000000000</double>
</property>
<property name="maximum">
<double>10000.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>保存温度点</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QRadioButton" name="radioButton">
<property name="text">
<string>显示温度</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="radioButton_2">
<property name="text">
<string>显示亮度</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

24
multipoint.cpp

@ -77,6 +77,7 @@ void MultiPoint::calcData(QVector<double> vct) @@ -77,6 +77,7 @@ void MultiPoint::calcData(QVector<double> vct)
vs = (vs-v0)/(vn-v0)*65535;
ve = (ve-v0)/(vn-v0)*65535;
double* ss = stages+(k-1)*rows*cols;
double* ks = kstages+k*rows*cols;
*(bstages+k) = vs;
@ -92,8 +93,8 @@ void MultiPoint::calcData(QVector<double> vct) @@ -92,8 +93,8 @@ void MultiPoint::calcData(QVector<double> vct)
for(int i = 0;i<ms.rows;i++){
for(int j = 0;j< ms.cols;j++){
*(ss+i*ms.cols+j) = ms.at<float>(i,j);
*(ks+i*ms.cols+j) = (ve-vs)/(me.at<float>(i,j) - ms.at<float>(i,j));
*(ss+i*ms.cols+j) = int( ms.at<float>(i,j));
*(ks+i*ms.cols+j) = int((ve-vs)/(me.at<float>(i,j) - ms.at<float>(i,j)));
// *(bs+i*ms.cols+j) = vs ;
//- k*ms.at<float>(i,j);
}
@ -108,21 +109,27 @@ void MultiPoint::calcData(QVector<double> vct) @@ -108,21 +109,27 @@ void MultiPoint::calcData(QVector<double> vct)
double* ks = kstages+k*rows*cols;
double* bs = bstages+k;
*(bs) = 65535;
// *(bs) = vct.last();
// cv::Mat ms = end.value();
qDebug()<<__FILE__<<__LINE__;
cv::Mat ms = datas[vct.last()];
qDebug()<<vct;
for(int i = 0;i<rows;i++){
qDebug()<<"i"<<i;
for(int j = 0;j<cols;j++){
*(ss+i*cols+j) = ms.at<float>(i,j);
*(ss+i*cols+j) =int( ms.at<float>(i,j));
*(ks+i*cols+j) = 0;
// *(bs+i*cols+j) = 65535;
}
}
ready = true;
}
@ -134,6 +141,7 @@ void MultiPoint::runData(cv::Mat img) @@ -134,6 +141,7 @@ void MultiPoint::runData(cv::Mat img)
if(ready){
cv::Mat dst(img.rows,img.cols,img.type());
for(int i = 0; i< img.rows;i++){
for(int j = 0; j< img.cols;j++){
@ -144,10 +152,10 @@ void MultiPoint::runData(cv::Mat img) @@ -144,10 +152,10 @@ void MultiPoint::runData(cv::Mat img)
break;
}
if(k == 0)
dst.at<ushort>(i,j) = 0;
dst.at<ushort>(i,j) = bstages[1];
else
// dst.at<ushort>(i,j) = kstages[k*img.rows*img.cols+i*img.cols+j]*img.at<ushort>(i,j)+ bstages[k];
dst.at<ushort>(i,j) = kstages[k*img.rows*img.cols+i*img.cols+j]*(img.at<ushort>(i,j)-stages[(k-1)*img.rows*img.cols+i*img.cols+j])+ bstages[k];
dst.at<ushort>(i,j) = kstages[k*img.rows*img.cols+i*img.cols+j]
*(img.at<ushort>(i,j)-stages[(k-1)*img.rows*img.cols+i*img.cols+j])+ bstages[k];
}
}
@ -163,6 +171,7 @@ void MultiPoint::meanmat(cv::Mat img) @@ -163,6 +171,7 @@ void MultiPoint::meanmat(cv::Mat img)
{
// if(n_save == 32){
if(n_save == 32){
img.convertTo(msave,CV_32FC1,1.0/32.0);
}
@ -183,6 +192,7 @@ void MultiPoint::meanmat(cv::Mat img) @@ -183,6 +192,7 @@ void MultiPoint::meanmat(cv::Mat img)
void MultiPoint::save()
{
// n_save = 32;
n_save = 32;
b_save = true;

14
player.cpp

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
#include "player.h"
#include "ui_player.h"
player::player(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::player)
{
ui->setupUi(this);
}
player::~player()
{
delete ui;
}

22
player.h

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
#ifndef PLAYER_H
#define PLAYER_H
#include <QMainWindow>
namespace Ui {
class player;
}
class player : public QMainWindow
{
Q_OBJECT
public:
explicit player(QWidget *parent = nullptr);
~player();
private:
Ui::player *ui;
};
#endif // PLAYER_H

53
player.ui

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>player</class>
<widget class="QMainWindow" name="player">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>523</width>
<height>397</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>切换文件</string>
</property>
</widget>
<widget class="QSlider" name="horizontalSlider">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>播放</string>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

105
usbcontrol.cpp

@ -17,12 +17,10 @@ int usbcontrol::sendMessage(char *msg, int msglen) @@ -17,12 +17,10 @@ int usbcontrol::sendMessage(char *msg, int msglen)
return -1;
}
msg[7]=0;
for(int i = 1;i<7;i++){
msg[7] +=msg[i];
}
msg[7]=0;
for(int i = 1;i<7;i++){
msg[7] +=msg[i];
}
if(bulkinPoint==NULL){
initEndPoint();
}
@ -418,3 +416,98 @@ void usbcontrol::setsag(bool b ) @@ -418,3 +416,98 @@ void usbcontrol::setsag(bool b )
emit signalSendMessage(log);
}
void usbcontrol::mpset(int index,unsigned short avg)
{
char msg[8] = {0};
msg[0] = 0x44;
msg[1] = 0x01;
msg[2] = 0x0a;
msg[3] = index-1;
msg[4] = avg/256;
msg[5] = avg%256;
sendMessage(msg,8);
msg[2] = 0x08;
msg[3] = index-1;
sendMessage(msg,8);
QDateTime t = QDateTime::currentDateTime();
QString log = t.toString();
log+= u8"保存第" + QString::number(index)+u8"个背景,平均亮度为"+
QString::number(avg);
emit signalSendMessage(log);
}
void usbcontrol::mpflash(int index)
{
char msg[8] = {0};
msg[0] = 0x44;
msg[1] = 0x01;
msg[2] = 0x09;
msg[3] = index-1;
sendMessage(msg,8);
QDateTime t = QDateTime::currentDateTime();
QString log = t.toString();
log+= u8"固化第" + QString::number(index)+u8"个背景";
emit signalSendMessage(log);
}
void usbcontrol::mpstatus(bool b)
{
char msg[8] = {0};
msg[0] = 0x44;
msg[1] = 0x01;
msg[2] = 0x0b;
msg[3] = b?1:0;
sendMessage(msg,8);
QDateTime t = QDateTime::currentDateTime();
QString log = t.toString();
log+= b?u8"打开多点校正":u8"关闭多点校正";
emit signalSendMessage(log);
}
void usbcontrol::mppop(int index)
{
char msg[8] = {0};
msg[0] = 0x44;
msg[1] = 0x01;
msg[2] = 0x0c;
msg[3] = index-1;
sendMessage(msg,8);
QDateTime t = QDateTime::currentDateTime();
QString log = t.toString();
log+= u8"读出第"+QString::number(index)+u8"个背景";
emit signalSendMessage(log);
}
void usbcontrol::mpset1(int index, unsigned short avg)
{
char msg[8] = {0};
msg[0] = 0x44;
msg[1] = 0x01;
msg[2] = 0x0a;
msg[3] = index-1;
msg[4] = avg/256;
msg[5] = avg%256;
sendMessage(msg,8);
QDateTime t = QDateTime::currentDateTime();
QString log = t.toString();
log+= u8"保存第" + QString::number(index)+u8"个背景,平均亮度为"+QString::number(avg);
emit signalSendMessage(log);
}

7
usbcontrol.h

@ -43,6 +43,13 @@ public slots: @@ -43,6 +43,13 @@ public slots:
void setkf(int v);
void sethist(int gray);
void setsag(bool b);
void mpset(int index, unsigned short avg);
void mpflash(int index);
void mpstatus(bool b);
void mppop(int index);
void mpset1(int index, unsigned short avg);
signals:
void signalSendMessage(QString);

Loading…
Cancel
Save