commit 8ccab171db5ef40c10dabbc99e4df5bc0282b6db Author: Chenglei98 <44131164+Chenglei98@users.noreply.github.com> Date: Sat Sep 17 10:52:03 2022 +0800 Add files via upload 淮安部署版本 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f3e296 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.o +saved_image +.qmake.stash +doc +log diff --git a/.qmake.stash b/.qmake.stash new file mode 100644 index 0000000..e1d04e4 --- /dev/null +++ b/.qmake.stash @@ -0,0 +1,24 @@ +QMAKE_CXX.INCDIRS = \ + /usr/include/c++/7 \ + /usr/include/x86_64-linux-gnu/c++/7 \ + /usr/include/c++/7/backward \ + /usr/lib/gcc/x86_64-linux-gnu/7/include \ + /usr/local/include \ + /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed \ + /usr/include/x86_64-linux-gnu \ + /usr/include +QMAKE_CXX.LIBDIRS = \ + /usr/lib/gcc/x86_64-linux-gnu/7 \ + /usr/lib/x86_64-linux-gnu \ + /usr/lib \ + /lib/x86_64-linux-gnu \ + /lib +QMAKE_CXX.QT_COMPILER_STDCXX = 201402L +QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 7 +QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 5 +QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0 +QMAKE_CXX.COMPILER_MACROS = \ + QT_COMPILER_STDCXX \ + QMAKE_GCC_MAJOR_VERSION \ + QMAKE_GCC_MINOR_VERSION \ + QMAKE_GCC_PATCH_VERSION diff --git a/123.txt b/123.txt new file mode 100644 index 0000000..c2d5175 --- /dev/null +++ b/123.txt @@ -0,0 +1,30 @@ +connect plc success +>>> connect to monitor successfully! >>> +>>> load system parameter successfully! >>> + welcome dk ! + Display ID: SF3000-GE04K-10C-00 00:26:ac:a1:00:9d [192.168.15.105] + Display ID: FX10e 70:f8:e7:b0:07:c4 [169.254.128.27] +set ip success +*** Unable to connect to FX10e 70:f8:e7:b0:07:c4 [169.254.128.27] +*** init camera error, error code: -1 *** +>>> try to init camera again... >>> + Display ID: SF3000-GE04K-10C-00 00:26:ac:a1:00:9d [192.168.15.105] + Display ID: FX10e 70:f8:e7:b0:07:c4 [192.168.123.3] +set ip success +>>> Successfully connected to FX10e 70:f8:e7:b0:07:c4 [192.168.123.3] + +>>> load calibration init success! >>> +>>> Connecting to SF3000-GE04K-10C-00 00:26:ac:a1:00:9d [192.168.15.105] +>>> Successfully connected to SF3000-GE04K-10C-00 00:26:ac:a1:00:9d [192.168.15.105] + +>>> init camera successfully + hello dk ! +>>> spec threshold 4 send to python +>>> rgb threshold 6 send to python +new connection to lower machine! +receive message from suhandong +start +queue buffer successfully... +running on 0 +queue buffer successfully... +>>> start acquisition >>> diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..97481f2 --- /dev/null +++ b/Makefile @@ -0,0 +1,863 @@ +############################################################################# +# Makefile for building: tobacco_v1_0 +# Generated by qmake (3.1) (Qt 5.9.5) +# Project: tobacco_v1_0.pro +# Template: app +# Command: /usr/lib/qt5/bin/qmake -o Makefile tobacco_v1_0.pro +############################################################################# + +MAKEFILE = Makefile + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB +CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +INCPATH = -I. -I/opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include -isystem /usr/include/opencv2 -I/home/dt/下载/libmodbus-3.1.6/install/include/modbus -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -isystem /usr/include/libdrm -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ +QMAKE = /usr/lib/qt5/bin/qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = cp -f +COPY_DIR = cp -f -R +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = cp -f -R +QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall +QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +TAR = tar -cf +COMPRESS = gzip -9f +DISTNAME = tobacco_v1_01.0.0 +DISTDIR = /home/dt/tobacco_huaian/aaaaa/2022.8.21/2022.8.20/tobacco_v1_0/.tmp/tobacco_v1_01.0.0 +LINK = g++ +LFLAGS = -Wl,-O1 +LIBS = $(SUBLIBS) -L/opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/lib/ -lEbTransportLayerLib -lPtUtilsLib -lPvBase -lPvCameraBridge -lPvGenICam -lPvPersistence -lPvStream -lPvTransmitter -lSimpleImagingLib -lEbUtilsLib -lPtConvertersLib -lPvAppUtils -lPvBuffer -lPvDevice -lPvGUI -lPvSerial -lPvSystem -lPvVirtualDevice -L/usr/lib/x86_64-linux-gnu/ -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lmodbus -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread +AR = ar cqs +RANLIB = +SED = sed +STRIP = strip + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = main.cpp \ + widget.cpp \ + camera.cpp \ + thread.cpp \ + parameter.cpp moc_widget.cpp \ + moc_camera.cpp \ + moc_thread.cpp +OBJECTS = main.o \ + widget.o \ + camera.o \ + thread.o \ + parameter.o \ + moc_widget.o \ + moc_camera.o \ + moc_thread.o +DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ + .qmake.stash \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ + tobacco_v1_0.pro widget.h \ + camera.h \ + thread.h \ + parameter.h main.cpp \ + widget.cpp \ + camera.cpp \ + thread.cpp \ + parameter.cpp +QMAKE_TARGET = tobacco_v1_0 +DESTDIR = +TARGET = tobacco_v1_0 + + +first: all +####### Build rules + +$(TARGET): ui_widget.h $(OBJECTS) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) + +Makefile: tobacco_v1_0.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ + .qmake.stash \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ + tobacco_v1_0.pro \ + /usr/lib/x86_64-linux-gnu/libQt5Widgets.prl \ + /usr/lib/x86_64-linux-gnu/libQt5Gui.prl \ + /usr/lib/x86_64-linux-gnu/libQt5Network.prl \ + /usr/lib/x86_64-linux-gnu/libQt5Core.prl + $(QMAKE) -o Makefile tobacco_v1_0.pro +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf: +.qmake.stash: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf: +tobacco_v1_0.pro: +/usr/lib/x86_64-linux-gnu/libQt5Widgets.prl: +/usr/lib/x86_64-linux-gnu/libQt5Gui.prl: +/usr/lib/x86_64-linux-gnu/libQt5Network.prl: +/usr/lib/x86_64-linux-gnu/libQt5Core.prl: +qmake: FORCE + @$(QMAKE) -o Makefile tobacco_v1_0.pro + +qmake_all: FORCE + + +all: Makefile $(TARGET) + +dist: distdir FORCE + (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR) + +distdir: FORCE + @test -d $(DISTDIR) || mkdir -p $(DISTDIR) + $(COPY_FILE) --parents $(DIST) $(DISTDIR)/ + $(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/ + $(COPY_FILE) --parents widget.h camera.h thread.h parameter.h $(DISTDIR)/ + $(COPY_FILE) --parents main.cpp widget.cpp camera.cpp thread.cpp parameter.cpp $(DISTDIR)/ + $(COPY_FILE) --parents widget.ui $(DISTDIR)/ + + +clean: compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) .qmake.stash + -$(DEL_FILE) Makefile + + +####### Sub-libraries + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +benchmark: first + +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_predefs_make_all: moc_predefs.h +compiler_moc_predefs_clean: + -$(DEL_FILE) moc_predefs.h +moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp + g++ -pipe -O2 -Wall -W -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp + +compiler_moc_header_make_all: moc_widget.cpp moc_camera.cpp moc_thread.cpp +compiler_moc_header_clean: + -$(DEL_FILE) moc_widget.cpp moc_camera.cpp moc_thread.cpp +moc_widget.cpp: thread.h \ + camera.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDevice.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvLinkLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvResult.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBaseLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfo.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterArray.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenICamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterList.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenApi.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenInteger.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnum.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnumEntry.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenFloat.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCommand.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenBoolean.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenRegister.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCategory.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStream.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBuffer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBufferLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPayloadType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImage.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPixelType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartContainer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartSection.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvChunkData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImageJPEG.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvRawData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvH264AccessUnit.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystem.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvNetworkAdapter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvInterface.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoPleoraProtocol.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvUSBHostController.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoUSB.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoU3V.h \ + parameter.h \ + widget.h \ + moc_predefs.h \ + /usr/lib/qt5/bin/moc + /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/dt/tobacco_huaian/aaaaa/2022.8.21/2022.8.20/tobacco_v1_0 -I/opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include -I/usr/include/opencv2 -I/home/dt/下载/libmodbus-3.1.6/install/include/modbus -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include widget.h -o moc_widget.cpp + +moc_camera.cpp: /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDevice.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvLinkLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvResult.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBaseLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfo.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterArray.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenICamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterList.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenApi.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenInteger.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnum.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnumEntry.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenFloat.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCommand.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenBoolean.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenRegister.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCategory.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStream.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBuffer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBufferLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPayloadType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImage.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPixelType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartContainer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartSection.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvChunkData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImageJPEG.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvRawData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvH264AccessUnit.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystem.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvNetworkAdapter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvInterface.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoPleoraProtocol.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvUSBHostController.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoUSB.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoU3V.h \ + camera.h \ + moc_predefs.h \ + /usr/lib/qt5/bin/moc + /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/dt/tobacco_huaian/aaaaa/2022.8.21/2022.8.20/tobacco_v1_0 -I/opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include -I/usr/include/opencv2 -I/home/dt/下载/libmodbus-3.1.6/install/include/modbus -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include camera.h -o moc_camera.cpp + +moc_thread.cpp: camera.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDevice.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvLinkLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvResult.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBaseLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfo.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterArray.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenICamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterList.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenApi.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenInteger.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnum.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnumEntry.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenFloat.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCommand.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenBoolean.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenRegister.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCategory.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStream.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBuffer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBufferLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPayloadType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImage.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPixelType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartContainer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartSection.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvChunkData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImageJPEG.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvRawData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvH264AccessUnit.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystem.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvNetworkAdapter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvInterface.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoPleoraProtocol.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvUSBHostController.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoUSB.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoU3V.h \ + thread.h \ + moc_predefs.h \ + /usr/lib/qt5/bin/moc + /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/dt/tobacco_huaian/aaaaa/2022.8.21/2022.8.20/tobacco_v1_0 -I/opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include -I/usr/include/opencv2 -I/home/dt/下载/libmodbus-3.1.6/install/include/modbus -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include thread.h -o moc_thread.cpp + +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: ui_widget.h +compiler_uic_clean: + -$(DEL_FILE) ui_widget.h +ui_widget.h: widget.ui \ + /usr/lib/qt5/bin/uic + /usr/lib/qt5/bin/uic widget.ui -o ui_widget.h + +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_uic_clean + +####### Compile + +main.o: main.cpp widget.h \ + thread.h \ + camera.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDevice.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvLinkLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvResult.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBaseLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfo.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterArray.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenICamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterList.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenApi.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenInteger.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnum.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnumEntry.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenFloat.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCommand.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenBoolean.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenRegister.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCategory.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStream.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBuffer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBufferLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPayloadType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImage.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPixelType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartContainer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartSection.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvChunkData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImageJPEG.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvRawData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvH264AccessUnit.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystem.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvNetworkAdapter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvInterface.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoPleoraProtocol.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvUSBHostController.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoUSB.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoU3V.h \ + parameter.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp + +widget.o: widget.cpp widget.h \ + thread.h \ + camera.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDevice.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvLinkLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvResult.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBaseLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfo.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterArray.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenICamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterList.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenApi.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenInteger.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnum.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnumEntry.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenFloat.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCommand.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenBoolean.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenRegister.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCategory.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStream.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBuffer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBufferLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPayloadType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImage.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPixelType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartContainer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartSection.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvChunkData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImageJPEG.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvRawData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvH264AccessUnit.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystem.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvNetworkAdapter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvInterface.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoPleoraProtocol.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvUSBHostController.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoUSB.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoU3V.h \ + parameter.h \ + ui_widget.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o widget.o widget.cpp + +camera.o: camera.cpp camera.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDevice.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvLinkLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvResult.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBaseLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfo.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterArray.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenICamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterList.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenApi.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenInteger.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnum.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnumEntry.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenFloat.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCommand.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenBoolean.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenRegister.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCategory.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStream.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBuffer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBufferLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPayloadType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImage.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPixelType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartContainer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartSection.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvChunkData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImageJPEG.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvRawData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvH264AccessUnit.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystem.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvNetworkAdapter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvInterface.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoPleoraProtocol.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvUSBHostController.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoUSB.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoU3V.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o camera.o camera.cpp + +thread.o: thread.cpp thread.h \ + camera.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDevice.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvLinkLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvResult.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBaseLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfo.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterArray.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenICamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterList.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenApi.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenInteger.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnum.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnumEntry.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenFloat.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCommand.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenBoolean.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenRegister.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCategory.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStream.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBuffer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBufferLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPayloadType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImage.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPixelType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartContainer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartSection.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvChunkData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImageJPEG.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvRawData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvH264AccessUnit.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystem.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvNetworkAdapter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvInterface.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoPleoraProtocol.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvUSBHostController.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoUSB.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoU3V.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o thread.o thread.cpp + +parameter.o: parameter.cpp parameter.h \ + camera.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDevice.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvLinkLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvResult.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBaseLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfo.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterArray.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenICamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenString.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenParameterList.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenTypes.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenApi.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenInteger.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnum.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenEnumEntry.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenFloat.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCommand.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenBoolean.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenRegister.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvGenCategory.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEnums.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStream.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBuffer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvBufferLib.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPayloadType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImage.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvPixelType.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartContainer.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvMultiPartSection.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvChunkData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvImageJPEG.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvRawData.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvH264AccessUnit.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvStreamGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystem.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvSystemEventSink.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvNetworkAdapter.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvInterface.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoGEV.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoPleoraProtocol.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvUSBHostController.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoUSB.h \ + /opt/pleora/ebus_sdk/Ubuntu-18.04-x86_64/include/PvDeviceInfoU3V.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o parameter.o parameter.cpp + +moc_widget.o: moc_widget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_widget.o moc_widget.cpp + +moc_camera.o: moc_camera.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_camera.o moc_camera.cpp + +moc_thread.o: moc_thread.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_thread.o moc_thread.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/black b/black new file mode 100644 index 0000000..29faf47 Binary files /dev/null and b/black differ diff --git a/camera.cpp b/camera.cpp new file mode 100644 index 0000000..49acc0a --- /dev/null +++ b/camera.cpp @@ -0,0 +1,1173 @@ +/** + * @file camera.cpp + * @author DingKun & ChengLei + * @date 2022.3.8 + * @brief The file contains detailed implementation of class Camera + * @details + *
The file contains detailed implementation of class Camera. + * Such as initialize camera, enum camera, start capture, callback function, etc. + * which refers to the hyperspectral camera(FX10e).+ */ + +#include "camera.h" +#include "unistd.h" + +float file_explosure; +vector
Steps to initialize the hyperspectral camera:
+ * 1. Enumerate and connect to the camera
+ * 2. Configure the camera parameters
+ * 3. Creates stream object
+ * 4. Configure stream for GigE Vision devices
+ * 5. Create stream buffers
+ * 6. Map the GenICam AcquisitionStart and AcquisitionStop commands
+ * 7. New object capture_thread
+ * 8. Allocate memory for every buffers
+ */
+int Camera::init_camera()
+{
+ // 1.Enumerate the camera
+ int status = enum_connect_camera();
+ if(status != 0)
+ return -1;
+
+ // 2.Configure the camera parameters
+ status = config_camera();
+ if(status != 0)
+ return -2;
+
+// get_camera_parameters();
+
+ // 3.Creates stream object
+ status = open_stream();
+ if(status != 0)
+ return -3;
+
+ // 4.Configure stream for GigE Vision devices
+ status = configure_stream();
+ if(status != 0)
+ return -4;
+
+ // 5.Create stream buffers
+ create_stream_buffers();
+
+ // Get device parameters need to control streaming
+ PvGenParameterArray *lDeviceParams = lDevice->GetParameters();
+
+ // 6.Map the GenICam AcquisitionStart and AcquisitionStop commands
+ lStart = dynamic_cast( lDeviceParams->Get( "AcquisitionStart" ) );
+ lStop = dynamic_cast( lDeviceParams->Get( "AcquisitionStop" ) );
+
+ // 7.New object capture_thread
+ capture_thread = new CaptureThread();
+
+ //获取波段数
+ PvGenInteger* lheight = parameter_array->GetInteger("Height");
+
+ lheight->GetValue(m_height);
+
+ single_frame_size = SPEC_WIDTH * m_height;
+ multi_frame_size = single_frame_size * SPEC_HEIGHT;
+
+ // 8.Allocate memory for every buffers
+ white_buf = new float[single_frame_size];
+ black_buf = new float[single_frame_size];
+
+ send_buf = new float[multi_frame_size];
+ send_temp_buf = new float[multi_frame_size];
+ send_valid_buf = new float[SPEC_WIDTH * valid.size() * SPEC_HEIGHT]; //此处m_height要改成valid
+
+ sum_mat_for_calibration = cv::Mat(m_height, SPEC_WIDTH, CV_32F, cv::Scalar(0));
+ eps = cv::Mat(m_height, SPEC_WIDTH, CV_32F, cv::Scalar(0.00000001)); ///GetDeviceCount();
+
+ for ( uint32_t y = 0; y < lDeviceCount ; y++ )
+ {
+ lDeviceInfo = lSystem.GetInterface(x)->GetDeviceInfo( y );
+
+ cout << " Display ID: " << lDeviceInfo->GetDisplayID().GetAscii() << endl;
+
+ const PvDeviceInfoGEV* lDeviceInfoGEV = dynamic_cast( lDeviceInfo );
+
+ if ( lDeviceInfoGEV != nullptr ) // Is it a GigE Vision device?
+ {
+// cout << " MAC Address: " << lDeviceInfoGEV->GetMACAddress().GetAscii() << endl;
+// cout << " IP Address: " << lDeviceInfoGEV->GetIPAddress().GetAscii() << endl;
+// cout << " Serial number: " << lDeviceInfoGEV->GetSerialNumber().GetAscii() << endl << endl;
+ if(!strcmp("70:f8:e7:b0:07:c4", lDeviceInfoGEV->GetMACAddress().GetAscii()))
+ {
+ lResult = PvDeviceGEV::SetIPConfiguration("70:f8:e7:b0:07:c4", "192.168.123.3", "255.255.255.0", "192.168.123.1");
+ while( !lResult.IsOK() ){
+// cout << "set ip again" << endl;
+ lResult = PvDeviceGEV::SetIPConfiguration("70:f8:e7:b0:07:c4", "192.168.123.3", "255.255.255.0", "192.168.123.1");
+ }
+ cout << "set ip success" << endl;
+
+ lDeviceInfo = lSystem.GetInterface(x)->GetDeviceInfo(y);
+ lLastDeviceInfo = lDeviceInfo;
+ break;
+ }
+ else
+ {
+// cout << "not this!" << endl;
+ continue;
+ }
+ }
+ }
+ }
+
+ // Connect to the last device found
+ if ( lLastDeviceInfo != nullptr )
+ {
+ // Creates and connects the device controller based on the selected device.
+ lDevice = PvDevice::CreateAndConnect( lLastDeviceInfo, &lResult );
+ if ( !lResult.IsOK() )
+ {
+ cout << "*** Unable to connect to " << lLastDeviceInfo->GetDisplayID().GetAscii() << endl;
+ if(lDevice != nullptr){
+ PvDevice::Free(lDevice);
+ lDevice = nullptr;
+ }
+ lLastDeviceInfo = nullptr;
+ return -1;
+ }
+ else
+ {
+ cout << ">>> Successfully connected to " << lLastDeviceInfo->GetDisplayID().GetAscii() << endl;
+ cout << endl;
+ // Load parameters of the camera
+ parameter_array = lDevice->GetParameters();
+
+ return 0;
+ }
+ }
+ else
+ {
+ cout << "*** No device found! ***" << endl;
+ return -2;
+ }
+}
+
+int Camera::open_stream()
+{
+ PvResult lResult;
+ // Open stream to the GigE Vision or USB3 Vision device
+// cout << ">>> Opening stream to device." << endl;
+ lStream = PvStream::CreateAndOpen( lLastDeviceInfo->GetConnectionID(), &lResult);
+ if ( (lStream == nullptr) || !lResult.IsOK() )
+ {
+ cout << "*** Unable to stream from " << lLastDeviceInfo->GetDisplayID().GetAscii() << ". ***" << endl;
+ PvStream::Free(lStream);
+ PvDevice::Free(lDevice);
+ return -1;
+ }
+ return 0;
+}
+
+int Camera::configure_stream()
+{
+ // If this is a GigE Vision device, configure GigE Vision specific streaming parameters
+ PvDeviceGEV* lDeviceGEV = dynamic_cast( lDevice );
+ if ( lDeviceGEV != nullptr )
+ {
+ PvStreamGEV *lStreamGEV = static_cast( lStream );
+ // Negotiate packet size
+ lDeviceGEV->NegotiatePacketSize();
+ // Configure device streaming destination
+ lDeviceGEV->SetStreamDestination( lStreamGEV->GetLocalIPAddress(), lStreamGEV->GetLocalPort() );
+// cout << ">>> configure stream successfully!" << endl;
+ return 0;
+ }
+ else
+ {
+ cout << "*** configure stream failed! ***" << endl;
+ return -1;
+ }
+}
+
+void Camera::create_stream_buffers()
+{
+ // Reading payload size from device
+ uint32_t lSize = lDevice->GetPayloadSize();
+
+ // Use BUFFER_COUNT or the maximum number of buffers, whichever is smaller
+ uint32_t lBufferCount = ( lStream->GetQueuedBufferMaximum() < BUFFER_COUNT ) ? lStream->GetQueuedBufferMaximum() : BUFFER_COUNT;
+ // Allocate buffers
+ for( uint32_t i=0; iAlloc( static_cast( lSize ) );
+
+ // Add to external list - used to eventually release the buffers
+ lbufferlist.push_back(lBuffer);
+ }
+// cout << ">>> create stream buffers successfully" << endl;
+}
+
+void Camera::free_stream_buffers()
+{
+ bufferlist::iterator iter = lbufferlist.begin();
+ while( iter != lbufferlist.end() )
+ {
+ delete *iter;
+ iter++;
+ }
+ // Clear the buffer list
+ lbufferlist.clear();
+}
+
+
+void Camera::set_MROI(const vector &vec)
+{
+ bool mroi_status = false;
+ parameter_array->SetBooleanValue("MROI_Enable", mroi_status);
+
+ int n = vec.size() / 2;
+
+ parameter_array->SetIntegerValue("MROI_Index", n);
+ parameter_array->SetIntegerValue("MROI_Y", 1081);
+ parameter_array->SetIntegerValue("MROI_H", 0);
+
+ //{100, 5, 300, 5}
+ for( int i=0, j=0; iSetIntegerValue("MROI_Index", i);
+ parameter_array->SetIntegerValue("MROI_Y", vec[j]);
+ parameter_array->SetIntegerValue("MROI_H", vec[j+1]);
+ }
+
+
+ mroi_status = true;
+ parameter_array->SetBooleanValue("MROI_Enable", mroi_status);
+
+}
+
+int Camera::config_camera()
+{
+ PvResult lResult;
+ //实际测试发现,快men有时无法自动打开,需要使用以下代码人为打开
+ lResult = parameter_array->SetIntegerValue("MotorShutter_PulseFwd", 100);
+ ::sleep(1);
+ lResult = parameter_array->SetIntegerValue("MotorShutter_PulseRev", 100);
+ ::sleep(1);
+ lResult = parameter_array->SetIntegerValue("MotorShutter_PulseFwd", 200);
+ ::sleep(1);
+ lResult = parameter_array->SetIntegerValue("MotorShutter_PulseRev", 200);
+
+ //设置触发模式为 外触发,线路Line0,上升沿触发
+ lResult = parameter_array->SetEnumValue("TriggerMode", "On");
+ lResult = parameter_array->SetEnumValue("TriggerSource", "Line0");
+
+
+ //Set BinningVertical
+ lResult = parameter_array->SetIntegerValue("BinningVertical", 1);
+ if ( !lResult.IsOK() )
+ {
+ cout << "*** Unable to set *** " << endl;
+ return -1;
+ }
+
+ //设置数据格式为12位
+ lResult = parameter_array->SetEnumValue("PixelFormat", "Mono12");
+ if ( !lResult.IsOK() )
+ {
+ cout << "*** Unable to set *** " << endl;
+ return -1;
+ }
+
+ //Set gain
+ lResult = parameter_array->SetFloatValue("Gain", m_gain);
+ if ( !lResult.IsOK() )
+ {
+ cout << "*** Unable to set *** " << endl;
+ return -1;
+ }
+
+ //Set MROI
+ set_MROI(mroi);
+
+ //Set ExposureTime
+ lResult = parameter_array->SetFloatValue("ExposureTime", file_explosure);
+ if ( !lResult.IsOK() )
+ {
+ cout << "*** Unable to set *** " << endl;
+ return -1;
+ }
+ return 0;
+}
+
+
+void Camera::get_camera_parameters()
+{
+ PvResult lResult;
+
+ //Get BinningVertical
+ PvGenInteger* lbinningvertical = parameter_array->GetInteger("BinningVertical");
+ int64_t binning = 0;
+ lResult = lbinningvertical->GetValue(binning);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout <<">>> BinningVertical: " << binning << endl;
+
+ //Get Gain
+ PvGenFloat* lgain = parameter_array->GetFloat("Gain");
+ double gain = 0.0f;
+ lResult = lgain->GetValue(gain);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout <<">>> Gain: " << gain << endl;
+
+ //Get Height
+ PvGenInteger* lheight = parameter_array->GetInteger("Height");
+ int64_t height = 0;
+ lResult = lheight->GetValue(height);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout <<">>> Height: " << height << endl;
+
+ //Get Width
+ PvGenInteger* lwidth = parameter_array->GetInteger("Width");
+ int64_t width = 0;
+ lResult = lwidth->GetValue(width);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout <<">>> Width: " << width << endl;
+
+ //Get AcquisitionFrameRate
+ PvGenFloat* lframerate = parameter_array->GetFloat("AcquisitionFrameRate");
+ double framerate = 0.0f;
+ lResult = lframerate->GetValue(framerate);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout <<">>> AcquisitionFrameRate: " << framerate << endl;
+
+ //Get ExposureTime
+ PvGenFloat* lexposuretime = parameter_array->GetFloat("ExposureTime");
+ double exposuretime = 0.0f;
+ lResult = lexposuretime->GetValue(exposuretime);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout << ">>> ExposureTime: " << exposuretime << endl;
+
+ //查看触发模式
+ PvString mode;
+ PvGenEnum* ltriggermode = parameter_array->GetEnum("TriggerMode");
+ ltriggermode->GetValue(mode);
+ cout << ">>> TriggerMode: " << mode.GetAscii() << endl;
+ ltriggermode = parameter_array->GetEnum("TriggerSource");
+ ltriggermode->GetValue(mode);
+ cout << ">>> TriggerSource: " << mode.GetAscii() << endl;
+ cout << endl;
+}
+
+void Camera::start_acquisition()
+{
+ // Queue all buffers in the stream
+ bufferlist::iterator iter = lbufferlist.begin();
+ while( iter != lbufferlist.end() )
+ {
+ lStream->QueueBuffer(*iter);
+ iter++;
+ }
+ cout << "queue buffer successfully..." << endl;
+
+ // Enable streaming and send the AcquisitionStart command
+// cout << "Enabling streaming and sending AcquisitionStart command." << endl;
+ lDevice->StreamEnable();
+ lStart->Execute();
+
+ // start a new thread CaptureThread
+ capture_thread->stop_mutex.lock();
+ capture_thread->m_stop = false;
+ capture_thread->stop_mutex.unlock();
+ capture_thread->start();
+}
+
+void Camera::stop_acquisition()
+{
+ //线程停止!
+ capture_thread->exit_thread();
+ capture_thread->wait();
+ if(capture_thread->isFinished())
+ {
+ cout << ">>> capture thread stopped successfully" << endl;
+ }
+}
+
+ void Camera::register_callback_calibration()
+ {
+ register_data_callback(onDataCallback_calibration);
+ }
+
+ void Camera::register_callback_acquisition()
+ {
+ register_data_callback(onDataCallback_acquisition);
+ }
+
+ int Camera::init_calibration_load()
+ {
+ FILE* fp = fopen("./white", "rb");
+ fread(white_buf, 4, single_frame_size, fp);
+ fclose(fp);
+ fp = fopen("./black", "rb");
+ fread(black_buf, 4, single_frame_size, fp);
+ fclose(fp);
+ white_mat = cv::Mat(m_height, SPEC_WIDTH, CV_32F, white_buf);
+ black_mat = cv::Mat(m_height, SPEC_WIDTH, CV_32F, black_buf);
+
+ cout << ">>> load calibration init success! >>> " << endl;
+// emit camera->send_calibration_finished_message();
+ return 0;
+ }
+
+ void Camera::load_calibration()
+ {
+ cout << ">>> loading calibration file......" << endl;
+ FILE* fp = fopen("./white", "rb");
+ fread(white_buf, 4, single_frame_size, fp);
+ fclose(fp);
+ cout << ">>> white file loaded successfully! >>>" << endl;
+
+ fp = fopen("./black", "rb");
+ fread(black_buf, 4, single_frame_size, fp);
+ fclose(fp);
+ cout << ">>> black file loaded successfully! >>>" << endl;
+
+ white_mat = cv::Mat(m_height, SPEC_WIDTH, CV_32F, white_buf);
+ black_mat = cv::Mat(m_height, SPEC_WIDTH, CV_32F, black_buf);
+
+ cout << ">>> load calibration finished! >>> " << endl;
+ emit camera->send_calibration_finished_message();
+ }
+
+
+//definition of calibration callback function 校正回调函数
+static uint16_t calibration_frame_count = 0;
+int onDataCallback_calibration(uint8_t *buffer, uint64_t frame_size, uint64_t frame_number)
+{
+ //采集黑白帧
+ cout << ">>> acquisition number: " << calibration_frame_count << endl;
+ if( camera->capture_black_flag || camera->capture_white_flag )
+ {
+ if( calibration_frame_count != CALIBRATION_FRAMES )
+ {
+ cv::Mat temp = cv::Mat(camera->m_height, SPEC_WIDTH, CV_16U, buffer);
+ temp.convertTo(temp, CV_32F);
+ camera->sum_mat_for_calibration += temp;
+ calibration_frame_count++;
+ return 0;
+ }
+ else
+ {
+ camera->stop_acquisition();
+ if( camera->capture_black_flag )
+ {
+ camera->capture_black_flag = false;
+ camera->black_mat = camera->sum_mat_for_calibration / CALIBRATION_FRAMES;
+ FILE* fp = fopen("./black", "wb");
+ fwrite(camera->black_mat.data, camera->m_height*SPEC_WIDTH*4, 1, fp);
+ fclose(fp);
+ cout << ">>> black frame acquisition OK! >>>" << endl;
+ camera->sum_mat_for_calibration = cv::Mat(camera->m_height, SPEC_WIDTH, CV_32F, cv::Scalar(0)); //clear sum mat
+ }
+ else if( camera->capture_white_flag )
+ {
+ camera->capture_white_flag = false;
+ camera->white_mat = camera->sum_mat_for_calibration / CALIBRATION_FRAMES;
+ FILE* fp = fopen("./white", "wb");
+ fwrite(camera->white_mat.data, camera->m_height*SPEC_WIDTH*4, 1, fp);
+ fclose(fp);
+ cout << ">>> white frame acquisition OK! >>>" << endl;
+ camera->sum_mat_for_calibration = cv::Mat(camera->m_height, SPEC_WIDTH, CV_32F, cv::Scalar(0)); //clear sum mat
+ }
+ calibration_frame_count = 0;
+ camera->unregister_data_callback();
+ return 0;
+ }
+ }
+ return 0;
+}
+
+//definition of acquisition callback function 采集回调函数
+static uint16_t send_show_frame_count = 0;
+/**
+ * @brief Acquisition callback function
+ * @param buffer
+ * @param frame_size
+ * @param frame_number
+ * @return
+ * @details splice 256 buffers into a whole image,
+ */
+int onDataCallback_acquisition(uint8_t *buffer, uint64_t frame_size, uint64_t frame_number)
+{
+// if(frame_number % REALHEIGHT == 0)
+// cout << ">>> " << frame_number << endl;
+
+ memcpy(channel_r + send_show_frame_count * SPEC_WIDTH * 2, buffer+2048 * R, SPEC_WIDTH * 2);
+ memcpy(channel_g + send_show_frame_count * SPEC_WIDTH * 2, buffer+2048 * G, SPEC_WIDTH * 2);
+ memcpy(channel_b + send_show_frame_count * SPEC_WIDTH * 2, buffer+2048 * B, SPEC_WIDTH * 2);
+
+// 校正后图片拼接
+ cv::Mat img = cv::Mat(camera->m_height, SPEC_WIDTH, CV_16U, buffer);
+ img.convertTo(img, CV_32F);
+
+// if(frame_size == 88)
+// {
+// img = camera->black_mat;
+// }
+// calibrate operation 校正操作
+ cv::Mat calibrated_img = (img - camera->black_mat) / (camera->white_mat - camera->black_mat + camera->eps);
+
+ memcpy( (send_temp_buf + send_show_frame_count * camera->single_frame_size), calibrated_img.data, camera->single_frame_size * 4);
+
+ send_show_frame_count++;
+
+ if( send_show_frame_count == SPEC_HEIGHT )
+ {
+ send_show_frame_count = 0;
+
+ channel_rgb.emplace_back(cv::Mat(SPEC_HEIGHT, SPEC_WIDTH, CV_16UC1, channel_r));
+ channel_rgb.emplace_back(cv::Mat(SPEC_HEIGHT, SPEC_WIDTH, CV_16UC1, channel_g));
+ channel_rgb.emplace_back(cv::Mat(SPEC_HEIGHT, SPEC_WIDTH, CV_16UC1, channel_b));
+
+ cv::Mat temp;
+ cv::merge(channel_rgb, temp);
+ memcpy(temp_rgb, temp.data, SPEC_HEIGHT * SPEC_WIDTH * 6);
+ channel_rgb.clear();
+
+ memcpy(send_buf, send_temp_buf, camera->multi_frame_size * 4);
+
+ //release semaphore
+ ready_to_send.release();
+
+ //emit to ui
+ camera->send_data_to_ui(temp_rgb);
+ }
+ return 0;
+}
+
+/*----------CaptureThread 采集线程----------*/
+ CaptureThread::CaptureThread(QObject *parent) : QThread(parent), m_stop(false)
+ {}
+
+ void CaptureThread::run()
+ {
+ /*----将线程绑定至8号cpu,提高线程效率----*/
+ cpu_set_t get;
+ cpu_set_t mask;
+ int num = sysconf(_SC_NPROCESSORS_CONF);
+// pthread_t thread_id = pthread_self();
+// cout << thread_id << endl;
+ CPU_ZERO(&mask);
+ CPU_SET(0, &mask);
+ sched_setaffinity(0, sizeof(mask), &mask);
+ CPU_ZERO(&get);
+ sched_getaffinity(0, sizeof(get), &get);
+ for(int i=0; ilStop->Execute();
+
+ // Disable streaming on the device
+ camera->lDevice->StreamDisable();
+
+ // Abort all buffers from the stream and dequeue
+ camera->lStream->AbortQueuedBuffers();
+
+ // Retrieve the buffers left in stream
+ while ( camera->lStream->GetQueuedBufferCount() > 0 )
+ {
+ PvBuffer *lBuffer = nullptr;
+ PvResult lOperationResult;
+ camera->lStream->RetrieveBuffer( &lBuffer, &lOperationResult, 1000 );
+ }
+ return;
+ }
+ stop_mutex.unlock();
+ PvBuffer *lBuffer = nullptr;
+ PvResult lOperationResult;
+
+ // Retrieve next buffer
+ PvResult lResult = camera->lStream->RetrieveBuffer( &lBuffer, &lOperationResult, 1000 );
+ if ( lResult.IsOK() )
+ {
+ if ( lOperationResult.IsOK() )
+ {
+ // We now have a valid buffer. This is where you would typically process the buffer.
+ // Get image data
+// uint64_t frame_size = camera->lDevice->GetPayloadSize();
+ uint8_t* image = lBuffer->GetDataPointer();
+
+ //callback function
+ camera->data_callback(image, 0, lBuffer->GetBlockID());
+ }
+ else
+ {
+// camera->data_callback(camera->padding_frame, 88, 0);
+// cout << "spec error: "<< lOperationResult.GetCodeString().GetAscii() << endl; // Non OK operational result
+
+ }
+
+ // Re-queue the buffer in the stream object
+ camera->lStream->QueueBuffer( lBuffer );
+ }
+// else
+// cout << "*** spec Retrieve buffer failurer: " << lResult.GetCodeString().GetAscii() << endl; // Retrieve buffer failure
+ }
+ }
+
+ void CaptureThread::exit_thread()
+ {
+ stop_mutex.lock();
+ m_stop = true;
+ stop_mutex.unlock();
+ }
+
+ /*-------------RGB_CAMERA---------------------*/
+ RGB_Camera::RGB_Camera(QObject *parent) : QObject(parent)
+ {
+ }
+
+ RGB_Camera::~RGB_Camera()
+ {
+ free_stream_buffers();
+
+ if( lStream != nullptr )
+ {
+ lStream->Close();
+ PvStream::Free(lStream);
+ cout << ">>> rgb_camera: close and free lstream >>>" << endl;
+ }
+
+ if( lDevice != nullptr )
+ {
+ lDevice->Disconnect();
+ PvDevice::Free(lDevice);
+ cout << ">>> rgb_camera: disconnect and free camera device >>>" << endl;
+ }
+
+ if( rgb_capture_thread != nullptr)
+ delete rgb_capture_thread;
+
+
+ cout << "rgb_camera: dkkkkkkkkkkkkkkk" << endl;
+ }
+
+ int RGB_Camera::init_camera()
+ {
+ int status = enum_connect_camera();
+ if(status != 0)
+ return -1;
+
+ status = config_camera();
+ if(status != 0)
+ return -2;
+
+// get_camera_parameters();
+
+ status = open_stream();
+ if(status != 0)
+ return -3;
+
+ status = configure_stream();
+ if(status != 0)
+ return -4;
+
+ create_stream_buffers();
+
+ rgb_capture_thread = new RGB_CaptureThread();
+
+ send_rgb_buf = new uint8_t[RGB_HEIGHT * RGB_WIDTH * 3];
+
+ return 0;
+ }
+
+ int RGB_Camera::enum_connect_camera()
+ {
+ PvResult lResult;
+ lResult = lSystem.Find();
+ if ( !lResult.IsOK() )
+ {
+ cout << "*** PvSystem::Find Error: " << lResult.GetCodeString().GetAscii();
+ return -1;
+ }
+ uint32_t lInterfaceCount = lSystem.GetInterfaceCount();
+ for ( uint32_t x = 0; x < lInterfaceCount; x++ )
+ {
+ if(lLastDeviceInfo != nullptr)
+ break;
+ uint32_t lDeviceCount = lSystem.GetInterface(x)->GetDeviceCount();
+ for ( uint32_t y = 0; y < lDeviceCount ; y++ )
+ {
+ lDeviceInfo = lSystem.GetInterface(x)->GetDeviceInfo( y );
+
+ const PvDeviceInfoGEV* lDeviceInfoGEV = dynamic_cast( lDeviceInfo );
+ if ( lDeviceInfoGEV != nullptr ) // Is it a GigE Vision device?
+ {
+// cout << " MAC Address: " << lDeviceInfoGEV->GetMACAddress().GetAscii() << endl;
+// cout << " IP Address: " << lDeviceInfoGEV->GetIPAddress().GetAscii() << endl;
+// cout << " Serial number: " << lDeviceInfoGEV->GetSerialNumber().GetAscii() << endl << endl;
+ // lLastDeviceInfo = lDeviceInfo;
+ if(!strcmp("00:26:ac:a1:00:9d", lDeviceInfoGEV->GetMACAddress().GetAscii()))
+ {
+ PvDeviceGEV::SetIPConfiguration("00:26:ac:a1:00:9d", "192.168.15.105", "255.255.255.0", "192.168.15.1");
+ lLastDeviceInfo = lDeviceInfo;
+ break;
+ }
+ else
+ {
+// cout << "rgb: not this!" << endl;
+ continue;
+ }
+ }
+ }
+ }
+
+ // Connect to the last device found
+ if ( lLastDeviceInfo != nullptr )
+ {
+ cout << ">>> Connecting to " << lLastDeviceInfo->GetDisplayID().GetAscii() << endl;
+
+ // Creates and connects the device controller based on the selected device.
+ lDevice = PvDevice::CreateAndConnect( lLastDeviceInfo, &lResult );
+ if ( !lResult.IsOK() )
+ {
+ cout << "*** Unable to connect to " << lLastDeviceInfo->GetDisplayID().GetAscii() << endl;
+ PvDevice::Free(lDevice);
+ return -1;
+ }
+ else
+ {
+ cout << ">>> Successfully connected to " << lLastDeviceInfo->GetDisplayID().GetAscii() << endl;
+ cout << endl;
+ // Load parameters of the camera
+ parameter_array = lDevice->GetParameters();
+ return 0;
+ }
+ }
+ else
+ {
+ cout << "*** No device found! ***" << endl;
+ return -2;
+ }
+ }
+
+ void RGB_Camera::get_camera_parameters()
+ {
+ PvResult lResult;
+
+ //Get Height
+ PvGenInteger* lheight = parameter_array->GetInteger("SensorHeight");
+ int64_t height = 0;
+ lResult = lheight->GetValue(height);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout <<">>> Height: " << height << endl;
+
+ //Get Width
+ PvGenInteger* lwidth = parameter_array->GetInteger("SensorWidth");
+ int64_t width = 0;
+ lResult = lwidth->GetValue(width);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout <<">>> Width: " << width << endl;
+
+ //Get AcquisitionFrameRate
+ PvGenFloat* lframerate = parameter_array->GetFloat("AcquisitionLineRate");
+ double framerate = 0.0f;
+ lResult = lframerate->GetValue(framerate);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout <<">>> AcquisitionLineRate: " << framerate << endl;
+
+ //Get ExposureTime
+ PvGenFloat* lexposuretime = parameter_array->GetFloat("CommonExposureTime");
+ double exposuretime = 0.0f;
+ lResult = lexposuretime->GetValue(exposuretime);
+ if( !lResult.IsOK() )
+ cout << "*** Unable to get *** " << endl;
+ else
+ cout << ">>> ExposureTime: " << exposuretime << endl;
+
+ //查看触发模式
+ PvString mode;
+ PvGenEnum* ltriggermode = parameter_array->GetEnum("LineTriggerMode");
+ ltriggermode->GetValue(mode);
+ cout << ">>> TriggerMode: " << mode.GetAscii() << endl;
+ ltriggermode = parameter_array->GetEnum("LineTriggerSource");
+ ltriggermode->GetValue(mode);
+ cout << ">>> TriggerSource: " << mode.GetAscii() << endl;
+ cout << endl;
+ }
+
+ int RGB_Camera::open_stream()
+ {
+ PvResult lResult;
+ // Open stream to the GigE Vision or USB3 Vision device
+ lStream = PvStream::CreateAndOpen( lLastDeviceInfo->GetConnectionID(), &lResult);
+ if ( (lStream == nullptr) || !lResult.IsOK() )
+ {
+ cout << "*** Unable to stream from " << lLastDeviceInfo->GetDisplayID().GetAscii() << ". ***" << endl;
+ PvStream::Free(lStream);
+ PvDevice::Free(lDevice);
+ return -1;
+ }
+ return 0;
+ }
+
+ int RGB_Camera::config_camera()
+ {
+ PvGenParameterArray *lDeviceParams = lDevice->GetParameters();
+ lStart = dynamic_cast( lDeviceParams->Get( "AcquisitionStart" ) );
+ lStop = dynamic_cast( lDeviceParams->Get( "AcquisitionStop" ) );
+ lUserSetLoad = dynamic_cast( lDeviceParams->Get( "UserSetLoad" ) );
+ Whitecal = dynamic_cast( lDeviceParams->Get( "FFCCalPRNU" ) );
+ Blackcal = dynamic_cast( lDeviceParams->Get( "FFCCalFPN" ) );
+ lUserSave = dynamic_cast( lDeviceParams->Get( "UserSetSave" ) );
+ lFFCUserSetSave = dynamic_cast( lDeviceParams->Get( "FFCUserSetSave" ) );
+
+ PvResult lResult = parameter_array->SetEnumValue("UserSetSelector", "UserSet3");
+ if(!lResult.IsOK()){
+ cout << "set userset3 failed" << endl;
+ return -1;
+ }
+ lResult = lUserSetLoad->Execute();
+ if(!lResult.IsOK()){
+ cout << "userset load failed" << endl;
+ return -1;
+ }
+
+ // //设置触发模式为 外触发,线路Line0,上升沿触发
+ lResult = parameter_array->SetEnumValue("LineTriggerMode", "On");
+ if(!lResult.IsOK()){
+ cout << "set triggermode failed" << endl;
+ return -1;
+ }
+
+ lResult = parameter_array->SetEnumValue("LineTriggerSource", "Line2");
+ if(!lResult.IsOK()){
+ cout << "set triggersource failed" << endl;
+ return -1;
+ }
+
+ return 0;
+ }
+
+ int RGB_Camera::configure_stream()
+ {
+ // If this is a GigE Vision device, configure GigE Vision specific streaming parameters
+ PvDeviceGEV* lDeviceGEV = dynamic_cast( lDevice );
+ if ( lDeviceGEV != nullptr )
+ {
+ PvStreamGEV *lStreamGEV = static_cast( lStream );
+ // Negotiate packet size
+ PvResult lresult = lDeviceGEV->NegotiatePacketSize();
+ if( !lresult.IsOK() )
+ cout << "negotiate packet size failed" << endl;
+ // Configure device streaming destination
+ lresult = lDeviceGEV->SetStreamDestination( lStreamGEV->GetLocalIPAddress(), lStreamGEV->GetLocalPort() );
+ if( !lresult.IsOK() )
+ cout << "set stream destination failed" << endl;
+ // cout << ">>> configure stream successfully!" << endl;
+ return 0;
+ }
+ else
+ {
+ cout << "*** configure stream failed! ***" << endl;
+ return -1;
+ }
+ }
+
+ void RGB_Camera::create_stream_buffers()
+ {
+ // Reading payload size from device
+ uint32_t lSize = lDevice->GetPayloadSize();
+// cout << "payloadsize = " << lSize << endl;
+ // cout << lStream->GetQueuedBufferMaximum() << endl;
+
+ // Use BUFFER_COUNT or the maximum number of buffers, whichever is smaller
+ uint32_t lBufferCount = ( lStream->GetQueuedBufferMaximum() < 16 ) ? lStream->GetQueuedBufferMaximum() : 16;
+// cout << "lbuffercount = " << lBufferCount << endl;
+
+ // Allocate buffers
+ for( uint8_t i=0; iAlloc( static_cast( lSize + 500 ) );
+ if(!lresult.IsOK())
+ cout << "dk failed" << endl;
+
+ // Add to external list - used to eventually release the buffers
+ lbufferlist.push_back(lBuffer);
+ }
+// cout << ">>> rgb: create stream buffers successfully" << endl;
+ }
+
+ void RGB_Camera::free_stream_buffers()
+ {
+ bufferlist::iterator iter = lbufferlist.begin();
+ while( iter != lbufferlist.end() )
+ {
+ delete *iter;
+ iter++;
+ }
+ // Clear the buffer list
+ lbufferlist.clear();
+ }
+
+ void RGB_Camera::start_acquisition()
+ {
+ // Queue all buffers in the stream
+ bufferlist::iterator iter = lbufferlist.begin();
+ while( iter != lbufferlist.end() )
+ {
+ lStream->QueueBuffer(*iter);
+ iter++;
+ }
+ cout << "queue buffer successfully..." << endl;
+
+ // Enable streaming and send the AcquisitionStart command
+ // cout << "Enabling streaming and sending AcquisitionStart command." << endl;
+ lDevice->StreamEnable();
+ lStart->Execute();
+
+ // start a new thread CaptureThread
+ rgb_capture_thread->stop_mutex.lock();
+ rgb_capture_thread->m_stop = false;
+ rgb_capture_thread->stop_mutex.unlock();
+ rgb_capture_thread->start();
+ }
+
+ void RGB_Camera::stop_acquisition()
+ {
+ //线程停止!
+ rgb_capture_thread->exit_thread();
+ rgb_capture_thread->wait();
+ if(rgb_capture_thread->isFinished())
+ {
+ cout << ">>>rgb capture thread stopped successfully" << endl;
+ }
+ }
+
+ /*--------rgb_capture thread---------------------*/
+ RGB_CaptureThread::RGB_CaptureThread(QObject *parent) : QThread(parent), m_stop(false)
+ {}
+
+ void RGB_CaptureThread::run()
+ {
+ /*----将线程绑定至6号cpu,提高线程效率----*/
+// cpu_set_t get;
+// cpu_set_t mask;
+// int num = sysconf(_SC_NPROCESSORS_CONF);
+//// pthread_t thread_id = pthread_self();
+//// cout << thread_id << endl;
+// CPU_ZERO(&mask);
+// CPU_SET(1, &mask);
+// sched_setaffinity(1, sizeof(mask), &mask);
+// CPU_ZERO(&get);
+// sched_getaffinity(1, sizeof(get), &get);
+// for(int i=0; ilStop->Execute();
+
+ // Disable streaming on the device
+ rgb_camera->lDevice->StreamDisable();
+
+ // Abort all buffers from the stream and dequeue
+ rgb_camera->lStream->AbortQueuedBuffers();
+
+ // Retrieve the buffers left in stream
+ while ( rgb_camera->lStream->GetQueuedBufferCount() > 0 )
+ {
+ PvBuffer *lBuffer = nullptr;
+ PvResult lOperationResult;
+ rgb_camera->lStream->RetrieveBuffer( &lBuffer, &lOperationResult, 1000 );
+ }
+ return;
+ }
+ stop_mutex.unlock();
+ PvBuffer *lBuffer = nullptr;
+ PvResult lOperationResult;
+
+ // Retrieve next buffer
+ PvResult lResult = rgb_camera->lStream->RetrieveBuffer( &lBuffer, &lOperationResult, 1000 );
+ if ( lResult.IsOK() )
+ {
+ if ( lOperationResult.IsOK() )
+ {
+ // We now have a valid buffer. This is where you would typically process the buffer.
+ // Get image data
+// uint64_t frame_size = camera->lDevice->GetPayloadSize();
+ uint8_t* image = lBuffer->GetDataPointer();
+ memcpy(send_rgb_buf, image, RGB_HEIGHT * RGB_WIDTH * 3);
+ rgb_camera->send_rgbdata_to_ui(send_rgb_buf);
+
+ ready_to_send_rgb.release();
+ }
+ else{
+// memset(send_rgb_buf, 0, RGB_HEIGHT * RGB_WIDTH * 3);
+// ready_to_send_rgb.release();
+// cout << "rgb error: "<< lOperationResult.GetCodeString().GetAscii() << endl; // Non OK operational result
+ }
+ // Re-queue the buffer in the stream object
+ rgb_camera->lStream->QueueBuffer( lBuffer );
+ }
+// else
+// cout << "*** rgb Retrieve buffer failure: " << lResult.GetCodeString().GetAscii() << endl; // Retrieve buffer failure
+ }
+ }
+
+ void RGB_CaptureThread::exit_thread()
+ {
+ stop_mutex.lock();
+ m_stop = true;
+ stop_mutex.unlock();
+ }
diff --git a/camera.h b/camera.h
new file mode 100644
index 0000000..6f72bf8
--- /dev/null
+++ b/camera.h
@@ -0,0 +1,397 @@
+/**
+ * @file camera.h
+ * @author DingKun & ChengLei
+ * @date 2022.3.5
+ * @brief The file contains a class named Camera
+ * @details The file contains a class named Camera
+ * which refers to the hyperspectral camera(FX10e).
+ *
+ * The Camera class in this file contains the operation
+ * and parameters of the hyperspectral camera(FX10e).
+ */
+
+#ifndef CAMERA_H
+#define CAMERA_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "iostream"
+#include
+#include
+#include "opencv.hpp"
+#include
+#include
+#include
+
+using namespace std;
+
+extern float file_explosure;
+extern vector mroi;
+extern vector valid;
+extern int R;
+extern int G;
+extern int B;
+
+class CaptureThread;
+//Ebus图像传输流队列的大小
+#define BUFFER_COUNT 64
+//光谱数据的宽度
+#define SPEC_WIDTH 1024
+//光谱数据的高度
+#define SPEC_HEIGHT 256
+//有效的谱段
+#define VALIDBANDS 22
+//采集校正时取平均的图像数
+#define CALIBRATION_FRAMES 35
+//光谱相机的数字增益
+#define GAIN 2.0f
+// 光谱mask高度宽度
+#define SPEC_MASK_HEIGHT 1024
+#define SPEC_MASK_WIDTH 1024
+// RGB mask高度宽度
+#define RGB_MASK_HEIGHT 1024
+#define RGB_MASK_WIDTH 1024
+// RGB图像的高度宽度
+#define RGB_HEIGHT 1024
+#define RGB_WIDTH 4096
+
+/**
+ * @brief Indicate a pointer to function
+ */
+typedef int(*callback_ptr)(uint8_t*, uint64_t, uint64_t);
+
+/**
+ * @brief List contains pointer to PvBuffer
+ */
+typedef std::list bufferlist;
+
+/**
+ * @brief Callback function runs when camera captures one frame
+ * @param buffer The image data in one frame
+ * @param frame_size The size of the buffer in one frame
+ * @param frame_number The number of the frame
+ * @return Indicate the status of operation
+ */
+int on_data_callback(uint8_t* buffer, uint64_t frame_size, uint64_t frame_number);
+
+int onDataCallback_calibration(uint8_t* buffer, uint64_t frame_size, uint64_t frame_number);
+
+int onDataCallback_acquisition(uint8_t* buffer, uint64_t frame_size, uint64_t frame_number);
+
+/**
+ * @brief The Camera class
+ * @details
+ * Hyperspectral camera model: Specim FX10e
+ * etThe class contains the operation and paramers of the hyperspectral camera(FX10e).
+ * Steps to control the hyperspectral camera:
+ * 1. Selects a device
+ * 2. Connect the PvDevice, opens the PvStream
+ * 3. Allocates the buffers
+ * 4. Starts acquistion
+ * 5. Retrieve/process/free incoming buffers
+ * 6. Stops acquisition
+ */
+class Camera : public QObject
+{
+ Q_OBJECT
+public:
+ PvDevice* lDevice = nullptr; ///< Camera device handler
+ PvStream* lStream = nullptr; ///< Stream handler
+ bufferlist lbufferlist; ///< buffer list to manage memory
+
+ PvGenCommand *lStart; ///< GenICam command to start capture
+ PvGenCommand *lStop; ///< GenICam command to stop capture
+
+ PvSystem lSystem;
+ const PvDeviceInfo* lLastDeviceInfo = nullptr; ///< DeviceInfo handler
+ const PvDeviceInfo *lDeviceInfo = nullptr;
+
+ PvGenParameterArray* parameter_array = nullptr; ///< ParameterArray handler
+ callback_ptr data_callback = nullptr; ///< Pointer to function which type is callback_ptr
+
+ CaptureThread* capture_thread = nullptr;
+
+ bool capture_black_flag = false; ///< flag to capture black frame
+ bool capture_white_flag = false; ///< flag to capture white frame
+
+ cv::Mat sum_mat_for_calibration;
+ cv::Mat eps; ///The function contains all the needed operations before the camera works.
+ * Use function to initialize camera at first when you want to capture images.
+ */
+ int init_camera();
+
+ /**
+ * @brief Enumerate and connect to the camera
+ * @return Status
+ * @retval 0 The camera is connected successfully
+ * @retval -1 lSystem.Find() error
+ * @retval -2 lLastDeviceInfo is NULL, camera not found
+ */
+ int enum_connect_camera();
+
+ /**
+ * @brief Connect to the camera
+ * @details Be sure to enumerate the camera first and lLastDeviceInfo is not NULL
+ * @return Status
+ * @retval 0 Connect to the camera successfully
+ * @retval -1 PvDevice::CreateAndConnect() error
+ * @retval -2 lLastDeviceInfo is NULL
+ */
+ int connect_camera();
+
+ /**
+ * @brief Get the parameters of camera
+ */
+ void get_camera_parameters();
+
+ /**
+ * @brief Set MROI
+ * @details Setting MROI needs to happen as following sequence of commands: + * 1. Disable MROI + * 2. Clear old MROI indexes & values + * 3. Set new MROI indexes & values + * 4. Set STOP INDEX after the last known MROI index + * FX10/FX10e the STOP INDEX: MROI top offset = 1081, MROI height = 0 + * 5. Enable MROI+ * @param vec Vector contains mroi parameters + */ + void set_MROI(const vector