第一次提交

1、hpi的可用代码;
2、修复了多次点击曝光后,福亮度数据错误的问题;
3、定标方式为大的蓝菲积分球的标准能量曲线,而不是基于asd的能量曲线;
This commit is contained in:
tangchao0503
2022-09-06 22:54:14 +08:00
commit 98cf134cca
106 changed files with 39400 additions and 0 deletions

258
.gitignore vendored Normal file
View File

@ -0,0 +1,258 @@
# tc
/0/*
/problem880_960/*
/installer/*
/test/*
*.hdr
*.enp
*.log # 自己写的log文件
/.idea
20220627
20220628
20220628_focus
20220629_focus
corning410_test
corning410_test.hdr
data
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

117
0.1remove dark noise.py Normal file
View File

@ -0,0 +1,117 @@
'''
1、读取影像
2、bin
3、去除暗电流 + 转反射率
4、保存光谱
'''
import numpy as np
import matplotlib.pyplot as plt
import sys
from osgeo import gdal #读写影像数据
class GRID:
#读图像文件
@classmethod
def read_img(cls, filename):
try:
dataset = gdal.Open(filename) # 打开文件
im_width = dataset.RasterXSize # 栅格矩阵的列数
im_height = dataset.RasterYSize # 栅格矩阵的行数
num_bands = dataset.RasterCount # 栅格矩阵的波段数
im_geotrans = dataset.GetGeoTransform() # 仿射矩阵
im_proj = dataset.GetProjection() # 地图投影信息
im_data = dataset.ReadAsArray(0, 0, im_width, im_height) # 将数据写成数组,对应栅格矩阵
del dataset
return im_proj, im_geotrans, im_data
except:
sys.exit()
#写文件以写成tif为例
@classmethod
def write_img(cls, dst_filename, data):
format = "ENVI"
driver = gdal.GetDriverByName(format)
RasterXSize = data.shape[2] # 遥感影像的sample列数
RasterYSize = data.shape[1] # 遥感影像的line行数
band = data.shape[0]
dst_ds = driver.Create(dst_filename, RasterXSize, RasterYSize,
band,
gdal.GDT_Float32) # driver.Create()函数中RasterXSize代表影像的sample列数RasterYSize代表影像的line行数
for i in range(band):
dst_ds.GetRasterBand(i + 1).WriteArray(data[i, :, :]) # gdal的band从1开始所以dst_ds.GetRasterBand(i+1)
dst_ds = None
# bin
@classmethod
def bin(cls, img, nBin):
if nBin == 1:
return img
image_bin = np.empty((int(img.shape[0] / nBin), img.shape[1], img.shape[2]))
k = np.arange(img.shape[0])[0::nBin]
for i in range(image_bin.shape[0]):
for j in range(nBin):
image_bin[i] += img[k[i] + j]
return image_bin
# 文件名
image = r'D:\py_program\corning410\test_spectral\lib_spectral2_20帧\delete\leaf'
dark_image = r'D:\py_program\corning410\test_spectral\lib_spectral2_20帧\delete\dark'
baiban_image = r'D:\py_program\corning410\test_spectral\lib_spectral2_20帧\delete\baiban'
# 读取影像
print('读取影像')
im_proj, im_geotrans, im_data = GRID.read_img(image)
d1, d2, dark_noise = GRID.read_img(dark_image)
b1, b2, baiban = GRID.read_img(baiban_image)
n_bin = 1
im_data = GRID.bin(im_data, n_bin)
dark_noise = GRID.bin(dark_noise, n_bin)
baiban = GRID.bin(baiban, n_bin)
# 1去除暗电流2转反射率
dark_noise_mean = dark_noise.mean(axis=1)
baiban_mean = baiban.mean(axis=1)
im_data = im_data.astype(np.float)
for i in range(im_data.shape[1]):
im_data[:, i, :] = (im_data[:, i, :] - dark_noise_mean).astype(np.float) / baiban_mean.astype(np.float)
print('将影像写入到文件')
GRID.write_img(image + '_reflectivity', im_data)
# 计算波长
def calculate_wavelength(x):
wavelength = x * 1.999564 - 279.893
return wavelength
wavelength_tmp = np.empty(300)
for i in range(340, 640):
wavelength_tmp[i - 340] = calculate_wavelength(i)
wavelength = np.empty(im_data.shape[0])
k = np.arange(300)[0::n_bin]
for i in range(wavelength.shape[0]):
tmp = 0
for j in range(n_bin):
tmp += wavelength_tmp[k[i] + j]
wavelength[i] = tmp / n_bin
# 保存光谱为txt文件
spectralNumber = 1
spectral_container = np.empty((im_data.shape[0], spectralNumber)).astype(np.float)
spectral_container = np.insert(spectral_container, 0, wavelength, axis=1)
spectral = im_data.mean(1).mean(1)
spectral_container = np.insert(spectral_container, 1, spectral, axis=1)
np.savetxt(r'D:\py_program\corning410\test_spectral\lib_spectral2_20帧\delete\spectral.txt', spectral_container[:, [0, 1]], fmt='%f')
plt.plot(wavelength, spectral)
plt.show()

141
0.2stretch.py Normal file
View File

@ -0,0 +1,141 @@
'''
1、读取影像
2、bin
3、去除暗电流 + 转反射率
4、保存光谱
'''
import numpy as np
import matplotlib.pyplot as plt
import sys
from osgeo import gdal #读写影像数据
from PIL import Image
import cv2
class GRID:
#读图像文件
@classmethod
def read_img(cls, filename):
try:
dataset = gdal.Open(filename) # 打开文件
im_width = dataset.RasterXSize # 栅格矩阵的列数
im_height = dataset.RasterYSize # 栅格矩阵的行数
num_bands = dataset.RasterCount # 栅格矩阵的波段数
im_geotrans = dataset.GetGeoTransform() # 仿射矩阵
im_proj = dataset.GetProjection() # 地图投影信息
im_data = dataset.ReadAsArray(0, 0, im_width, im_height) # 将数据写成数组,对应栅格矩阵
del dataset
return im_proj, im_geotrans, im_data
except:
sys.exit()
#写文件以写成tif为例
@classmethod
def write_img(cls, dst_filename, data):
format = "ENVI"
driver = gdal.GetDriverByName(format)
RasterXSize = data.shape[2] # 遥感影像的sample列数
RasterYSize = data.shape[1] # 遥感影像的line行数
band = data.shape[0]
dst_ds = driver.Create(dst_filename, RasterXSize, RasterYSize,
band,
gdal.GDT_Float32) # driver.Create()函数中RasterXSize代表影像的sample列数RasterYSize代表影像的line行数
for i in range(band):
dst_ds.GetRasterBand(i + 1).WriteArray(data[i, :, :]) # gdal的band从1开始所以dst_ds.GetRasterBand(i+1)
dst_ds = None
# bin
@classmethod
def bin(cls, img, nBin):
if nBin == 1:
return img
image_bin = np.empty((int(img.shape[0] / nBin), img.shape[1], img.shape[2]))
k = np.arange(img.shape[0])[0::nBin]
for i in range(image_bin.shape[0]):
for j in range(nBin):
image_bin[i] += img[k[i] + j]
return image_bin
# 计算波长
@classmethod
def calculate_wavelength(cls, x):
wavelength = x * 1.999564 - 279.893
return wavelength
wavelength = np.empty(639 - 339)
for i in range(339, 639):
wavelength[i - 339] = GRID.calculate_wavelength(i)
# 等效于ENVI拉伸No stretch
def stretch(img, minimum=0, maximum=255):
if len(img.shape) == 2:
img_new = (img - minimum) / (maximum - minimum)
img_new[img_new < 0] = 0
img_new[img_new > 1] = 1
return img_new
else:
img_new = np.empty(img.shape)
for i in range(img.shape[2]):
img_new[:, :, i] = (img[:, :, i] - minimum) / (maximum - minimum)
img_new[:, :, i][img_new[:, :, i] < 0] = 0
img_new[:, :, i][img_new[:, :, i] > 1] = 1
return img_new
# 当lowPercentile=0, highPercentile=100时等效于Min-Max Stretching
# lowPercentile=2, highPercentile=98时等效于ENVI拉伸Linear 2%
# https://blog.csdn.net/LEILEI18A/article/details/80180483
def percentile_stretching(img, lowPercentile=0, highPercentile=100, minout=0, maxout=255):
if len(img.shape) == 2:
low = np.percentile(img, lowPercentile)
up = np.percentile(img, highPercentile)
img_new = ((img - low) / (up - low)) * (maxout - minout) + minout
img_new[img_new < minout] = minout
img_new[img_new > maxout] = maxout
img_out = np.uint8(img_new)
return img_out
else: # 对于彩色照片,需要先单独对每个波段拉伸
img_new = np.empty(img.shape)
for i in range(img.shape[2]):
low = np.percentile(img[:, :, i], lowPercentile)
up = np.percentile(img[:, :, i], highPercentile)
img_new[:, :, i] = minout + ((img[:, :, i] - low) / (up - low)) * (maxout - minout)
img_new[:, :, i][img_new[:, :, i] < minout] = minout
img_new[:, :, i][img_new[:, :, i] > maxout] = maxout
img_out = np.uint8(img_new)
return img_out
# 画出图像直方图
# https://blog.csdn.net/fly_wt/article/details/83904207
def image_hist(image): # 画三通道图像的直方图
color = ("blue", "green", "red") # 画笔颜色的值可以为大写或小写或只写首字母或大小写混合
for i, color in enumerate(color):
hist = cv2.calcHist([image], [i], None, [256], [0, 256])
plt.plot(hist, color=color)
plt.xlim([0, 256])
plt.show()
print("读取影像")
#image = r'D:\py_program\corning410\2%拉伸显示问题 + 漏帧\x270\dn值\corning410_test10'
image = r'D:\corning410_test10'
im_proj, im_geotrans, im_data = GRID.read_img(image)
print("挑取波段用于真彩色显示")
rgb_raw = np.dstack((im_data[121], im_data[76], im_data[36]))
rgb = rgb_raw.astype(np.uint8)
x1 = stretch(rgb_raw) #等效于ENVI拉伸No stretch
x2 = percentile_stretching(rgb_raw) # Min-Max Stretching
x3 = percentile_stretching(rgb_raw, 2, 98) # 2% Stretching
print("画出影像")
plt.imshow(x3)
plt.show()

15
corning_config.ini Normal file
View File

@ -0,0 +1,15 @@
[basic]
binning = 1
default_dir = D:\py_program\corning410
default_file_name = test
[effective_window]
start_column_binning_1 = 12
end_column_binning_1 = 1376
start_row_binning_1 = 1
end_row_binning_1 = 300
start_column_binning_2 = 13
end_column_binning_2 = 695
start_row_binning_2 = 1
end_row_binning_2 = 150

23
delete.py Normal file
View File

@ -0,0 +1,23 @@
def add(x, y):
return x+y
class A():
x = add(3,4)
def p(self):
print(self.x)
class B(A):
pass
class Dog:
tricks = [] # mistaken use of a class variable
def __init__(self, name):
self.name = name
def add_trick(self, trick):
self.tricks.append(trick)

0
library/__init__.py Normal file
View File

514
library/config.py Normal file
View File

@ -0,0 +1,514 @@
# 标准库
import traceback, os
# 三方库
import configparser
from PyQt5.QtCore import QObject, pyqtSignal
# 自己写的库
from library.dir_manager import DirManager
# class ConfigFile():
# def __init__(self):
# self.base_dir = get_path()
#
# self.log_dir = self.base_dir + '//log'
# self.create_directory(self.log_dir)
#
# self.corning_config_file = self.log_dir + '//corning_config.ini'
#
# self.read_config_file()
#
# self.signals = WorkerSignals()
# self.signals.image_signal.connect(self.image_record_param_changed)
# self.signals.spectral_signal.connect(self.spectral_record_param_changed)
#
#
# # 查看是否存在保存光谱和影像文件的目录,如果没有就创建
# def create_directory(self, directory):
# if not os.path.exists(directory):
# print('创建文件夹:', directory)
# os.makedirs(directory)
#
# # 读取配置文件,如果没有就创建
# def read_config_file(self):
# if os.path.exists(self.corning_config_file):
# '''
# 如果存在配置文件,就从配置文件中读取软件配置信息
# '''
# print('配置文件存在!')
#
# config = configparser.ConfigParser()
# config.read(self.corning_config_file)
#
# self.image_dir = config.get('image_record_param', 'image_dir')
# self.create_directory(self.image_dir)
# self.default_image_name = config.get('image_record_param', 'default_image_name')
# self.framerate = int(config.get('image_record_param', 'framerate'))
# self.exposure_time = int(config.get('image_record_param', 'exposure_time'))
# self.gain = int(float(config.get('image_record_param', 'gain')))
# self.frame_number = int(config.get('image_record_param', 'frame_number'))
#
# self.spectral_dir = config.get('spectral_record_param', 'spectral_dir')
# self.create_directory(self.spectral_dir)
# self.default_spectral_name = config.get('spectral_record_param', 'default_spectral_name')
#
# self.binning = int(config.get('bin', 'binning'))
# if self.binning == 1:
# self.start_column = int(config.get('bin', 'start_column_binning_1'))
# self.end_column = int(config.get('bin', 'end_column_binning_1'))
# self.start_row = int(config.get('bin', 'start_row_binning_1'))
# self.end_row = int(config.get('bin', 'end_row_binning_1'))
# elif self.binning == 2:
# self.start_column = int(config.get('bin', 'start_column_binning_2'))
# self.end_column = int(config.get('bin', 'end_column_binning_2'))
# self.start_row = int(config.get('bin', 'start_row_binning_2'))
# self.end_row = int(config.get('bin', 'end_row_binning_2'))
#
# # print(self.default_dir, self.binning, self.start_column, self.end_column, self.start_row, self.end_row)
#
# else:
# '''
# 1、如果不存在配置文件就建立配置文件
# 2、并且手动创建配置变量
# '''
# config = configparser.ConfigParser()
#
# # config.add_section('effective_window')
# # startRow = 339
# # endRow = 639
# # startColumn = 285
# # endColumn = 1649
#
#
# config.add_section('bin')
# config.set('bin', 'binning', '1')
#
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '1')
# config.set('bin', 'end_row_binning_1', '301')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '1')
# config.set('bin', 'end_row_binning_2', '150')
#
# config.add_section('image_record_param')
# config.set('image_record_param', 'image_dir', self.base_dir + '/image')
# config.set('image_record_param', 'default_image_name', 'testimage')
# config.set('image_record_param', 'framerate', '20')
# config.set('image_record_param', 'exposure_time', '500')
# config.set('image_record_param', 'gain', '0')
# config.set('image_record_param', 'frame_number', '20')
#
# config.add_section('spectral_record_param')
# config.set('spectral_record_param', 'spectral_dir', self.base_dir + '/spectral')
# config.set('spectral_record_param', 'default_spectral_name', 'testspectral')
# # config.set('spectral_record_param', 'start_column_binning_1', '12')
#
# with open(self.corning_config_file, mode='w') as f:
# config.write(f)
# print('创建配置文件成功!')
#
# # 如果没有配置文件,就手动创建配置变量
# self.image_dir = self.base_dir + '/image'
# self.create_directory(self.image_dir)
# self.default_image_name = 'testimage'
# self.framerate = 20
# self.exposure_time = 500
# self.gain = 0
# self.frame_number = 20
#
# self.spectral_dir = self.base_dir + '/spectral'
# self.create_directory(self.spectral_dir)
# self.default_spectral_name = 'testspectral'
#
# self.binning = int(config.get('bin', 'binning'))
# self.start_column = int(config.get('bin', 'start_column_binning_1'))
# self.end_column = int(config.get('bin', 'end_column_binning_1'))
# self.start_row = int(config.get('bin', 'start_row_binning_1'))
# self.end_row = int(config.get('bin', 'end_row_binning_1'))
#
# # self.start_column = 12
# # self.end_column = 1376
# # self.start_row = 1
# # self.end_row = 300
#
# def image_record_param_changed(self, dictionary):
# '''
# :param dictionary: {'image_dir':值, 'image_record_param': 值}
# :return:
# '''
# try:
# # print('接收的参数个数:', len(dictionary.keys()))
#
# config = configparser.ConfigParser()
# config.read(self.corning_config_file)
#
# for key in dictionary.keys():
# if key == 'image_dir':
# self.image_dir = dictionary[key]
# config.set('image_record_param', key, dictionary[key])
# if key == 'default_image_name':
# self.default_image_name = dictionary[key]
# config.set('image_record_param', key, dictionary[key])
# if key == 'framerate':
# self.framerate = dictionary[key]
# config.set('image_record_param', key, str(dictionary[key]))
# if key == 'exposure_time':
# self.exposure_time = dictionary[key]
# config.set('image_record_param', key, str(dictionary[key]))
# if key == 'gain':
# self.gain = dictionary[key]
# config.set('image_record_param', key, str(dictionary[key]))
# if key == 'frame_number':
# self.frame_number = dictionary[key]
# config.set('image_record_param', key, str(dictionary[key]))
# except:
# traceback.print_exc()
#
# with open(self.corning_config_file, 'w') as f:
# config.write(f)
#
# def spectral_record_param_changed(self, dictionary):
# '''
# :param dictionary: {'image_dir':值, 'image_record_param': 值}
# :return:
# '''
# print(len(dictionary.keys()))
#
# config = configparser.ConfigParser()
# config.read(self.corning_config_file)
#
# try:
# for key in dictionary.keys():
# if key == 'spectral_dir':
# self.spectral_dir = dictionary[key]
# config.set('spectral_record_param', key, dictionary[key])
# if key == 'default_spectral_name':
# self.default_spectral_name = dictionary[key]
# config.set('spectral_record_param', key, dictionary[key])
# except:
# traceback.print_exc()
#
# with open(self.corning_config_file, 'w') as f:
# config.write(f)
class ConfigFile(QObject, DirManager):
# 信号必须定义为类属性不能放在__init__方法里
image_signal = pyqtSignal(dict)
spectral_signal = pyqtSignal(dict)
def __init__(self):
'''
配置文件读取和写入类,采集数据需要的帧率、曝光、帧数、文件名等等都由此类从文件中读取并保存在此类中,
'''
super(ConfigFile, self).__init__()
self.corning_config_file = self.log_dir + '//corning_config.ini'
self.read_config_file()
self.image_signal.connect(self.image_record_param_changed)
self.spectral_signal.connect(self.spectral_record_param_changed)
# 读取配置文件,如果没有就创建
def read_config_file(self):
if os.path.exists(self.corning_config_file):
'''
如果存在配置文件,就从配置文件中读取软件配置信息
'''
print('配置文件存在!')
config = configparser.ConfigParser()
config.read(self.corning_config_file)
# self.image_dir = config.get('image_record_param', 'image_dir')
# self.create_directory(self.image_dir)
# self.default_image_name = config.get('image_record_param', 'default_image_name')
# self.framerate = int(config.get('image_record_param', 'framerate'))
# self.exposure_time = int(float(config.get('image_record_param', 'exposure_time')))
# self.gain = int(float(config.get('image_record_param', 'gain')))
# self.frame_number = int(config.get('image_record_param', 'frame_number'))
# self.arcus_speed = int(config.get('image_record_param', 'arcus_speed'))
#
# self.spectral_dir = config.get('spectral_record_param', 'spectral_dir')
# self.create_directory(self.spectral_dir)
# self.default_spectral_name = config.get('spectral_record_param', 'default_spectral_name')
# self.spectral_number = int(config.get('spectral_record_param', 'spectral_number'))
# self.framenumber_average = int(config.get('spectral_record_param', 'framenumber_average'))
# self.exposure_time_spectral = int(config.get('spectral_record_param', 'exposure_time_spectral'))
#
# self.binning = int(config.get('bin', 'binning'))
# if self.binning == 1:
# self.start_column = int(config.get('bin', 'start_column_binning_1'))
# self.end_column = int(config.get('bin', 'end_column_binning_1'))
# self.start_row = int(config.get('bin', 'start_row_binning_1'))
# self.end_row = int(config.get('bin', 'end_row_binning_1'))
# elif self.binning == 2:
# self.start_column = int(config.get('bin', 'start_column_binning_2'))
# self.end_column = int(config.get('bin', 'end_column_binning_2'))
# self.start_row = int(config.get('bin', 'start_row_binning_2'))
# self.end_row = int(config.get('bin', 'end_row_binning_2'))
#
# # print(self.default_dir, self.binning, self.start_column, self.end_column, self.start_row, self.end_row)
else:
'''
1、如果不存在配置文件就建立配置文件
2、并且手动创建配置变量
'''
config = configparser.ConfigParser()
config.add_section('bin')
config.set('bin', 'binning', '1')
# # Serial number = 008
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '2')
# config.set('bin', 'end_row_binning_1', '302')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '0')
# config.set('bin', 'end_row_binning_2', '150')
# # Serial number = 0073
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '1')
# config.set('bin', 'end_row_binning_1', '301')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '0')
# config.set('bin', 'end_row_binning_2', '150')
# # Serial number = 0095
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '1')
# config.set('bin', 'end_row_binning_1', '301')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '0')
# config.set('bin', 'end_row_binning_2', '150')
# Serial number = 0031
config.set('bin', 'start_column_binning_1', '12')
config.set('bin', 'end_column_binning_1', '1376')
config.set('bin', 'start_row_binning_1', '1')
config.set('bin', 'end_row_binning_1', '301')
config.set('bin', 'start_column_binning_2', '13')
config.set('bin', 'end_column_binning_2', '695')
config.set('bin', 'start_row_binning_2', '1')
config.set('bin', 'end_row_binning_2', '151')
# # Serial number = 0099
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '1')
# config.set('bin', 'end_row_binning_1', '301')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '1')
# config.set('bin', 'end_row_binning_2', '151')
config.add_section('effective_window')
config.set('effective_window', 'width_binning_1', '1392')
config.set('effective_window', 'offsetX_binning_1', '272')
config.set('effective_window', 'height_binning_1', '302')
config.set('effective_window', 'offsetY_binning_1', '364')
config.set('effective_window', 'width_binning_2', '696')
config.set('effective_window', 'offsetX_binning_2', '128')
config.set('effective_window', 'height_binning_2', '151')
config.set('effective_window', 'offsetY_binning_2', '182')
config.add_section('calibration_file')
config.set('calibration_file', 'cal_file_name_image_bining_1', 'lens_bin1_gain_SN0073')
config.set('calibration_file', 'cal_file_name_image_bining_2', 'lens_bin2_gain_SN0073')
config.set('calibration_file', 'cal_file_it_image_bining_1', '6969')
config.set('calibration_file', 'cal_file_it_image_bining_2', '1628')
config.set('calibration_file', 'cal_file_name_spectral_bining_1', 'optical_fiber_bin1_gain_SN0073')
config.set('calibration_file', 'cal_file_it_spectrl_bining_1', '42300')
config.add_section('wavelength_file_name')
config.set('wavelength_file_name', 'file_name', 'wavelength0073.txt')
config.add_section('image_record_param')
config.set('image_record_param', 'image_dir', self.base_dir + '/image')
config.set('image_record_param', 'default_image_name', 'testimage')
config.set('image_record_param', 'framerate', '20')
config.set('image_record_param', 'exposure_time', '500')
config.set('image_record_param', 'gain', '0')
config.set('image_record_param', 'frame_number', '20')
config.set('image_record_param', 'arcus_speed', '1000')
config.add_section('spectral_record_param')
config.set('spectral_record_param', 'spectral_dir', self.base_dir + '/spectral')
config.set('spectral_record_param', 'default_spectral_name', 'testspectral')
config.set('spectral_record_param', 'spectral_number', '10')
config.set('spectral_record_param', 'framenumber_average', '10')
config.set('spectral_record_param', 'exposure_time_spectral', '1000')
# config.set('spectral_record_param', 'start_column_binning_1', '12')
with open(self.corning_config_file, mode='w') as f:
config.write(f)# 如果没有配置文件,就手动创建配置变量
print('创建配置文件成功!')
# 读取配置文件中的参数
self.binning = int(config.get('bin', 'binning'))
print('读取配置文件中参数:', self.binning)
if self.binning == 1:
self.effective_window_width = int(config.get('effective_window', 'width_binning_1'))
self.effective_window_offsetx = int(config.get('effective_window', 'offsetx_binning_1'))
self.effective_window_height = int(config.get('effective_window', 'height_binning_1'))
self.effective_window_offsety = int(config.get('effective_window', 'offsety_binning_1'))
self.start_column = int(config.get('bin', 'start_column_binning_1'))
self.end_column = int(config.get('bin', 'end_column_binning_1'))
self.start_row = int(config.get('bin', 'start_row_binning_1'))
self.end_row = int(config.get('bin', 'end_row_binning_1'))
self.calibration_file_name_image=config.get('calibration_file', 'cal_file_name_image_bining_1')
self.calibration_file_it_image = int(config.get('calibration_file', 'cal_file_it_image_bining_1'))
self.calibration_file_name_spectral = config.get('calibration_file', 'cal_file_name_spectral_bining_1')
self.calibration_file_it_spectral = int(config.get('calibration_file', 'cal_file_it_spectrl_bining_1'))
elif self.binning == 2:
self.effective_window_width = int(config.get('effective_window', 'width_binning_2'))
self.effective_window_offsetx = int(config.get('effective_window', 'offsetx_binning_2'))
self.effective_window_height = int(config.get('effective_window', 'height_binning_2'))
self.effective_window_offsety = int(config.get('effective_window', 'offsety_binning_2'))
self.start_column = int(config.get('bin', 'start_column_binning_2'))
self.end_column = int(config.get('bin', 'end_column_binning_2'))
self.start_row = int(config.get('bin', 'start_row_binning_2'))
self.end_row = int(config.get('bin', 'end_row_binning_2'))
self.calibration_file_name_image = config.get('calibration_file', 'cal_file_name_image_bining_2')
self.calibration_file_it_image = int(config.get('calibration_file', 'cal_file_it_image_bining_2'))
self.wavelength_file_name = config.get('wavelength_file_name', 'file_name')
self.image_dir = config.get('image_record_param', 'image_dir')
self.create_directory(self.image_dir)
self.default_image_name = config.get('image_record_param', 'default_image_name')
self.framerate = int(float(config.get('image_record_param', 'framerate')))
self.exposure_time = int(float(config.get('image_record_param', 'exposure_time')))
self.gain = int(float(config.get('image_record_param', 'gain')))
self.frame_number = int(float(config.get('image_record_param', 'frame_number')))
self.arcus_speed = int(float(config.get('image_record_param', 'arcus_speed')))
self.spectral_dir = config.get('spectral_record_param', 'spectral_dir')
self.create_directory(self.spectral_dir)
self.default_spectral_name = config.get('spectral_record_param', 'default_spectral_name')
self.spectral_number = int(float(config.get('spectral_record_param', 'spectral_number')))
self.framenumber_average = int(float(config.get('spectral_record_param', 'framenumber_average')))
self.exposure_time_spectral = int(float(config.get('spectral_record_param', 'exposure_time_spectral')))
# self.start_column = 12
# self.end_column = 1376
# self.start_row = 1
# self.end_row = 300
def image_record_param_changed(self, dictionary):
'''
:param dictionary: {'image_dir':值, 'image_record_param': 值}
:return:
'''
try:
# print('接收的参数个数:', len(dictionary.keys()))
config = configparser.ConfigParser()
config.read(self.corning_config_file)
for key in dictionary.keys():
# self.key = dictionary[key]
# config.set('image_record_param', key, dictionary[key])
if key == 'image_dir':
self.image_dir = dictionary[key]
config.set('image_record_param', key, dictionary[key])
if key == 'default_image_name':
self.default_image_name = dictionary[key]
config.set('image_record_param', key, dictionary[key])
if key == 'framerate':
self.framerate = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
if key == 'exposure_time':
self.exposure_time = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
if key == 'gain':
self.gain = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
if key == 'frame_number':
self.frame_number = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
if key == 'arcus_speed':
self.arcus_speed = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
except:
traceback.print_exc()
with open(self.corning_config_file, 'w') as f:
config.write(f)
def spectral_record_param_changed(self, dictionary):
'''
:param dictionary: {'image_dir':值, 'image_record_param': 值}
:return:
'''
print(len(dictionary.keys()))
config = configparser.ConfigParser()
config.read(self.corning_config_file)
try:
for key in dictionary.keys():
if key == 'spectral_dir':
self.spectral_dir = dictionary[key]
config.set('spectral_record_param', key, dictionary[key])
if key == 'default_spectral_name':
self.default_spectral_name = dictionary[key]
config.set('spectral_record_param', key, dictionary[key])
if key == 'spectral_number':
self.spectral_number = dictionary[key]
config.set('spectral_record_param', key, str(dictionary[key]))
if key == 'framenumber_average':
self.framenumber_average = dictionary[key]
config.set('spectral_record_param', key, str(dictionary[key]))
if key == 'exposure_time_spectral':
self.exposure_time_spectral = dictionary[key]
config.set('spectral_record_param', key, str(dictionary[key]))
except:
traceback.print_exc()
with open(self.corning_config_file, 'w') as f:
config.write(f)
if __name__ == '__main__':
x = ConfigFile()

29
library/dir_manager.py Normal file
View File

@ -0,0 +1,29 @@
import os
from library.functions import get_path
class DirManager():
def __init__(self):
self.base_dir = get_path()
self.log_dir = self.base_dir + '//log'
self.create_directory(self.log_dir)
print(self.log_dir)
# 查看是否存在保存光谱和影像文件的目录,如果没有就创建
def create_directory(self, directory):
'''
:param directory: 需要创建的文件夹绝对路径不能将参数directory省略而在此函数内部使用self.log_dir
因为本类的继承类也需要使用此函数
:return:
'''
if not os.path.exists(directory):
print('创建文件夹:', directory)
os.makedirs(directory)
# else:
# print('文件夹存在:%s' % self.log_dir)
if __name__ == '__main__':
x = DirManager()

144
library/functions.py Normal file
View File

@ -0,0 +1,144 @@
# -*- coding:utf-8 -*-
'''
本模块是各种工具函数
'''
import sys, os
import numpy as np
def get_path():
'''
本函数说明https://pythonhosted.org/PyInstaller/runtime-information.html#using-sys-executable-and-sys-argv-0
:return: 返回运行程序的绝对路径
'''
frozen = 'not'
if getattr(sys, 'frozen', False):
# we are running in a bundle
bundle_dir = sys._MEIPASS
# print('we are running in a bundle(pyinstaller打包程序)!')
else:
# we are running in a normal Python environment
# bundle_dir = os.path.dirname(os.path.abspath(__file__)) # 此行代码返回的是本文件的路径,而不是本文件所导入的文件的路径
bundle_dir = os.getcwd()
# print('we are running in a normal Python environment(非pyinstaller打包程序)!')
return bundle_dir
def get_resource_path(relative_path):
'''
本函数说明https://www.zacoding.com/en/post/python-selenium-to-exe/
:param relative_path:
:return:
'''
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.getcwd()
return os.path.join(base_path, relative_path)
def percentile_stretching(img, lowPercentile=0, highPercentile=100, minout=0, maxout=255):
'''
本程序用于拉伸影像
:param img:
:param lowPercentile:
:param highPercentile:
:param minout:
:param maxout:
:return:
'''
if len(img.shape) == 2:
low = np.percentile(img, lowPercentile)
up = np.percentile(img, highPercentile)
img_new = ((img - low) / (up - low)) * (maxout - minout) + minout
img_new[img_new < minout] = minout
img_new[img_new > maxout] = maxout
img_out = np.uint8(img_new)
return img_out
else: # 对于彩色照片,需要先单独对每个波段拉伸
img_new = np.empty(img.shape)
for i in range(img.shape[2]):
low = np.percentile(img[:, :, i], lowPercentile)
up = np.percentile(img[:, :, i], highPercentile)
img_new[:, :, i] = minout + ((img[:, :, i] - low) / (up - low)) * (maxout - minout)
img_new[:, :, i][img_new[:, :, i] < minout] = minout
img_new[:, :, i][img_new[:, :, i] > maxout] = maxout
img_out = np.uint8(img_new)
return img_out
def return_file_path(out, filepath, filename, model='image'):
'''
本程序功能在filepath中寻找所有包含filename所有文件filename1、filename2然后返回一个filename3
:param out: 永远传入一个空list[];用于存储所有递归调用
:param filepath:
:param filename:
:param model: 有两个模式image 和 spectral
:return:
'''
# 出现此处代码的原因是当次函数定义执行后函数定义就包含了out参数的引用
# 而out参数是可变参数每一次调用次函数都会改变out的值所有不能保证每次调用此函数时out==[]。
# 当第二次调用此方程时
# if out != []:
# if filename not in os.path.splitext(out[-1]):
# out = []
if model == 'image':
files = os.listdir(filepath)
for s in files:
abspath = os.path.join(filepath, s)
if os.path.isfile(abspath):
tmp = os.path.splitext(os.path.split(abspath)[1])[0]
if tmp not in out: # 防止重复记录
if filename in tmp:
out.append(tmp)
else:
pass
# print('没有进来')
elif os.path.isdir(abspath):
return_file_path(out, abspath, filename)
out.sort(key=lambda x: int(x.replace(filename, '')))
if out == []:
x = filename + str(0)
return os.path.join(filepath, x), 0
if out != []:
number = int(out[-1].replace(filename, '')) + 1
x = filename + str(number)
return os.path.join(filepath, x), number
elif model == 'spectral':
files = os.listdir(filepath)
for s in files:
abspath = os.path.join(filepath, s)
if os.path.isfile(abspath) and os.path.splitext(s)[1] == '.txt':
tmp = os.path.splitext(os.path.split(abspath)[1])[0]
if tmp not in out: # 防止重复记录
if filename in tmp:
out.append(tmp)
elif os.path.isdir(abspath):
return_file_path(out, abspath, filename)
out.sort(key=lambda x: int(x.replace(filename, '')))
if out == []:
x = filename + str(0) + '.txt'
return os.path.join(filepath, x), 0
if out != []:
number = int(out[-1].replace(filename, '')) + 1 # 现存最大文件号 + 1
x = filename + str(number) + '.txt'
return os.path.join(filepath, x), number
if __name__ == '__main__':
# print(get_path())
x = return_file_path([], r'D:\delete', 'sss', model='spectral')
print(x)
# y = return_file_path([], r'D:\delete', 'rr')
# print(y)

View File

@ -0,0 +1,40 @@
import sys, traceback
from osgeo import gdal
# 读写影像类
class ImageReaderWriter(object):
#读图像文件
@classmethod
def read_img(cls, filename, xoff=0, yoff=0, im_width=None, im_height=None):
try:
dataset = gdal.Open(filename) # 打开文件
if im_width == None:
im_width = dataset.RasterXSize # 栅格矩阵的列数
if im_height == None:
im_height = dataset.RasterYSize # 栅格矩阵的行数
num_bands = dataset.RasterCount # 栅格矩阵的波段数
im_geotrans = dataset.GetGeoTransform() # 仿射矩阵
im_proj = dataset.GetProjection() # 地图投影信息
im_data = dataset.ReadAsArray(xoff, yoff, im_width, im_height) # 将数据写成数组,对应栅格矩阵
del dataset
return im_proj, im_geotrans, im_data
except AttributeError:
print('gdal打开影像没有文件')
except Exception:
traceback.print_exc()
pass
#写文件以写成tif为例
@classmethod
def write_img(cls, dst_filename, data):
format = "ENVI"
driver = gdal.GetDriverByName(format)
RasterXSize = data.shape[2] # 遥感影像的sample列数
RasterYSize = data.shape[1] # 遥感影像的line行数
band = data.shape[0]
# driver.Create()函数中RasterXSize代表影像的sample列数RasterYSize代表影像的line行数
dst_ds = driver.Create(dst_filename, RasterXSize, RasterYSize, band, gdal.GDT_Float32)
for i in range(band):
dst_ds.GetRasterBand(i + 1).WriteArray(data[i, :, :]) # gdal的band从1开始所以dst_ds.GetRasterBand(i+1)
dst_ds = None

50
library/log.py Normal file
View File

@ -0,0 +1,50 @@
# 标准库
import traceback, os, logging
# 三方库
import configparser
# 自己写的库
from library.dir_manager import DirManager
class Log(DirManager):
def __init__(self):
super(Log, self).__init__()
self.log()
def log(self):
# 判断是否存在log文件如果不存在就创建
if not os.path.exists(self.log_dir + '//all_operate.log'):
with open(self.log_dir + '//all_operate.log', 'w') as f:
pass
if not os.path.exists(self.log_dir + '//error.log'):
with open(self.log_dir + '//error.log', 'w') as f:
pass
# 初始化log
root_logger = logging.getLogger('root')
root_logger.setLevel(level=logging.DEBUG) # logger级别设置为低级别代表这个logger可以处理很多级别的日志更灵活的处理放在logger中的各种handler中
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
all_operate_file_handler = logging.FileHandler(self.log_dir + '//all_operate.log') # 输出到文件
all_operate_file_handler.setLevel(logging.INFO)
all_operate_file_handler.setFormatter(formatter)
error_file_handler = logging.FileHandler(self.log_dir + '//error.log') # 输出到文件
error_file_handler.setLevel(logging.ERROR)
error_file_handler.setFormatter(formatter)
stream_handler = logging.StreamHandler() # 输出到控制台
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(formatter)
root_logger.addHandler(all_operate_file_handler)
root_logger.addHandler(error_file_handler)
root_logger.addHandler(stream_handler)
if __name__ == '__main__':
x = Log()

View File

@ -0,0 +1,25 @@
[bin]
binning = 1
start_column_binning_1 = 12
end_column_binning_1 = 1376
start_row_binning_1 = 1
end_row_binning_1 = 301
start_column_binning_2 = 13
end_column_binning_2 = 695
start_row_binning_2 = 1
end_row_binning_2 = 150
[image_record_param]
image_dir = D:\py_program\corning410\library/image
default_image_name = test_image
framerate = 20
exposure_time = 500
gain = 0
frame_number = 20
[spectral_record_param]
spectral_dir = D:\py_program\corning410\library/spectral
default_spectral_name = test_spectral
spectral_number = 10
framenumber_average = 10

View File

@ -0,0 +1,161 @@
import matplotlib
matplotlib.use("Qt5Agg") # 声明使用QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import traceback
import time, sys
from functions import percentile_stretching
from PyQt5 import QtWidgets, QtCore, uic
import pyqtgraph as pg
from random import randint
class ArgsError(Exception):
pass
# 画图类,用于:画出采集到的光谱;调焦(影响模式调焦)
class MatplotlibSpectralViewer(FigureCanvas):
def __init__(self, xlabel=None, ylabel=None, width=5, height=4, dpi=100):
# 第一步创建一个创建Figure
self.fig = Figure(figsize=(width, height), dpi=dpi)
# 第二步在父类中激活Figure窗口
# this is the Canvas Widget that displays the `figure`
# it takes the `figure` instance as a parameter to __init__
super(MatplotlibSpectralViewer, self).__init__(self.fig) # 此句必不可少,否则不能显示图形
# 第三步创建一个子图用于绘制图形用111表示子图编号如matlab的subplot(1,1,1)
self.axes = self.fig.add_subplot(1, 1, 1)
self.axes.set_xlabel('Wavelength (nm)')
self.axes.set_ylabel('reflectance')
self.xlabel = xlabel
self.ylabel = ylabel
self._plotref = None # 这里代表曲线
self.axes.set_ylim(0, 1.2)
# 第四步:就是画图,【可以在此类中画,也可以在其它类中画】
def plot_wrap(self, *args):
if self.xlabel is not None:
self.axes.set_xlabel(self.xlabel)
if self.ylabel is not None:
self.axes.set_ylabel(self.ylabel)
try:
if self._plotref == None:
if len(args) == 0:
raise ArgsError('传入了0个参数本函数只能传入1/2个参数')
elif len(args) == 1:
self.axes.cla()
# self.axes.set_ylim(0, 1.2)
self._plotref = self.axes.plot(list(range(len(args[0]))), args[0])[0]
self.draw()
elif len(args) == 2:
self.axes.cla()
# self.axes.set_ylim(0, 1.2)
self._plotref = self.axes.plot(args[0], args[1])[0]
self.draw()
elif len(args) > 2:
raise ArgsError('传入了大于2个参数本函数只能传入1/2个参数')
elif self._plotref is not None:
if len(args) == 0:
raise ArgsError('传入了0个参数本函数只能传入1/2个参数')
elif len(args) == 1:
self._plotref.set_data(list(range(len(args[0]))), args[0])
# 更新显示区域
self.axes.set_xlim(min(list(range(len(args[0])))), max(list(range(len(args[0])))))
self.axes.set_ylim(min(args[0]), max(args[0]))
# self.axes.set_ylim(0, 1.2)
# 绘制图像
self.draw()
elif len(args) == 2:
self._plotref.set_data(args[0], args[1])
# 更新显示区域
self.axes.set_xlim(min(args[0]), max(args[0]))
self.axes.set_ylim(min(args[1]), max(args[1]))
# self.axes.set_ylim(0, 1.2)
# 绘制图像
self.draw()
elif len(args) > 2:
raise ArgsError('传入了大于2个参数本函数只能传入1/2个参数')
except Exception:
traceback.print_exc()
# 画图类,用于:画出采集到的图像;显示帧流(光谱模式对准光纤)
class MatplotlibImageViewer(FigureCanvas):
def __init__(self, width=5, height=4, dpi=100):
# 第一步创建一个创建Figure
self.fig = Figure(figsize=(width, height), dpi=dpi)
# 第二步在父类中激活Figure窗口
# this is the Canvas Widget that displays the `figure`
# it takes the `figure` instance as a parameter to __init__
super(MatplotlibImageViewer, self).__init__(self.fig) # 此句必不可少,否则不能显示图形
# 第三步创建一个子图用于绘制图形用111表示子图编号如matlab的subplot(1,1,1)
self.axes = self.fig.add_subplot(1, 1, 1)
self._plotref = None # 这里代表图像
# 第四步:就是画图,【可以在此类中画,也可以在其它类中画】
def setImage(self, image, lowPercentile=0, highPercentile=100):
self.axes.set_xticks([])
self.axes.set_yticks([])
if self._plotref == None:
self._plotref = self.axes.imshow(image)
self.draw()
elif self._plotref is not None:
self._plotref.set_data(percentile_stretching(image, lowPercentile, highPercentile))
self.draw()
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
# self.graphWidget = QtSpectralViewer()
self.graphWidget = MatplotlibSpectralViewer(xlabel='Wavelength (nm)', ylabel='reflectance')
self.setCentralWidget(self.graphWidget)
self.x = list(range(100)) # 100 time points
self.y = [randint(0, 100) for _ in range(100)] # 100 data points
# self.graphWidget.setBackground('w')
pen = pg.mkPen(color=(255, 0, 0))
self.graphWidget.plot_wrap(self.x, self.y)
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.update_plot_data)
self.timer.start(10)
def update_plot_data(self):
self.x = self.x[1:] # Remove the first y element.
self.x.append(self.x[-1] + 1) # Add a new value 1 higher than the last.
self.y = self.y[1:] # Remove the first
self.y.append(randint(0, 100)) # Add a new random value.
# self.data_line.setData(self.x, self.y) # Update the data.
self.graphWidget.plot_wrap(self.x, self.y)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())

53
library/message_box.py Normal file
View File

@ -0,0 +1,53 @@
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.QtCore import Qt
import sys
from library.message_box_ui import *
class MessageBox(QDialog, Ui_message_box_ui):
def __init__(self, txt, parent=None):
'''
The super().__init__() method invokes the base class constructor from the MyForm class,
that is, the constructor of the QDialog class is invoked from MyForm class to indicate that
QDialog is displayed through this class iss a top-level window.
'''
super(MessageBox, self).__init__(parent)
self.setupUi(self)
# self.setWindowState(Qt.WindowMaximized) # 初始化时就最大化窗口
self.setWindowModality(Qt.ApplicationModal) # 阻塞此窗口只能在关闭此窗口之后才能操作后面的窗口但是不会阻塞调用此窗口的进程的代码此行代码必须放在show()函数之前
# self.setWindowModality(Qt.WindowModal)
# 无边框
# self.setWindowFlags(Qt.FramelessWindowHint)
self.txt = txt
self.info()
self.confirm_bt.clicked.connect(self.shutdown)
# 禁止调整大小
# self.setFixedSize(self.width(), self.height())
def info(self):
self.info_label.setText(self.txt)
# self.exec() # 阻塞调用此窗口后的进程的代码,只有此窗口返回后才能执行此窗口外的代码
# self.show() # 只是显示,不会阻塞任何代码
def shutdown(self):
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
x = MessageBox('请先曝光和采集暗电流!')
# x.show()
sys.exit(app.exec_())

90
library/message_box_ui.py Normal file
View File

@ -0,0 +1,90 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'message_box_ui.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_message_box_ui(object):
def setupUi(self, message_box_ui):
message_box_ui.setObjectName("message_box_ui")
message_box_ui.resize(487, 385)
self.gridLayout = QtWidgets.QGridLayout(message_box_ui)
self.gridLayout.setObjectName("gridLayout")
self.info_label = QtWidgets.QLabel(message_box_ui)
self.info_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:30pt;\n"
" /*字体颜色为白色*/\n"
" /*color:white;*/\n"
" /*背景颜色*/\n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:8px;*/\n"
"}")
self.info_label.setAlignment(QtCore.Qt.AlignCenter)
self.info_label.setObjectName("info_label")
self.gridLayout.addWidget(self.info_label, 0, 0, 1, 1)
self.confirm_bt = QtWidgets.QPushButton(message_box_ui)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.confirm_bt.sizePolicy().hasHeightForWidth())
self.confirm_bt.setSizePolicy(sizePolicy)
self.confirm_bt.setMinimumSize(QtCore.QSize(0, 130))
self.confirm_bt.setAcceptDrops(False)
self.confirm_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.confirm_bt.setObjectName("confirm_bt")
self.gridLayout.addWidget(self.confirm_bt, 1, 0, 1, 1)
self.retranslateUi(message_box_ui)
QtCore.QMetaObject.connectSlotsByName(message_box_ui)
def retranslateUi(self, message_box_ui):
_translate = QtCore.QCoreApplication.translate
message_box_ui.setWindowTitle(_translate("message_box_ui", "提示"))
self.info_label.setText(_translate("message_box_ui", "提示信息"))
self.confirm_bt.setText(_translate("message_box_ui", "确定"))

106
library/message_box_ui.ui Normal file
View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>message_box_ui</class>
<widget class="QDialog" name="message_box_ui">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>487</width>
<height>385</height>
</rect>
</property>
<property name="windowTitle">
<string>提示</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="info_label">
<property name="styleSheet">
<string notr="true">QLabel
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:30pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
/*background-color:rgb(14 , 150 , 254);*/
/*边框圆角半径为8像素*/
/*border-radius:8px;*/
}</string>
</property>
<property name="text">
<string>提示信息</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="confirm_bt">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>130</height>
</size>
</property>
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">/*按钮普通态*/
QPushButton
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:25pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
background-color:rgb(225 , 225 , 225);
/*边框圆角半径为8像素*/
border-radius:20px;
}
/*按钮停留态*/
QPushButton:hover
{
/*背景颜色*/
background-color:rgb(44 , 137 , 255);
/*边框圆角半径为8像素*/
/*border-radius:20px;*/
}
/*按钮按下态*/
QPushButton:pressed
{
/*背景颜色*/
background-color:rgb(255 , 0 , 0);
/*左内边距为3像素让按下时字向右移动3像素*/
padding-left:3px;
/*上内边距为3像素让按下时字向下移动3像素*/
padding-top:3px;
}</string>
</property>
<property name="text">
<string>确定</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

81
library/multithread.py Normal file
View File

@ -0,0 +1,81 @@
import sys, traceback
from PyQt5.QtCore import QRunnable, QObject, pyqtSignal, pyqtSlot
class WorkerSignals(QObject):
'''
Defines the signals available from a running worker thread.
Supported signals are:
finished
No data
error
`tuple` (exctype, value, traceback.format_exc() )
result
`object` data returned from processing, anything
progress
`int` indicating % progress
# 信号必须定义为类属性不能放在__init__方法里
'''
finished = pyqtSignal()
error = pyqtSignal(tuple)
result = pyqtSignal(object)
progress = pyqtSignal(int) # 可以用作进度条
serial = pyqtSignal(object) # 2record_system_v26的此信号移动到类SerialPort中了
image_signal = pyqtSignal(dict) # 只用在2record_system_v25中
spectral_signal = pyqtSignal(dict) # 只用在2record_system_v25中
openinfo = pyqtSignal(int) # 只用在2record_system_v25中
plotsignal = pyqtSignal() # 2record_system_v26的此信号移动到类ImageWindowPhone中了
# https://www.learnpyqt.com/courses/concurrent-execution/multithreading-pyqt-applications-qthreadpool/
# 用于qt多线程运行long-time task
class Worker(QRunnable):
'''
Worker thread
Inherits from QRunnable to handler worker thread setup, signals and wrap-up.
:param callback: The function callback to run on this worker thread. Supplied args and
kwargs will be passed through to the runner.
:type callback: function
:param args: Arguments to pass to the callback function
:param kwargs: Keywords to pass to the callback function
'''
def __init__(self, fn, *args, **kwargs):
super(Worker, self).__init__()
# Store constructor arguments (re-used for processing)
self.fn = fn
self.args = args
self.kwargs = kwargs
self.signals = WorkerSignals()
# Add the callback to our kwargs
# self.kwargs['progress_callback'] = self.signals.progress
@pyqtSlot()
def run(self):
'''
Initialise the runner function with passed args, kwargs.
'''
try: # 如果有错,就捕捉错误
result = self.fn(*self.args, **self.kwargs)
except Exception: # 根据错误进行处理
traceback.print_exc()
exctype, value = sys.exc_info()[:2]
self.signals.error.emit((exctype, value, traceback.format_exc()))
else: # 如果没有错误执行下面代码
self.signals.finished.emit() # Done
self.signals.result.emit(result) # Return the result of the processing
finally: # 不管有错无错,都要执行下面代码
pass

143
pyqt_multithread.py Normal file
View File

@ -0,0 +1,143 @@
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
import traceback, sys
class WorkerSignals(QObject):
'''
Defines the signals available from a running worker thread.
Supported signals are:
finished
No data
error
`tuple` (exctype, value, traceback.format_exc() )
result
`object` data returned from processing, anything
progress
`int` indicating % progress
'''
finished = pyqtSignal()
error = pyqtSignal(tuple)
result = pyqtSignal(object)
progress = pyqtSignal(int)
class Worker(QRunnable):
'''
Worker thread
Inherits from QRunnable to handler worker thread setup, signals and wrap-up.
:param callback: The function callback to run on this worker thread. Supplied args and
kwargs will be passed through to the runner.
:type callback: function
:param args: Arguments to pass to the callback function
:param kwargs: Keywords to pass to the callback function
'''
def __init__(self, fn, *args, **kwargs):
super(Worker, self).__init__()
# Store constructor arguments (re-used for processing)
self.fn = fn
self.args = args
self.kwargs = kwargs
self.signals = WorkerSignals()
# Add the callback to our kwargs
self.kwargs['progress_callback'] = self.signals.progress
@pyqtSlot()
def run(self):
'''
Initialise the runner function with passed args, kwargs.
'''
# Retrieve args/kwargs here; and fire processing using them
try:
result = self.fn(*self.args, **self.kwargs)
except:
traceback.print_exc()
exctype, value = sys.exc_info()[:2]
self.signals.error.emit((exctype, value, traceback.format_exc()))
else:
self.signals.result.emit(result) # Return the result of the processing
finally:
self.signals.finished.emit() # Done
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.counter = 0
layout = QVBoxLayout()
self.l = QLabel("Start")
b = QPushButton("DANGER!")
b.pressed.connect(self.oh_no)
layout.addWidget(self.l)
layout.addWidget(b)
w = QWidget()
w.setLayout(layout)
self.setCentralWidget(w)
self.show()
self.threadpool = QThreadPool()
print("Multithreading with maximum %d threads" % self.threadpool.maxThreadCount())
self.timer = QTimer()
self.timer.setInterval(1000)
self.timer.timeout.connect(self.recurring_timer)
self.timer.start()
def progress_fn(self, n):
print("%d%% done" % n)
def execute_this_fn(self, progress_callback):
for n in range(0, 5):
time.sleep(1)
progress_callback.emit(n * 100 / 4)
return "Done."
def print_output(self, s):
print(s)
def thread_complete(self):
print("THREAD COMPLETE!")
def oh_no(self):
# Pass the function to execute
worker = Worker(self.execute_this_fn) # Any other args, kwargs are passed to the run function
worker.signals.result.connect(self.print_output)
worker.signals.finished.connect(self.thread_complete)
worker.signals.progress.connect(self.progress_fn)
# Execute
self.threadpool.start(worker)
def recurring_timer(self):
self.counter += 1
self.l.setText("Counter: %d" % self.counter)
app = QApplication([])
window = MainWindow()
app.exec_()

View File

@ -0,0 +1,230 @@
from ximea import xiapi
import cv2
import numpy as np
import matplotlib.pyplot as plt
from osgeo import gdal #读写影像数据
import os, sys, traceback
import datetime # 几种Python执行时间的计算方法https://blog.csdn.net/wangshuang1631/article/details/54286551
#create instance for first connected camera
cam = xiapi.Camera()
#start communication to open specific device, use: cam.open_device_by_SN('41305651')
print('Opening first camera...')
cam.open_device()
# 打开相机后,显示相机信息
print('SN: %s'% str(cam.get_device_sn(), encoding = "utf-8"))
print('Device name: %s'% str(cam.get_device_name(), encoding = "utf-8"))
print('Device name: %s'% str(cam.get_device_type(), encoding = "utf-8"))
print('Instance path: %s'% str(cam.get_device_inst_path(), encoding = "utf-8")) # Returns device instance path in operating system.
print('Location path: %s'% str(cam.get_device_loc_path(), encoding = "utf-8"))
# debug_level、线程数和horizontal flip
print('Debug level: %s' % cam.get_debug_level())
print('Default number of threads per image processor: %d' % cam.get_proc_num_threads())
cam.set_proc_num_threads(8)
print('Current number of threads per image processor: %d' % cam.get_proc_num_threads())
print('Is horizontal flip enabled?, %s' % str(cam.is_horizontal_flip()))
#采集模式This mode is supported by selected camera families: CB, MC, MT, MX
cam.set_acq_timing_mode('XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
mode_used = cam.get_acq_timing_mode()
if mode_used == 'XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT':
print('Mode is XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
else:
print('Mode is not XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
sys.exit()
#settings,cam.set_param("exposure",10000)
exposure = 50
framerate = 2
cam.set_exposure(exposure)#曝光时间单位为微秒1s共有1000000微秒
cam.set_framerate(framerate)
print('Exposure was set to %i us' % cam.get_exposure())
print('Framerate was set to %i FPS' % cam.get_framerate())
# # 设置binning参数
# # XI_BIN_MODE_SUM默认: The response from the combined pixels will be added, resulting in increased sensitivity.
# # XI_BIN_MODE_AVERAGE: The response from the combined pixels will be averaged, resulting in increased signal/noise ratio.
bin_spec = 2
bin_spatial = 2
cam.set_binning_selector('XI_BIN_SELECT_HOST_CPU') # 默认为XI_BIN_SELECT_SENSOR(会报错)不可用XI_BIN_SELECT_DEVICE_FPGA
cam.set_binning_horizontal_mode('XI_BIN_MODE_SUM')
cam.set_binning_horizontal(bin_spatial)
cam.set_binning_vertical_mode('XI_BIN_MODE_SUM')
cam.set_binning_vertical(bin_spec)
# cam.get_width_increment() -->16
# cam.get_height_increment() -->2
# cam.get_offsetX_increment() -->16
# cam.get_offsetY_increment() -->2
# 设置有效输出窗口
if bin_spatial == 1:
cam.set_width(1392)
cam.set_offsetX(272)
cam.set_height(302)
cam.set_offsetY(338)
elif bin_spatial == 2:
cam.set_width(696)
cam.set_offsetX(128)
cam.set_height(151)
cam.set_offsetY(168)
# 创建img = xiapi.Image()前需要设置一系列img参数例如格式、位深度、
# 如果格式设置为XI_RAW8image_raw_numpy.dtype -> dtype('uint8'), uint8
# 如果格式设置为XI_RAW16image_raw_numpy.dtype -> dtype('<u2'), uint16
cam.set_imgdataformat('XI_RAW16')
cam.set_output_bit_depth("XI_BPP_16")
# cam.set_image_data_bit_depth("XI_BPP_16")
# cam.set_sensor_bit_depth("XI_BPP_16") # 报错
# cam.get_buffer_policy()
# create instance of Image to store image data and metadata
img = xiapi.Image()
# start data acquisition
print('Starting data acquisition...')
starttime = datetime.datetime.now()
framenumber = 10
image_container = np.empty((int(300 / bin_spec), framenumber, int(1364 / bin_spatial)))
if bin_spec == 1:
startRow = 1
endRow = 301
startColumn = 12
endColumn = 1376
if bin_spec == 2:
startRow = 169
endRow = 319
startColumn = 143
endColumn = 824
if bin_spec == 4:
startRow = 84
endRow = 159
startColumn = 71
endColumn = 412
# cam.set_framerate(int(framerate))
# cam.set_aeag_roi_offset_x(startColumn)
# cam.set_aeag_roi_offset_y(startRow)
# cam.set_aeag_roi_height(endRow - startRow)
# cam.set_aeag_roi_width(endColumn - startColumn)
# cam.enable_aeag() # 开启自动曝光
# cam.start_acquisition()
# for i in range(10):
# cam.get_image(img) # get data and pass them from camera to img
# cam.stop_acquisition()
# cam.disable_aeag() # 关闭自动曝光
print('Framerate was set to %i FPS' % cam.get_framerate())
print('Exposure was set to %i us' % cam.get_exposure())
print('Gain was set to %i dB' % cam.get_gain())
cam.start_acquisition()
for i in range(framenumber):
#get data and pass them from camera to img
cam.get_image(img)
#get raw data from camera
#for Python2.x function returns string
#for Python3.x function returns bytes
# data_raw = img.get_image_data_raw()
# print("第%d帧"% i)
# image_raw_numpy.dtype -> dtype('<u2'), uint16
# cornning 410的位深度为12所以尽管uint16能表达16位的数据但是相机返回的数据最大值依然为4095
image_raw_numpy = img.get_image_data_numpy()
print()
try:
if bin_spec == 1:
image_container[:, i, :] = image_raw_numpy[startRow:endRow, startColumn:endColumn]
if bin_spec == 2:
image_container[:, i, :] = image_raw_numpy[startRow:endRow, startColumn:endColumn]
if bin_spec == 4:
image_container[:, i, :] = image_raw_numpy[startRow:endRow, startColumn:endColumn]
except Exception:
traceback.print_exc()
# if i == 0:
# image_container[:, 0, :] = image_raw_numpy[340:640, 285:1650]
# elif i != 0:
# image_container = np.concatenate((image_container, image_raw_numpy[340:640, 285:1650].reshape(300, 1, 1365)), axis=1)
print(i)
# print(cam.get_framerate())
#stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()
endtime = datetime.datetime.now()
print('影像采集用时:%d'%(endtime - starttime).seconds)
#stop communication
cam.close_device()
class GRID:
#读图像文件
def read_img(self, filename):
try:
dataset = gdal.Open(filename) # 打开文件
im_width = dataset.RasterXSize # 栅格矩阵的列数
im_height = dataset.RasterYSize # 栅格矩阵的行数
num_bands = dataset.RasterCount # 栅格矩阵的波段数
im_geotrans = dataset.GetGeoTransform() # 仿射矩阵
im_proj = dataset.GetProjection() # 地图投影信息
im_data = dataset.ReadAsArray(0, 0, im_width, im_height) # 将数据写成数组,对应栅格矩阵
del dataset
return im_proj, im_geotrans, im_data
except:
sys.exit()
#写文件以写成tif为例
def write_img(self, dst_filename, data):
format = "ENVI"
driver = gdal.GetDriverByName(format)
RasterXSize = data.shape[2] # 遥感影像的sample列数
RasterYSize = data.shape[1] # 遥感影像的line行数
band = data.shape[0]
# driver.Create()函数中RasterXSize代表影像的sample列数RasterYSize代表影像的line行数
dst_ds = driver.Create(dst_filename, RasterXSize, RasterYSize, band, gdal.GDT_Float32)
for i in range(band):
dst_ds.GetRasterBand(i + 1).WriteArray(data[i, :, :]) # gdal的band从1开始所以dst_ds.GetRasterBand(i+1)
dst_ds = None
starttime_xie = datetime.datetime.now()
# dark_
im_driver = GRID()
# im_driver.write_img('jangnandaxue-焦距22' + str(exposure)+'_'+str(framerate)+'_'+str(34), image_container)
im_driver.write_img('ar-ren-bin2a---------------------', image_container)
endtime_xie = datetime.datetime.now()
print('影像写入磁盘用时:%d'%(endtime_xie - starttime_xie).seconds)
print('计算波长')
def calculate_wavelength(x):
wavelength = x*1.999564 - 279.893
return wavelength
wavelength = np.empty(300)
for i in range(340, 640):
wavelength[i-340] = calculate_wavelength(i)
plt.imshow(image_container[100, :, :])
plt.show()
print('Done.')

View File

@ -0,0 +1,142 @@
'''
在V1.1的版本上1实现了binning2探讨了三种将数据写入到硬盘上的方法的速度
'''
from ximea import xiapi
import cv2
import numpy as np
import matplotlib.pyplot as plt
from osgeo import gdal #读写影像数据
import os
import datetime # 几种Python执行时间的计算方法https://blog.csdn.net/wangshuang1631/article/details/54286551
import sys, struct
#create instance for first connected camera
cam = xiapi.Camera()
#start communication to open specific device, use: cam.open_device_by_SN('41305651')
print('Opening first camera...')
cam.open_device()
# 打开相机后,显示相机信息
print('SN: %s'% str(cam.get_device_sn(), encoding = "utf-8"))
print('Device name: %s'% str(cam.get_device_name(), encoding = "utf-8"))
print('Device name: %s'% str(cam.get_device_type(), encoding = "utf-8"))
print('Instance path: %s'% str(cam.get_device_inst_path(), encoding = "utf-8"))#Returns device instance path in operating system.
print('Location path: %s'% str(cam.get_device_loc_path(), encoding = "utf-8"))
# debug_level、线程数和horizontal flip
print('Debug level: %s'% cam.get_debug_level())
print('Default number of threads per image processor: %d'% cam.get_proc_num_threads())
cam.set_proc_num_threads(8)
print('Current number of threads per image processor: %d'% cam.get_proc_num_threads())
print('Is horizontal flip enabled?, %s'% str(cam.is_horizontal_flip()))
#采集模式This mode is supported by selected camera families: CB, MC, MT, MX
cam.set_acq_timing_mode('XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
mode_used = cam.get_acq_timing_mode()
if mode_used == 'XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT':
print('Mode is XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
else:
print('Mode is not XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
sys.exit()
# # 设置binning参数
# # XI_BIN_MODE_SUM默认: The response from the combined pixels will be added, resulting in increased sensitivity.
# # XI_BIN_MODE_AVERAGE: The response from the combined pixels will be averaged, resulting in increased signal/noise ratio.
# cam.set_binning_selector('XI_BIN_SELECT_HOST_CPU') #默认为XI_BIN_SELECT_SENSOR不可用XI_BIN_SELECT_DEVICE_FPGA
# cam.set_binning_horizontal_mode('XI_BIN_MODE_SUM')
# cam.set_binning_horizontal(2)
# cam.set_binning_vertical_mode('XI_BIN_MODE_SUM')
# cam.set_binning_vertical(2)
#settings,cam.set_param("exposure",10000)
exposure = 1000
cam.set_exposure(exposure)#曝光时间单位为微秒1s共有1000000微秒
framerate = 100
cam.set_framerate(framerate)
print('Exposure was set to %i us' %cam.get_exposure())
print('Framerate was set to %i FPS' %cam.get_framerate())
#创建img = xiapi.Image()前需要设置一系列img参数例如格式、位深度、
cam.set_imgdataformat('XI_RAW16')
# cam.get_buffer_policy()
#create instance of Image to store image data and metadata
img = xiapi.Image()
#start data acquisition
print('Starting data acquisition...')
framenumber = 2000
image_container = np.empty((3, framenumber, 1365))
f = open('delete3', 'wb')
cam.start_acquisition()
starttime = datetime.datetime.now()
for i in range(framenumber):
#get data and pass them from camera to img
cam.get_image(img)
#将每一帧有效数据写入文件,方法1通过struct.pack
'''
-------------------------struct.pack缺点----------------------------------------
Based on experience, I'd strongly advise against the use of struct.pack.
Its API requires you to demangle the array (i.e. use the * operator) into variables
which is going affect performance drastically for large array sizes.
Every element of the array will need a new, on-the-fly 64-bit pointer (on a 64-bit machine)
to be created on the stack to point into that element.
Just stick to tostring/tobytes/tofile to avoid this overhead.
For example, in our case, we were dealing with 100 Mb arrays which leads to a whopping 6.4 Gb of RAM so struct.pack can do its work.
'''
# f.write(struct.pack('f' * len(image_raw_numpy[339:639, 285:1650].flatten()),
# *image_raw_numpy[339:639, 285:1650].flatten())) # 这种通过struct的方式特别慢
# 将每一帧有效数据写入文件,方法2通过numpy.tobytes()
'''
丢帧说明:
帧率 丢帧率
50 0%
100 13%
150 17%
'''
image_raw_numpy = img.get_image_data_numpy()
image_container[:, i, :] = image_raw_numpy[339:639, 285:1650][[36, 76, 121]]
f.write(image_raw_numpy[339:639, 285:1650].flatten().tobytes())
# f.write(image_raw_numpy.flatten().tobytes())
# 将每一帧有效数据写入文件,方法3通过直接读取相机返回的字节流
'''丢帧说明:
帧率 丢帧率
50 0%
100 20%
150 60%
'''
# data_raw = img.get_image_data_raw() # data_raw是字节流一帧的字节流长度为4708352而一帧矩阵有多少个数1216*1936 = 2354176所以返回的数是2字节的短整型
# f.write(data_raw[1313180:2473636])
# f.write(data_raw)
endtime = datetime.datetime.now()
f.close()
print('影像采集用时:%d'%(endtime - starttime).seconds)
#stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()
#stop communication
cam.close_device()
plt.imshow(np.dstack((image_container[2, :, :], image_container[1, :, :],
image_container[0, :, :])))
plt.show()
print('Done.')

View File

@ -0,0 +1,158 @@
'''
在V1.2的版本上改进:
1自动曝光2显示光谱仪温度
'''
from ximea import xiapi
import cv2
import numpy as np
import matplotlib.pyplot as plt
from osgeo import gdal #读写影像数据
import os
import datetime # 几种Python执行时间的计算方法https://blog.csdn.net/wangshuang1631/article/details/54286551
import sys, struct
#create instance for first connected camera
cam = xiapi.Camera()
#start communication to open specific device, use: cam.open_device_by_SN('41305651')
print('Opening first camera...')
cam.open_device()
# 打开相机后,显示相机信息
print('SN: %s'% str(cam.get_device_sn(), encoding = "utf-8"))
print('Device name: %s'% str(cam.get_device_name(), encoding = "utf-8"))
print('Device name: %s'% str(cam.get_device_type(), encoding = "utf-8"))
print('Instance path: %s'% str(cam.get_device_inst_path(), encoding = "utf-8"))#Returns device instance path in operating system.
print('Location path: %s'% str(cam.get_device_loc_path(), encoding = "utf-8"))
# debug_level、线程数和horizontal flip
print('Debug level: %s'% cam.get_debug_level())
print('Default number of threads per image processor: %d'% cam.get_proc_num_threads())
cam.set_proc_num_threads(8)
print('Current number of threads per image processor: %d'% cam.get_proc_num_threads())
print('Is horizontal flip enabled?, %s'% str(cam.is_horizontal_flip()))
#采集模式This mode is supported by selected camera families: CB, MC, MT, MX
cam.set_acq_timing_mode('XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
mode_used = cam.get_acq_timing_mode()
if mode_used == 'XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT':
print('Mode is XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
else:
print('Mode is not XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
sys.exit()
# # 设置binning参数
# # XI_BIN_MODE_SUM默认: The response from the combined pixels will be added, resulting in increased sensitivity.
# # XI_BIN_MODE_AVERAGE: The response from the combined pixels will be averaged, resulting in increased signal/noise ratio.
# cam.set_binning_selector('XI_BIN_SELECT_HOST_CPU') #默认为XI_BIN_SELECT_SENSOR不可用XI_BIN_SELECT_DEVICE_FPGA
# cam.set_binning_horizontal_mode('XI_BIN_MODE_SUM')
# cam.set_binning_horizontal(2)
# cam.set_binning_vertical_mode('XI_BIN_MODE_SUM')
# cam.set_binning_vertical(2)
#settings,cam.set_param("exposure",10000)
framerate = 10
cam.set_framerate(framerate)
cam.set_aeag_roi_offset_x(286)
cam.set_aeag_roi_offset_y(340)
cam.set_aeag_roi_height(300)
cam.set_aeag_roi_width(1365)
# cam.set_exp_priority(1) # Exposure priority (0.8 - exposure 80%, gain 20%).XI_PRM_EXP_PRIORITY
# cam.set_ae_max_limit(24000) # Maximum time (us) used for exposure in AEAG procedureXI_PRM_AE_MAX_LIMIT
# cam.set_ag_max_limit(12)
# cam.set_aeag_level(50) # Average intensity of output signal AEAG should achieve(in %)XI_PRM_AEAG_LEVEL
cam.enable_aeag()
# exposure = 1000
# cam.set_exposure(exposure)#曝光时间单位为微秒1s共有1000000微秒
print('Framerate was set to %i FPS' %cam.get_framerate())
print('Exposure was set to %i us' %cam.get_exposure())
print('Gain was set to %i dB' %cam.get_gain())
#创建img = xiapi.Image()前需要设置一系列img参数例如格式、位深度、
cam.set_imgdataformat('XI_RAW16')
# cam.get_buffer_policy()
#create instance of Image to store image data and metadata
img = xiapi.Image()
#start data acquisition
print('Starting data acquisition...')
framenumber = 2000
image_container = np.empty((3, framenumber, 1365))
f = open('delete3', 'wb')
cam.start_acquisition()
starttime = datetime.datetime.now()
for i in range(framenumber):
#get data and pass them from camera to img
cam.get_image(img)
print('Exposure was set to %i us' % cam.get_exposure())
print('Gain was set to %i dB' % cam.get_gain())
#将每一帧有效数据写入文件,方法1通过struct.pack
'''
-------------------------struct.pack缺点----------------------------------------
Based on experience, I'd strongly advise against the use of struct.pack.
Its API requires you to demangle the array (i.e. use the * operator) into variables
which is going affect performance drastically for large array sizes.
Every element of the array will need a new, on-the-fly 64-bit pointer (on a 64-bit machine)
to be created on the stack to point into that element.
Just stick to tostring/tobytes/tofile to avoid this overhead.
For example, in our case, we were dealing with 100 Mb arrays which leads to a whopping 6.4 Gb of RAM so struct.pack can do its work.
'''
# f.write(struct.pack('f' * len(image_raw_numpy[339:639, 285:1650].flatten()),
# *image_raw_numpy[339:639, 285:1650].flatten())) # 这种通过struct的方式特别慢
# 将每一帧有效数据写入文件,方法2通过numpy.tobytes()
'''
丢帧说明:
帧率 丢帧率
50 0%
100 13%
150 17%
'''
# image_raw_numpy = img.get_image_data_numpy()
# image_container[:, i, :] = image_raw_numpy[339:639, 285:1650][[36, 76, 121]]
# f.write(image_raw_numpy[339:639, 285:1650].flatten().tobytes())
# # f.write(image_raw_numpy.flatten().tobytes())
# 将每一帧有效数据写入文件,方法3通过直接读取相机返回的字节流
'''丢帧说明:
帧率 丢帧率
50 0%
100 20%
150 60%
'''
# data_raw = img.get_image_data_raw() # data_raw是字节流一帧的字节流长度为4708352而一帧矩阵有多少个数1216*1936 = 2354176所以返回的数是2字节的短整型
# f.write(data_raw[1313180:2473636])
# f.write(data_raw)
endtime = datetime.datetime.now()
f.close()
print('影像采集用时:%d'%(endtime - starttime).seconds)
#stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()
#stop communication
cam.close_device()
plt.imshow(np.dstack((image_container[2, :, :], image_container[1, :, :],
image_container[0, :, :])))
plt.show()
print('Done.')

View File

@ -0,0 +1,569 @@
'''
在V1.3的版本上改进:
1使用界面PyQt5控制光谱仪的操作和显示
2界面分为两个部分一个是影像采集控制和显示一个是光谱采集控制和显示
'''
from ximea import xiapi
import numpy as np
import PIL
from osgeo import gdal #读写影像数据
import os, sys, functools, re, shutil
import datetime # 几种Python执行时间的计算方法https://blog.csdn.net/wangshuang1631/article/details/54286551
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, qApp, QDialog, QFileDialog
from PyQt5.QtCore import pyqtSignal, QObject, QRunnable, QThreadPool
from enter_window import *
from image_Window import *
from spectral_Window import *
import cv2
import matplotlib
matplotlib.use("Qt5Agg") # 声明使用QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
# 主窗口
class enter_window(QMainWindow, Ui_enter_Window):
def __init__(self, parent=None):
super(enter_window, self).__init__(parent)
self.setupUi(self)
# 在刚打开软件在本窗口显示相机状态(是否打开)
self.c = Communicate()
self.c.openinfo.connect(self.printCamInfo)
# self.end_Btn.clicked.connect(self.end_event) # 绑定登陆函数
# self.exit_Btn.clicked.connect(sys.exit)
def printCamInfo(self):
self.camstatus_tb.append('相机已打开!')
# 主窗口信号类
class Communicate(QObject):
openinfo = pyqtSignal()
# 图像窗口
class image_window(QDialog, Ui_image_Window):
def __init__(self, parent=None):
super(image_window, self).__init__(parent)
self.setupUi(self)
#初始化值
self.framenumber_le.setText('100')
self.framerate_le.setText('15')
self.exposureTime_le.setText('18000')
self.filename_le.setText('test')
self.filepath_le.setText(os.getcwd())
#触发事件
self.filepath_bt.clicked.connect(self.directory_select)
self.framenumber_le.textEdited.connect(self.onchange)
self.framerate_le.textEdited.connect(self.onchange)
self.exposureTime_le.textEdited.connect(self.onchange)
self.filename_le.textEdited.connect(self.onchange)
self.filepath_le.textEdited.connect(self.onchange)
self.dc_bt.clicked.connect(self.printDcInfo)
self.wb_bt.clicked.connect(self.printWbInfo)
self.save_bt.clicked.connect(self.printSaveInfo)
self.record_bt.clicked.connect(self.printRecordInfo)
# 显示影像和调焦
self.myImageFigure = MyImageFigure()
self.image_glo.addWidget(self.myImageFigure)
self.myFocusFigure = MyImageFigure()
self.focus_glo.addWidget(self.myFocusFigure)
def printDcInfo(self):
self.statu_tb.append('采集暗电流!')
def printWbInfo(self):
self.statu_tb.append('采集白板!')
def printRecordInfo(self):
self.statu_tb.append('采集影像!')
def printSaveInfo(self):
self.statu_tb.append('保存影像!')
def onchange(self):
camera_operation.framenumber_input = self.framenumber_le.text()
camera_operation.framerate_input = self.framerate_le.text()
camera_operation.exposureTime_input = self.exposureTime_le.text()
camera_operation.fn = self.filename_le.text()
camera_operation.fp = self.filepath_le.text()
def directory_select(self):
dirpath = QFileDialog.getExistingDirectory(self, '选择存储路径文件夹', '/home')
self.filepath_le.setText(dirpath)
camera_operation.fp = dirpath
# 图像窗口画图类
class MyImageFigure(FigureCanvas):
def __init__(self, width=5, height=4, dpi=100, ):
#第一步创建一个创建Figure
self.fig = plt.figure(figsize=(width, height), dpi=dpi)
#第二步在父类中激活Figure窗口
# this is the Canvas Widget that displays the `figure`
# it takes the `figure` instance as a parameter to __init__
super(MyImageFigure, self).__init__(self.fig) # 此句必不可少,否则不能显示图形
#第三步创建一个子图用于绘制图形用111表示子图编号如matlab的subplot(1,1,1)
self.axes = self.fig.add_subplot(1, 1, 1)
self.axes.set_title('tangchao')
#第四步:就是画图,【可以在此类中画,也可以在其它类中画】
def plot(self, img):
plt.imshow(img)
# 光谱窗口
class spectral_window(QDialog, Ui_spectral_Window):
def __init__(self, parent=None):
super(spectral_window, self).__init__(parent)
self.setupUi(self)
# 初始化值
self.filename_le.setText('test')
self.filepath_le.setText(os.getcwd())
# 触发事件
self.filepath_bt.clicked.connect(self.directory_select)
self.filename_le.textEdited.connect(self.onchange)
self.filepath_le.textEdited.connect(self.onchange)
self.dc_bt.clicked.connect(self.printDcInfo)
self.wb_bt.clicked.connect(self.printWbInfo)
self.record_bt.clicked.connect(self.printRecordInfo)
# 显示光谱
self.spectralFigure = MySpectralFigure()
self.spe_glo.addWidget(self.spectralFigure)
def printDcInfo(self):
self.statu_tb.append('采集暗电流!')
def printWbInfo(self):
self.statu_tb.append('采集白板!')
def printRecordInfo(self):
self.statu_tb.append('采集光谱!')
def onchange(self):
spectral_camera_operation.fn = self.filename_le.text()
spectral_camera_operation.fp = self.filepath_le.text()
def directory_select(self):
dirpath = QFileDialog.getExistingDirectory(self, '选择存储路径文件夹', '/home')
self.filepath_le.setText(dirpath)
spectral_camera_operation.fp = dirpath
# 光谱窗口画图类
class MySpectralFigure(FigureCanvas):
def __init__(self, width=5, height=4, dpi=100):
#第一步创建一个创建Figure
self.fig = Figure(figsize=(width, height), dpi=dpi)
#第二步在父类中激活Figure窗口
# this is the Canvas Widget that displays the `figure`
# it takes the `figure` instance as a parameter to __init__
super(MySpectralFigure, self).__init__(self.fig) # 此句必不可少,否则不能显示图形
#第三步创建一个子图用于绘制图形用111表示子图编号如matlab的subplot(1,1,1)
self.axes = self.fig.add_subplot(1, 1, 1)
#第四步:就是画图,【可以在此类中画,也可以在其它类中画】
def plot(self, y):
self.axes.plot(y)
# 读写影像类
class GRID(object):
#读图像文件
def read_img(self, filename):
try:
dataset = gdal.Open(filename) # 打开文件
im_width = dataset.RasterXSize # 栅格矩阵的列数
im_height = dataset.RasterYSize # 栅格矩阵的行数
num_bands = dataset.RasterCount # 栅格矩阵的波段数
im_geotrans = dataset.GetGeoTransform() # 仿射矩阵
im_proj = dataset.GetProjection() # 地图投影信息
im_data = dataset.ReadAsArray(0, 0, im_width, im_height) # 将数据写成数组,对应栅格矩阵
del dataset
return im_proj, im_geotrans, im_data
except:
sys.exit()
#写文件以写成tif为例
def write_img(self, dst_filename, data):
format = "ENVI"
driver = gdal.GetDriverByName(format)
RasterXSize = data.shape[2] # 遥感影像的sample列数
RasterYSize = data.shape[1] # 遥感影像的line行数
band = data.shape[0]
# driver.Create()函数中RasterXSize代表影像的sample列数RasterYSize代表影像的line行数
dst_ds = driver.Create(dst_filename, RasterXSize, RasterYSize, band, gdal.GDT_Float32)
for i in range(band):
dst_ds.GetRasterBand(i + 1).WriteArray(data[i, :, :]) # gdal的band从1开始所以dst_ds.GetRasterBand(i+1)
dst_ds = None
# 影像模式类:相关的函数和变量
class camera_operation(object):
"""
在此版本的软件中关于按钮点击控制光谱仪采集操作的绑定函数都放在了if __name__ == '__main__':中
"""
#设置曝光时间和帧率
framerate_input = 15 #随便给个初始值(初始值要和framerate_le控件初始值一致)从image_window获取的手动输入的帧率
exposureTime_input = 18000
@classmethod
def set_exposureTime(cls, cam):
# settings,cam.set_param("exposure",10000)
cam.set_framerate(int(camera_operation.framerate_input))
cam.set_exposure(int(camera_operation.exposureTime_input)) # 曝光时间单位为微秒1s共有1000000微秒
# print('Exposure was set to %i us' % cam.get_exposure())
# print('Framerate was set to %i FPS' % cam.get_framerate())
image_window_instance.statu_tb.append('Exposure was set to ' + str(cam.get_exposure()) + ' us')
image_window_instance.statu_tb.append('Framerate was set to ' + str(cam.get_framerate()) + ' FPS')
#开始采集数据
framenumber_input = 100 #随便给个初始值(初始值要和framenumber_le控件初始值一致)从image_window获取的手动输入的帧数
image_dc = 1 # 随便给个初始值,此变量用于存储采集到的暗电流影像
image_wb = 1 # 随便给个初始值,此变量用于存储采集到的白板影像
focus = True # 用于调焦
@classmethod
def start_AcquireData(cls, cam):
# 创建img = xiapi.Image()前需要设置一系列img参数例如格式、位深度、
cam.set_imgdataformat('XI_RAW16')
# create instance of Image to store image data and metadata
img = xiapi.Image()
# cam.get_buffer_policy()
print('Starting data acquisition...')
starttime = datetime.datetime.now()
# 如果点击“调焦”按钮
if image_window_instance.sender().objectName() == 'focus_bt':
# camera_operation.set_exposureTime(cam)
cam.start_acquisition()
while camera_operation.focus:
cam.get_image(img) # get data and pass them from camera to img
image_raw_numpy = img.get_image_data_numpy()
image_container = image_raw_numpy[339:639, 285:1650]
image_window_instance.myFocusFigure.plot(image_container)
image_window_instance.myFocusFigure.draw()
# 如果点击“白板”按钮采集并保存白板影像到image_wb
if image_window_instance.sender().objectName() == 'wb_bt':
framenumber = 10
cam.start_acquisition()
image_container = np.empty((300, framenumber, 1365))
for i in range(framenumber):
cam.get_image(img) # get data and pass them from camera to img
image_raw_numpy = img.get_image_data_numpy()
image_container[:, i, :] = image_raw_numpy[339:639, 285:1650]
camera_operation.image_wb = image_container.mean(axis=1)
# 如果点击“暗电流”按钮采集并保存暗电流影像到image_dc
if image_window_instance.sender().objectName() == 'dc_bt':
framenumber = 10
cam.start_acquisition()
image_container = np.empty((300, framenumber, 1365))
for i in range(framenumber):
cam.get_image(img) # get data and pass them from camera to img
image_raw_numpy = img.get_image_data_numpy()
image_container[:, i, :] = image_raw_numpy[339:639, 285:1650]
camera_operation.image_dc = image_container.mean(axis=1)
#如果点击“采集”按钮,自动去除暗电流,并且转化成反射率
if image_window_instance.sender().objectName() == 'record_bt':
framenumber = int(camera_operation.framenumber_input)
cam.start_acquisition()
rgb = np.empty((3, framenumber, 1365))
with open('corning410_test', 'wb') as f:
for i in range(framenumber):
cam.get_image(img) # get data and pass them from camera to img
image_raw_numpy = img.get_image_data_numpy()
image_container = image_raw_numpy[339:639, 285:1650]
# 去除暗电流和转反射率
if type(camera_operation.image_dc) is np.ndarray or type(camera_operation.image_wb) is np.ndarray:
image_container = (image_container - camera_operation.image_dc).astype(
np.float) / camera_operation.image_wb.astype(np.float)
rgb[:, i, :] = image_container[[36, 76, 121]]
f.write(image_container.flatten().tobytes())
# 如果再这里每采集一帧就画出来,会非常影响采集速率,造成采集很慢
# image_window_instance.myImageFigure.plot(image_container[1, :, :])
# image_window_instance.myImageFigure.draw()
# 画出影像
# image_window_instance.myImageFigure.plot(
# np.dstack((image_container[121, :, :].astype(np.int), image_container[76, :, :].astype(np.int),
# image_container[36, :, :].astype(np.int))))
try:
image_window_instance.myImageFigure.plot(
np.dstack((rgb[2, :, :], rgb[1, :, :], rgb[0, :, :])))
image_window_instance.myImageFigure.draw()
finally:
print('画图出错')
endtime = datetime.datetime.now()
print('影像采集用时:%d' % (endtime - starttime).seconds)
# stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()
#停止采集数据、计算波长、数据写入硬盘
@classmethod
def stop_AcquireDta(cls, cam, image_container, exposure = 400000, framerate = 90):
# stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()
#保存数据
fp = os.getcwd() #随便给个初始值(初始值要和filepath_le控件初始值一致)从image_window获取的手动输入的文件保存路径
fn = 'test' #随便给个初始值(初始值要和filename_le控件初始值一致)从image_window获取的手动输入的帧率
@classmethod
def savedata(cls):
# 保存路径
filename = re.sub('/', '\\\\', camera_operation.fp) + '\\' + camera_operation.fn
#保存影像
imagefile = os.getcwd() + '\\' + 'corning410_test'
shutil.copyfile(imagefile, filename)
# 创建头文件,写入波长
with open(filename + '.hdr', mode='w') as out_hdr: # python读取已存在txt文件时读写模式为'r+',不是'r+w'w模式时如果文件不存在会创建文件
out_hdr.write('ENVI\n')
out_hdr.write('samples = 1365\n')
out_hdr.write('lines = ' + str(camera_operation.framenumber_input) + '\n')
out_hdr.write('bands = 300\n')
out_hdr.write('header offset = 0\n'
'file type = ENVI Standard\n')
out_hdr.write('data type = 4\ninterleave = bil\nbyte order = 0\n')
out_hdr.write('exposure = ' + str(camera_operation.exposureTime_input) + '\n')
out_hdr.write('framerate = ' + str(camera_operation.framerate_input) + '\n')
out_hdr.write('wavelength= {399.95876000000004, 401.958324, 403.95788799999997, 405.95745200000005, 407.957016, 409.95658, 411.95614399999994, 413.955708, 415.955272, 417.95483599999994, 419.9544, 421.953964, 423.95352799999995, 425.953092, 427.952656, 429.95221999999995, 431.95178400000003, 433.951348, 435.95091199999996, 437.95047600000004, 439.95004, 441.94960399999997, 443.94916800000004, 445.948732, 447.94829599999997, 449.94785999999993, 451.947424, 453.946988, 455.94655199999994, 457.946116, 459.94568, 461.94524399999995, 463.944808, 465.944372, 467.94393599999995, 469.94350000000003, 471.943064, 473.94262799999996, 475.94219200000003, 477.941756, 479.94131999999996, 481.94088400000004, 483.940448, 485.94001199999997, 487.93957600000005, 489.93914, 491.938704, 493.93826799999994, 495.937832, 497.937396, 499.93695999999994, 501.936524, 503.936088, 505.93565199999995, 507.935216, 509.93478, 511.93434399999995, 513.933908, 515.9334719999999, 517.9330359999999, 519.9326000000001, 521.9321640000001, 523.931728, 525.931292, 527.930856, 529.9304199999999, 531.9299839999999, 533.9295480000001, 535.929112, 537.928676, 539.92824, 541.9278039999999, 543.9273679999999, 545.9269320000001, 547.926496, 549.92606, 551.925624, 553.9251879999999, 555.9247519999999, 557.9243160000001, 559.92388, 561.923444, 563.923008, 565.922572, 567.9221359999999, 569.9216999999999, 571.9212640000001, 573.920828, 575.920392, 577.919956, 579.9195199999999, 581.9190839999999, 583.9186480000001, 585.918212, 587.917776, 589.91734, 591.9169039999999, 593.9164679999999, 595.9160320000001, 597.915596, 599.91516, 601.914724, 603.9142879999999, 605.9138519999999, 607.9134159999999, 609.9129800000001, 611.912544, 613.912108, 615.911672, 617.9112359999999, 619.9107999999999, 621.9103640000001, 623.909928, 625.909492, 627.909056, 629.9086199999999, 631.9081839999999, 633.9077480000001, 635.907312, 637.906876, 639.90644, 641.9060039999999, 643.9055679999999, 645.9051319999999, 647.9046960000001, 649.90426, 651.903824, 653.903388, 655.9029519999999, 657.9025159999999, 659.9020800000001, 661.901644, 663.901208, 665.900772, 667.9003359999999, 669.8998999999999, 671.8994640000001, 673.899028, 675.898592, 677.898156, 679.8977199999999, 681.8972839999999, 683.8968480000001, 685.896412, 687.895976, 689.89554, 691.895104, 693.8946679999999, 695.8942319999999, 697.8937960000001, 699.89336, 701.892924, 703.892488, 705.8920519999999, 707.8916159999999, 709.8911800000001, 711.890744, 713.890308, 715.889872, 717.8894359999999, 719.8889999999999, 721.8885640000001, 723.888128, 725.887692, 727.887256, 729.88682, 731.8863839999999, 733.8859479999999, 735.8855120000001, 737.885076, 739.88464, 741.884204, 743.8837679999999, 745.8833319999999, 747.8828959999998, 749.8824599999998, 751.882024, 753.881588, 755.8811519999999, 757.8807159999999, 759.8802799999999, 761.8798439999998, 763.879408, 765.878972, 767.8785359999999, 769.8780999999999, 771.8776639999999, 773.8772279999998, 775.876792, 777.876356, 779.87592, 781.8754839999999, 783.8750479999999, 785.8746119999998, 787.8741759999998, 789.87374, 791.873304, 793.8728679999999, 795.8724319999999, 797.8719959999999, 799.8715599999998, 801.871124, 803.870688, 805.8702519999999, 807.8698159999999, 809.8693799999999, 811.8689439999998, 813.868508, 815.868072, 817.867636, 819.8671999999999, 821.8667639999999, 823.8663279999998, 825.8658919999998, 827.865456, 829.86502, 831.8645839999999, 833.8641479999999, 835.8637119999999, 837.8632759999998, 839.86284, 841.862404, 843.8619679999999, 845.8615319999999, 847.8610959999999, 849.8606599999998, 851.860224, 853.859788, 855.859352, 857.8589159999999, 859.8584799999999, 861.8580439999998, 863.8576079999998, 865.857172, 867.856736, 869.8562999999999, 871.8558639999999, 873.8554279999998, 875.8549919999998, 877.854556, 879.85412, 881.8536839999999, 883.8532479999999, 885.8528119999999, 887.8523759999998, 889.85194, 891.851504, 893.8510679999999, 895.8506319999999, 897.8501959999999, 899.8497599999998, 901.8493239999998, 903.848888, 905.848452, 907.8480159999999, 909.8475799999999, 911.8471439999998, 913.8467079999998, 915.846272, 917.845836, 919.8453999999999, 921.8449639999999, 923.8445279999999, 925.8440919999998, 927.843656, 929.84322, 931.8427839999999, 933.8423479999999, 935.8419119999999, 937.8414759999998, 939.84104, 941.840604, 943.840168, 945.8397319999999, 947.8392959999999, 949.8388599999998, 951.8384239999998, 953.837988, 955.837552, 957.8371159999999, 959.8366799999999, 961.8362439999999, 963.8358079999998, 965.835372, 967.834936, 969.8344999999999, 971.8340639999999, 973.8336279999999, 975.8331919999998, 977.832756, 979.83232, 981.831884, 983.8314479999999, 985.8310119999999, 987.8305759999998, 989.8301399999998, 991.829704, 993.829268, 995.8288319999999, 997.8283959999999}')
@classmethod
def close_camera(cls, cam):
# stop communication
cam.close_device()
# 光谱模式类:相关的函数和变量
class spectral_camera_operation(object):
"""
在此版本的软件中关于按钮点击控制光谱仪采集操作的绑定函数都放在了if __name__ == '__main__':中
"""
#设置曝光时间和帧率
@classmethod
def set_exposureTime(cls, cam, exposure = 40000000):
# settings,cam.set_param("exposure",10000)
cam.set_exposure(exposure) # 曝光时间单位为微秒1s共有1000000微秒
cam.set_framerate(9)
# print('Exposure was set to %i us' % cam.get_exposure())
# print('Framerate was set to %i FPS' % cam.get_framerate())
spectral_window_instance.statu_tb.append('Exposure was set to ' + str(cam.get_exposure()) + ' us')
spectral_window_instance.statu_tb.append('Framerate was set to ' + str(cam.get_framerate()) + ' FPS')
#开始采集数据
fp = os.getcwd() # 随便给个初始值(初始值要和filepath_le控件初始值一致)从spectral_window获取的手动输入的帧率
fn = 'test' # 随便给个初始值(初始值要和filename_le控件初始值一致)从spectral_window获取的手动输入的帧率
image_dc = 1 # 随便给个初始值,此变量用于存储采集到的暗电流影像
spectral_wb = 1 # 随便给个初始值,此变量用于存储采集到的白板光谱
spectral = np.empty((300, 10)).astype(np.float) # 此ndarray用于存储采集到的目标物光谱每一列为一个光谱
@classmethod
def start_AcquireData(cls, cam):
# 创建img = xiapi.Image()前需要设置一系列img参数例如格式、位深度、
cam.set_imgdataformat('XI_RAW16')
# create instance of Image to store image data and metadata
img = xiapi.Image()
framenumber = 10 #每条光谱采集帧数
spectralNumber = 10 #每次采集的光谱数
spectralNumber_wb = 1 #每次采集的白板的光谱数
spectral_container = np.empty((300, framenumber, 3))
print('Starting data acquisition...')
starttime = datetime.datetime.now()
# 如果点击暗“暗电流”按钮
if spectral_window_instance.sender().objectName() == 'dc_bt':
cam.start_acquisition()
for i in range(framenumber):
cam.get_image(img) # get data and pass them from camera to img
image_raw_numpy = img.get_image_data_numpy()
spectral_container[:, i, :] = image_raw_numpy[339:639, 967:970]
spectral_camera_operation.image_dc = spectral_container.mean(axis=1)
# 如果点击“曝光/白板”按钮
if spectral_window_instance.sender().objectName() == 'wb_bt':
cam.start_acquisition()
for j in range(spectralNumber_wb):
for i in range(framenumber):
cam.get_image(img) # get data and pass them from camera to img
image_raw_numpy = img.get_image_data_numpy()
spectral_container[:, i, :] = image_raw_numpy[339:639, 967:970]
for i in range(framenumber):#去除暗电流
spectral_container[:, i, :] -= spectral_camera_operation.image_dc
# spectral_camera_operation.spectral_wb = spectral_container.mean(axis=1).mean(axis=1)
spectral_camera_operation.spectral_wb = spectral_container.mean(axis=1)
# 如果点击“采集”按钮,自动去除暗电流,并且转化成反射率
if spectral_window_instance.sender().objectName() == 'record_bt':
spectral_camera_operation.spectral = np.empty((300, 10)).astype(np.float) # 当第二次点击“采集”按钮时保证将上一次的数据清除
cam.start_acquisition()
for j in range(spectralNumber):
for i in range(framenumber):
cam.get_image(img) # get data and pass them from camera to img
image_raw_numpy = img.get_image_data_numpy()
spectral_container[:, i, :] = image_raw_numpy[339:639, 967:970]
for i in range(framenumber): #去除暗电流
spectral_container[:, i, :] -= spectral_camera_operation.image_dc
# 转反射率
# spectral_container = spectral_container.mean(axis=1).mean(axis=1).astype(
# np.float) / spectral_camera_operation.spectral_wb.astype(np.float)
for i in range(framenumber): #每一帧除以白板光谱
spectral_container[:, i, :] = spectral_container[:, i, :] / spectral_camera_operation.spectral_wb
spectral_container = spectral_container.mean(axis=1).mean(axis=1)
spectral_camera_operation.spectral[:, j] = spectral_container
# 画出光谱
spectral_window_instance.spectralFigure.plot(spectral_container)
spectral_window_instance.spectralFigure.draw()
# 保证当第二次点击“采集”按钮时spectral_container已经初始化
spectral_container = np.empty((300, framenumber, 3))
# # 计算波长
def calculate_wavelength(x):
wavelength = x * 1.999564 - 279.893
return wavelength
wavelength = np.empty(300)
for i in range(340, 640):
wavelength[i - 340] = calculate_wavelength(i)
# 保存光谱为txt文件
spectral_camera_operation.spectral = np.insert(spectral_camera_operation.spectral, 0, wavelength, axis=1)
for i in range(spectralNumber):
np.savetxt(spectral_camera_operation.fp + '\\' + spectral_camera_operation.fn + str(i) + '.txt',
spectral_camera_operation.spectral[:, [0, i + 1]], fmt='%f')
endtime = datetime.datetime.now()
print('光谱采集用时:%d' % (endtime - starttime).seconds)
# stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()
@classmethod
def close_camera(cls, cam):
# stop communication
cam.close_device()
# 打开相机
def open_camera():
# create instance for first connected camera
cam = xiapi.Camera()
# start communication to open specific device, use: cam.open_device_by_SN('41305651')
print('Opening first camera...')
cam.open_device()
# 打开相机后,显示相机信息
print('SN: %s' % str(cam.get_device_sn(), encoding="utf-8"))
print('Device name: %s' % str(cam.get_device_name(), encoding="utf-8"))
print('Device name: %s' % str(cam.get_device_type(), encoding="utf-8"))
print('Instance path: %s' % str(cam.get_device_inst_path(),
encoding="utf-8")) # Returns device instance path in operating system.
print('Location path: %s' % str(cam.get_device_loc_path(), encoding="utf-8"))
print('Debug level: %s' % cam.get_debug_level())
print('Default number of threads per image processor: %d' % cam.get_proc_num_threads())
cam.set_proc_num_threads(8)
print('Current number of threads per image processor: %d' % cam.get_proc_num_threads())
print('Is horizontal flip enabled?, %s' % str(cam.is_horizontal_flip()))
print()
# This mode is supported by selected camera families: CB, MC, MT, MX
cam.set_acq_timing_mode('XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
mode_used = cam.get_acq_timing_mode()
if mode_used == 'XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT':
print('Mode is XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
else:
print('Mode is not XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
sys.exit()
return cam
if __name__ == '__main__':
app = QApplication(sys.argv)
camera = open_camera()
# 实例化3个窗口
enter_window_instance = enter_window()
enter_window_instance.setWindowTitle('主窗口')
image_window_instance = image_window()
image_window_instance.setWindowTitle('影像窗口')
spectral_window_instance = spectral_window()
spectral_window_instance.setWindowTitle('光谱窗口')
enter_window_instance.c.openinfo.emit()
# 从主窗口弹出影像窗口和光谱窗口
enter_window_instance.image_mode_bt.clicked.connect(image_window_instance.show)
enter_window_instance.spectral_mode_bt.clicked.connect(spectral_window_instance.show)
########################################################影像窗口操作########################################################################
# 设置曝光时间帧率设置放在image_window类中实现
img_e_bt = image_window_instance.exposureTime_bt
img_e_bt.clicked.connect(functools.partial(camera_operation.set_exposureTime, camera))
# 暗电流/白板
image_window_instance.dc_bt.clicked.connect(functools.partial(camera_operation.start_AcquireData, camera))
image_window_instance.wb_bt.clicked.connect(functools.partial(camera_operation.start_AcquireData, camera))
# 采集影像
image_window_instance.record_bt.clicked.connect(functools.partial(camera_operation.start_AcquireData, camera))
image_window_instance.focus_bt.clicked.connect(functools.partial(camera_operation.start_AcquireData, camera))
# 保存影像
image_window_instance.save_bt.clicked.connect(camera_operation.savedata)
########################################################光谱窗口操作########################################################################
# 设置曝光时间帧率设置放在image_window类中实现
spec_e_bt = spectral_window_instance.wb_bt
spec_e_bt.clicked.connect(functools.partial(spectral_camera_operation.set_exposureTime, camera))
# 暗电流/白板
spectral_window_instance.dc_bt.clicked.connect(functools.partial(spectral_camera_operation.start_AcquireData, camera))
spectral_window_instance.wb_bt.clicked.connect(functools.partial(spectral_camera_operation.start_AcquireData, camera))
# 采集光谱
spectral_window_instance.record_bt.clicked.connect(functools.partial(spectral_camera_operation.start_AcquireData, camera))
enter_window_instance.show()
sys.exit(app.exec_())

View File

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'arcus_control_ui.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_arcus_ui(object):
def setupUi(self, arcus_ui):
arcus_ui.setObjectName("arcus_ui")
arcus_ui.resize(354, 171)
self.centralwidget = QtWidgets.QWidget(arcus_ui)
self.centralwidget.setObjectName("centralwidget")
self.left_btn = QtWidgets.QPushButton(self.centralwidget)
self.left_btn.setGeometry(QtCore.QRect(100, 90, 61, 21))
self.left_btn.setObjectName("left_btn")
self.right_btn = QtWidgets.QPushButton(self.centralwidget)
self.right_btn.setGeometry(QtCore.QRect(170, 90, 61, 23))
self.right_btn.setObjectName("right_btn")
self.speed_lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.speed_lineEdit.setGeometry(QtCore.QRect(101, 10, 131, 20))
self.speed_lineEdit.setObjectName("speed_lineEdit")
self.speed_ScrollBar = QtWidgets.QScrollBar(self.centralwidget)
self.speed_ScrollBar.setGeometry(QtCore.QRect(100, 40, 131, 20))
self.speed_ScrollBar.setOrientation(QtCore.Qt.Horizontal)
self.speed_ScrollBar.setObjectName("speed_ScrollBar")
arcus_ui.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(arcus_ui)
self.menubar.setGeometry(QtCore.QRect(0, 0, 354, 23))
self.menubar.setObjectName("menubar")
arcus_ui.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(arcus_ui)
self.statusbar.setObjectName("statusbar")
arcus_ui.setStatusBar(self.statusbar)
self.retranslateUi(arcus_ui)
QtCore.QMetaObject.connectSlotsByName(arcus_ui)
def retranslateUi(self, arcus_ui):
_translate = QtCore.QCoreApplication.translate
arcus_ui.setWindowTitle(_translate("arcus_ui", "MainWindow"))
self.left_btn.setText(_translate("arcus_ui", ""))
self.right_btn.setText(_translate("arcus_ui", ""))

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>arcus_ui</class>
<widget class="QMainWindow" name="arcus_ui">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>171</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="left_btn">
<property name="geometry">
<rect>
<x>100</x>
<y>90</y>
<width>61</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>左</string>
</property>
</widget>
<widget class="QPushButton" name="right_btn">
<property name="geometry">
<rect>
<x>170</x>
<y>90</y>
<width>61</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>右</string>
</property>
</widget>
<widget class="QLineEdit" name="speed_lineEdit">
<property name="geometry">
<rect>
<x>101</x>
<y>10</y>
<width>131</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QScrollBar" name="speed_ScrollBar">
<property name="geometry">
<rect>
<x>100</x>
<y>40</y>
<width>131</width>
<height>20</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'enter_window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_enter_Window(object):
def setupUi(self, enter_Window):
enter_Window.setObjectName("enter_Window")
enter_Window.resize(651, 474)
self.centralwidget = QtWidgets.QWidget(enter_Window)
self.centralwidget.setObjectName("centralwidget")
self.image_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.image_mode_bt.setGeometry(QtCore.QRect(200, 180, 111, 51))
self.image_mode_bt.setObjectName("image_mode_bt")
self.spectral_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.spectral_mode_bt.setGeometry(QtCore.QRect(360, 180, 111, 51))
self.spectral_mode_bt.setObjectName("spectral_mode_bt")
self.camstatus_tb = QtWidgets.QTextBrowser(self.centralwidget)
self.camstatus_tb.setGeometry(QtCore.QRect(200, 240, 271, 81))
self.camstatus_tb.setObjectName("camstatus_tb")
enter_Window.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(enter_Window)
self.menubar.setGeometry(QtCore.QRect(0, 0, 651, 26))
self.menubar.setObjectName("menubar")
enter_Window.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(enter_Window)
self.statusbar.setObjectName("statusbar")
enter_Window.setStatusBar(self.statusbar)
self.actionwew_e = QtWidgets.QAction(enter_Window)
self.actionwew_e.setObjectName("actionwew_e")
self.retranslateUi(enter_Window)
QtCore.QMetaObject.connectSlotsByName(enter_Window)
def retranslateUi(self, enter_Window):
_translate = QtCore.QCoreApplication.translate
enter_Window.setWindowTitle(_translate("enter_Window", "主窗口"))
self.image_mode_bt.setText(_translate("enter_Window", "影像模式"))
self.spectral_mode_bt.setText(_translate("enter_Window", "光谱模式"))
self.actionwew_e.setText(_translate("enter_Window", "wew e"))

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>enter_Window</class>
<widget class="QMainWindow" name="enter_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>474</height>
</rect>
</property>
<property name="windowTitle">
<string>主窗口</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="image_mode_bt">
<property name="geometry">
<rect>
<x>200</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>影像模式</string>
</property>
</widget>
<widget class="QPushButton" name="spectral_mode_bt">
<property name="geometry">
<rect>
<x>360</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>光谱模式</string>
</property>
</widget>
<widget class="QTextBrowser" name="camstatus_tb">
<property name="geometry">
<rect>
<x>200</x>
<y>240</y>
<width>271</width>
<height>81</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>26</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionwew_e">
<property name="text">
<string>wew e</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,231 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'image_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_image_Window(object):
def setupUi(self, image_Window):
image_Window.setObjectName("image_Window")
image_Window.setEnabled(True)
image_Window.resize(1181, 683)
image_Window.setMouseTracking(False)
image_Window.setAutoFillBackground(False)
image_Window.setSizeGripEnabled(False)
image_Window.setModal(False)
self.verticalLayout_7 = QtWidgets.QVBoxLayout(image_Window)
self.verticalLayout_7.setObjectName("verticalLayout_7")
self.groupBox_5 = QtWidgets.QGroupBox(image_Window)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_5.sizePolicy().hasHeightForWidth())
self.groupBox_5.setSizePolicy(sizePolicy)
self.groupBox_5.setObjectName("groupBox_5")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.groupBox_5)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem)
self.splitter_3 = QtWidgets.QSplitter(self.groupBox_5)
self.splitter_3.setOrientation(QtCore.Qt.Horizontal)
self.splitter_3.setObjectName("splitter_3")
self.layoutWidget = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.layoutWidget)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.label_4 = QtWidgets.QLabel(self.layoutWidget)
self.label_4.setObjectName("label_4")
self.verticalLayout.addWidget(self.label_4)
self.layoutWidget1 = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget1.setObjectName("layoutWidget1")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.filepath_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filepath_le.setObjectName("filepath_le")
self.verticalLayout_2.addWidget(self.filepath_le)
self.filename_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filename_le.setObjectName("filename_le")
self.verticalLayout_2.addWidget(self.filename_le)
self.layoutWidget2 = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget2.setObjectName("layoutWidget2")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.layoutWidget2)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.filepath_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.filepath_bt.setObjectName("filepath_bt")
self.verticalLayout_3.addWidget(self.filepath_bt)
self.save_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.save_bt.setObjectName("save_bt")
self.verticalLayout_3.addWidget(self.save_bt)
self.horizontalLayout_4.addWidget(self.splitter_3)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem1)
self.verticalLayout_7.addWidget(self.groupBox_5)
self.splitter = QtWidgets.QSplitter(image_Window)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setObjectName("splitter")
self.groupBox_3 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth())
self.groupBox_3.setSizePolicy(sizePolicy)
self.groupBox_3.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox_3.setMaximumSize(QtCore.QSize(2000, 16777215))
self.groupBox_3.setObjectName("groupBox_3")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_3)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.groupBox = QtWidgets.QGroupBox(self.groupBox_3)
self.groupBox.setObjectName("groupBox")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox)
self.horizontalLayout.setObjectName("horizontalLayout")
self.image_glo = QtWidgets.QGridLayout()
self.image_glo.setObjectName("image_glo")
self.horizontalLayout.addLayout(self.image_glo)
self.verticalLayout_4.addWidget(self.groupBox)
self.statu_tb = QtWidgets.QTextBrowser(self.groupBox_3)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.statu_tb.sizePolicy().hasHeightForWidth())
self.statu_tb.setSizePolicy(sizePolicy)
self.statu_tb.setMaximumSize(QtCore.QSize(8777215, 100))
self.statu_tb.setReadOnly(True)
self.statu_tb.setObjectName("statu_tb")
self.verticalLayout_4.addWidget(self.statu_tb)
self.groupBox_4 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_4.sizePolicy().hasHeightForWidth())
self.groupBox_4.setSizePolicy(sizePolicy)
self.groupBox_4.setObjectName("groupBox_4")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_4)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.groupBox_2 = QtWidgets.QGroupBox(self.groupBox_4)
self.groupBox_2.setObjectName("groupBox_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox_2)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.focus_glo = QtWidgets.QGridLayout()
self.focus_glo.setObjectName("focus_glo")
self.horizontalLayout_2.addLayout(self.focus_glo)
self.verticalLayout_5.addWidget(self.groupBox_2)
self.groupBox_6 = QtWidgets.QGroupBox(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_6.sizePolicy().hasHeightForWidth())
self.groupBox_6.setSizePolicy(sizePolicy)
self.groupBox_6.setObjectName("groupBox_6")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.groupBox_6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.groupBox_7 = QtWidgets.QGroupBox(self.groupBox_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_7.sizePolicy().hasHeightForWidth())
self.groupBox_7.setSizePolicy(sizePolicy)
self.groupBox_7.setMaximumSize(QtCore.QSize(500, 500))
self.groupBox_7.setObjectName("groupBox_7")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.groupBox_7)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.label_3 = QtWidgets.QLabel(self.groupBox_7)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.verticalLayout_6.addWidget(self.label_3)
self.focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.focus_bt.setObjectName("focus_bt")
self.verticalLayout_6.addWidget(self.focus_bt)
self.exposureTime_bt = QtWidgets.QPushButton(self.groupBox_7)
self.exposureTime_bt.setObjectName("exposureTime_bt")
self.verticalLayout_6.addWidget(self.exposureTime_bt)
self.label_5 = QtWidgets.QLabel(self.groupBox_7)
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.verticalLayout_6.addWidget(self.label_5)
self.wb_bt = QtWidgets.QPushButton(self.groupBox_7)
self.wb_bt.setObjectName("wb_bt")
self.verticalLayout_6.addWidget(self.wb_bt)
self.label_2 = QtWidgets.QLabel(self.groupBox_7)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.verticalLayout_6.addWidget(self.label_2)
self.record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.record_bt.setObjectName("record_bt")
self.verticalLayout_6.addWidget(self.record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_6)
self.verticalLayout_8 = QtWidgets.QVBoxLayout()
self.verticalLayout_8.setObjectName("verticalLayout_8")
self.framerate_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framerate_le.setReadOnly(False)
self.framerate_le.setObjectName("framerate_le")
self.verticalLayout_8.addWidget(self.framerate_le)
self.stop_focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.stop_focus_bt.setObjectName("stop_focus_bt")
self.verticalLayout_8.addWidget(self.stop_focus_bt)
self.exposureTime_le = QtWidgets.QLineEdit(self.groupBox_7)
self.exposureTime_le.setObjectName("exposureTime_le")
self.verticalLayout_8.addWidget(self.exposureTime_le)
self.gain_le = QtWidgets.QLineEdit(self.groupBox_7)
self.gain_le.setObjectName("gain_le")
self.verticalLayout_8.addWidget(self.gain_le)
self.dc_bt = QtWidgets.QPushButton(self.groupBox_7)
self.dc_bt.setObjectName("dc_bt")
self.verticalLayout_8.addWidget(self.dc_bt)
self.framenumber_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framenumber_le.setObjectName("framenumber_le")
self.verticalLayout_8.addWidget(self.framenumber_le)
self.motor_bt = QtWidgets.QPushButton(self.groupBox_7)
self.motor_bt.setObjectName("motor_bt")
self.verticalLayout_8.addWidget(self.motor_bt)
self.stop_record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.stop_record_bt.setObjectName("stop_record_bt")
self.verticalLayout_8.addWidget(self.stop_record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_8)
self.horizontalLayout_5.addWidget(self.groupBox_7)
spacerItem2 = QtWidgets.QSpacerItem(261, 17, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_5.addItem(spacerItem2)
self.verticalLayout_5.addWidget(self.groupBox_6)
self.verticalLayout_7.addWidget(self.splitter)
self.retranslateUi(image_Window)
QtCore.QMetaObject.connectSlotsByName(image_Window)
def retranslateUi(self, image_Window):
_translate = QtCore.QCoreApplication.translate
image_Window.setWindowTitle(_translate("image_Window", "影像窗口"))
self.groupBox_5.setTitle(_translate("image_Window", "GroupBox"))
self.label.setText(_translate("image_Window", "保存路径"))
self.label_4.setText(_translate("image_Window", "文件名"))
self.filepath_bt.setText(_translate("image_Window", "浏览"))
self.save_bt.setText(_translate("image_Window", "保存"))
self.groupBox_3.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox.setTitle(_translate("image_Window", "图像"))
self.groupBox_4.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_2.setTitle(_translate("image_Window", "光谱"))
self.groupBox_6.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_7.setTitle(_translate("image_Window", "GroupBox"))
self.label_3.setText(_translate("image_Window", "帧率"))
self.focus_bt.setText(_translate("image_Window", "调焦"))
self.exposureTime_bt.setText(_translate("image_Window", "曝光"))
self.label_5.setText(_translate("image_Window", "gain"))
self.wb_bt.setText(_translate("image_Window", "白板"))
self.label_2.setText(_translate("image_Window", "帧数"))
self.record_bt.setText(_translate("image_Window", "采集"))
self.stop_focus_bt.setText(_translate("image_Window", "停止调焦"))
self.dc_bt.setText(_translate("image_Window", "暗电流"))
self.motor_bt.setText(_translate("image_Window", "马达"))
self.stop_record_bt.setText(_translate("image_Window", "停止采集"))

View File

@ -0,0 +1,377 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>image_Window</class>
<widget class="QDialog" name="image_Window">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1181</width>
<height>683</height>
</rect>
</property>
<property name="mouseTracking">
<bool>false</bool>
</property>
<property name="windowTitle">
<string>影像窗口</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSplitter" name="splitter_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>保存路径</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>文件名</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLineEdit" name="filepath_le"/>
</item>
<item>
<widget class="QLineEdit" name="filename_le"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QPushButton" name="filepath_bt">
<property name="text">
<string>浏览</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="save_bt">
<property name="text">
<string>保存</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QGroupBox" name="groupBox_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>2000</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>图像</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="image_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTextBrowser" name="statu_tb">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>8777215</width>
<height>100</height>
</size>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QGroupBox" name="groupBox_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>光谱</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QGridLayout" name="focus_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>500</width>
<height>500</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>帧率</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="focus_bt">
<property name="text">
<string>调焦</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="exposureTime_bt">
<property name="text">
<string>曝光</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>gain</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="wb_bt">
<property name="text">
<string>白板</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>帧数</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QLineEdit" name="framerate_le">
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stop_focus_bt">
<property name="text">
<string>停止调焦</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="exposureTime_le"/>
</item>
<item>
<widget class="QLineEdit" name="gain_le"/>
</item>
<item>
<widget class="QPushButton" name="dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="framenumber_le"/>
</item>
<item>
<widget class="QPushButton" name="motor_bt">
<property name="text">
<string>马达</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stop_record_bt">
<property name="text">
<string>停止采集</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>261</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,94 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'spectral_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_spectral_Window(object):
def setupUi(self, spectral_Window):
spectral_Window.setObjectName("spectral_Window")
spectral_Window.resize(792, 523)
self.label = QtWidgets.QLabel(spectral_Window)
self.label.setGeometry(QtCore.QRect(54, 10, 51, 20))
self.label.setObjectName("label")
self.filepath_le = QtWidgets.QLineEdit(spectral_Window)
self.filepath_le.setGeometry(QtCore.QRect(131, 10, 261, 21))
self.filepath_le.setObjectName("filepath_le")
self.label_2 = QtWidgets.QLabel(spectral_Window)
self.label_2.setGeometry(QtCore.QRect(54, 40, 41, 20))
self.label_2.setObjectName("label_2")
self.filename_le = QtWidgets.QLineEdit(spectral_Window)
self.filename_le.setGeometry(QtCore.QRect(131, 40, 261, 21))
self.filename_le.setObjectName("filename_le")
self.filepath_bt = QtWidgets.QPushButton(spectral_Window)
self.filepath_bt.setGeometry(QtCore.QRect(401, 10, 71, 21))
self.filepath_bt.setObjectName("filepath_bt")
self.statu_tb = QtWidgets.QTextBrowser(spectral_Window)
self.statu_tb.setGeometry(QtCore.QRect(611, 210, 161, 301))
self.statu_tb.setObjectName("statu_tb")
self.tabWidget = QtWidgets.QTabWidget(spectral_Window)
self.tabWidget.setGeometry(QtCore.QRect(10, 70, 591, 441))
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.gridLayoutWidget = QtWidgets.QWidget(self.tab)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 581, 411))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.spe_glo = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.spe_glo.setContentsMargins(0, 0, 0, 0)
self.spe_glo.setObjectName("spe_glo")
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.gridLayoutWidget_2 = QtWidgets.QWidget(self.tab_2)
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(-1, -1, 581, 411))
self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
self.align_glo = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.align_glo.setContentsMargins(0, 0, 0, 0)
self.align_glo.setObjectName("align_glo")
self.tabWidget.addTab(self.tab_2, "")
self.layoutWidget = QtWidgets.QWidget(spectral_Window)
self.layoutWidget.setGeometry(QtCore.QRect(610, 90, 195, 135))
self.layoutWidget.setObjectName("layoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.align_bt.setObjectName("align_bt")
self.gridLayout.addWidget(self.align_bt, 0, 0, 1, 1)
self.stop_align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.stop_align_bt.setObjectName("stop_align_bt")
self.gridLayout.addWidget(self.stop_align_bt, 0, 1, 1, 1)
self.wb_bt = QtWidgets.QPushButton(self.layoutWidget)
self.wb_bt.setObjectName("wb_bt")
self.gridLayout.addWidget(self.wb_bt, 1, 0, 1, 2)
self.dc_bt = QtWidgets.QPushButton(self.layoutWidget)
self.dc_bt.setObjectName("dc_bt")
self.gridLayout.addWidget(self.dc_bt, 2, 0, 1, 2)
self.record_bt = QtWidgets.QPushButton(self.layoutWidget)
self.record_bt.setObjectName("record_bt")
self.gridLayout.addWidget(self.record_bt, 3, 0, 1, 2)
self.retranslateUi(spectral_Window)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(spectral_Window)
def retranslateUi(self, spectral_Window):
_translate = QtCore.QCoreApplication.translate
spectral_Window.setWindowTitle(_translate("spectral_Window", "光谱窗口"))
self.label.setText(_translate("spectral_Window", "保存路径"))
self.label_2.setText(_translate("spectral_Window", "文件名"))
self.filepath_bt.setText(_translate("spectral_Window", "浏览"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("spectral_Window", "spe"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("spectral_Window", "align"))
self.align_bt.setText(_translate("spectral_Window", "align"))
self.stop_align_bt.setText(_translate("spectral_Window", "stop align"))
self.wb_bt.setText(_translate("spectral_Window", "曝光/白板"))
self.dc_bt.setText(_translate("spectral_Window", "暗电流"))
self.record_bt.setText(_translate("spectral_Window", "采集"))

View File

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>spectral_Window</class>
<widget class="QDialog" name="spectral_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>792</width>
<height>523</height>
</rect>
</property>
<property name="windowTitle">
<string>光谱窗口</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>54</x>
<y>10</y>
<width>51</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>保存路径</string>
</property>
</widget>
<widget class="QLineEdit" name="filepath_le">
<property name="geometry">
<rect>
<x>131</x>
<y>10</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>54</x>
<y>40</y>
<width>41</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>文件名</string>
</property>
</widget>
<widget class="QLineEdit" name="filename_le">
<property name="geometry">
<rect>
<x>131</x>
<y>40</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="filepath_bt">
<property name="geometry">
<rect>
<x>401</x>
<y>10</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>浏览</string>
</property>
</widget>
<widget class="QTextBrowser" name="statu_tb">
<property name="geometry">
<rect>
<x>611</x>
<y>210</y>
<width>161</width>
<height>301</height>
</rect>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>591</width>
<height>441</height>
</rect>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>spe</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="spe_glo"/>
</widget>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>align</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget_2">
<property name="geometry">
<rect>
<x>-1</x>
<y>-1</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="align_glo"/>
</widget>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>610</x>
<y>90</y>
<width>195</width>
<height>135</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="align_bt">
<property name="text">
<string>align</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="stop_align_bt">
<property name="text">
<string>stop align</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="wb_bt">
<property name="text">
<string>曝光/白板</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'arcus_control_ui.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_arcus_ui(object):
def setupUi(self, arcus_ui):
arcus_ui.setObjectName("arcus_ui")
arcus_ui.resize(354, 171)
self.centralwidget = QtWidgets.QWidget(arcus_ui)
self.centralwidget.setObjectName("centralwidget")
self.left_btn = QtWidgets.QPushButton(self.centralwidget)
self.left_btn.setGeometry(QtCore.QRect(100, 90, 61, 21))
self.left_btn.setObjectName("left_btn")
self.right_btn = QtWidgets.QPushButton(self.centralwidget)
self.right_btn.setGeometry(QtCore.QRect(170, 90, 61, 23))
self.right_btn.setObjectName("right_btn")
self.speed_lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.speed_lineEdit.setGeometry(QtCore.QRect(101, 10, 131, 20))
self.speed_lineEdit.setObjectName("speed_lineEdit")
self.speed_ScrollBar = QtWidgets.QScrollBar(self.centralwidget)
self.speed_ScrollBar.setGeometry(QtCore.QRect(100, 40, 131, 20))
self.speed_ScrollBar.setOrientation(QtCore.Qt.Horizontal)
self.speed_ScrollBar.setObjectName("speed_ScrollBar")
arcus_ui.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(arcus_ui)
self.menubar.setGeometry(QtCore.QRect(0, 0, 354, 23))
self.menubar.setObjectName("menubar")
arcus_ui.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(arcus_ui)
self.statusbar.setObjectName("statusbar")
arcus_ui.setStatusBar(self.statusbar)
self.retranslateUi(arcus_ui)
QtCore.QMetaObject.connectSlotsByName(arcus_ui)
def retranslateUi(self, arcus_ui):
_translate = QtCore.QCoreApplication.translate
arcus_ui.setWindowTitle(_translate("arcus_ui", "MainWindow"))
self.left_btn.setText(_translate("arcus_ui", ""))
self.right_btn.setText(_translate("arcus_ui", ""))

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>arcus_ui</class>
<widget class="QMainWindow" name="arcus_ui">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>171</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="left_btn">
<property name="geometry">
<rect>
<x>100</x>
<y>90</y>
<width>61</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>左</string>
</property>
</widget>
<widget class="QPushButton" name="right_btn">
<property name="geometry">
<rect>
<x>170</x>
<y>90</y>
<width>61</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>右</string>
</property>
</widget>
<widget class="QLineEdit" name="speed_lineEdit">
<property name="geometry">
<rect>
<x>101</x>
<y>10</y>
<width>131</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QScrollBar" name="speed_ScrollBar">
<property name="geometry">
<rect>
<x>100</x>
<y>40</y>
<width>131</width>
<height>20</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'enter_window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_enter_Window(object):
def setupUi(self, enter_Window):
enter_Window.setObjectName("enter_Window")
enter_Window.resize(651, 474)
self.centralwidget = QtWidgets.QWidget(enter_Window)
self.centralwidget.setObjectName("centralwidget")
self.image_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.image_mode_bt.setGeometry(QtCore.QRect(200, 180, 111, 51))
self.image_mode_bt.setObjectName("image_mode_bt")
self.spectral_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.spectral_mode_bt.setGeometry(QtCore.QRect(360, 180, 111, 51))
self.spectral_mode_bt.setObjectName("spectral_mode_bt")
self.camstatus_tb = QtWidgets.QTextBrowser(self.centralwidget)
self.camstatus_tb.setGeometry(QtCore.QRect(200, 240, 271, 81))
self.camstatus_tb.setObjectName("camstatus_tb")
enter_Window.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(enter_Window)
self.menubar.setGeometry(QtCore.QRect(0, 0, 651, 26))
self.menubar.setObjectName("menubar")
enter_Window.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(enter_Window)
self.statusbar.setObjectName("statusbar")
enter_Window.setStatusBar(self.statusbar)
self.actionwew_e = QtWidgets.QAction(enter_Window)
self.actionwew_e.setObjectName("actionwew_e")
self.retranslateUi(enter_Window)
QtCore.QMetaObject.connectSlotsByName(enter_Window)
def retranslateUi(self, enter_Window):
_translate = QtCore.QCoreApplication.translate
enter_Window.setWindowTitle(_translate("enter_Window", "主窗口"))
self.image_mode_bt.setText(_translate("enter_Window", "影像模式"))
self.spectral_mode_bt.setText(_translate("enter_Window", "光谱模式"))
self.actionwew_e.setText(_translate("enter_Window", "wew e"))

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>enter_Window</class>
<widget class="QMainWindow" name="enter_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>474</height>
</rect>
</property>
<property name="windowTitle">
<string>主窗口</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="image_mode_bt">
<property name="geometry">
<rect>
<x>200</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>影像模式</string>
</property>
</widget>
<widget class="QPushButton" name="spectral_mode_bt">
<property name="geometry">
<rect>
<x>360</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>光谱模式</string>
</property>
</widget>
<widget class="QTextBrowser" name="camstatus_tb">
<property name="geometry">
<rect>
<x>200</x>
<y>240</y>
<width>271</width>
<height>81</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>26</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionwew_e">
<property name="text">
<string>wew e</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,231 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'image_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_image_Window(object):
def setupUi(self, image_Window):
image_Window.setObjectName("image_Window")
image_Window.setEnabled(True)
image_Window.resize(1181, 683)
image_Window.setMouseTracking(False)
image_Window.setAutoFillBackground(False)
image_Window.setSizeGripEnabled(False)
image_Window.setModal(False)
self.verticalLayout_7 = QtWidgets.QVBoxLayout(image_Window)
self.verticalLayout_7.setObjectName("verticalLayout_7")
self.groupBox_5 = QtWidgets.QGroupBox(image_Window)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_5.sizePolicy().hasHeightForWidth())
self.groupBox_5.setSizePolicy(sizePolicy)
self.groupBox_5.setObjectName("groupBox_5")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.groupBox_5)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem)
self.splitter_3 = QtWidgets.QSplitter(self.groupBox_5)
self.splitter_3.setOrientation(QtCore.Qt.Horizontal)
self.splitter_3.setObjectName("splitter_3")
self.layoutWidget = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.layoutWidget)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.label_4 = QtWidgets.QLabel(self.layoutWidget)
self.label_4.setObjectName("label_4")
self.verticalLayout.addWidget(self.label_4)
self.layoutWidget1 = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget1.setObjectName("layoutWidget1")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.filepath_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filepath_le.setObjectName("filepath_le")
self.verticalLayout_2.addWidget(self.filepath_le)
self.filename_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filename_le.setObjectName("filename_le")
self.verticalLayout_2.addWidget(self.filename_le)
self.layoutWidget2 = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget2.setObjectName("layoutWidget2")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.layoutWidget2)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.filepath_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.filepath_bt.setObjectName("filepath_bt")
self.verticalLayout_3.addWidget(self.filepath_bt)
self.save_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.save_bt.setObjectName("save_bt")
self.verticalLayout_3.addWidget(self.save_bt)
self.horizontalLayout_4.addWidget(self.splitter_3)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem1)
self.verticalLayout_7.addWidget(self.groupBox_5)
self.splitter = QtWidgets.QSplitter(image_Window)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setObjectName("splitter")
self.groupBox_3 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth())
self.groupBox_3.setSizePolicy(sizePolicy)
self.groupBox_3.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox_3.setMaximumSize(QtCore.QSize(2000, 16777215))
self.groupBox_3.setObjectName("groupBox_3")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_3)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.groupBox = QtWidgets.QGroupBox(self.groupBox_3)
self.groupBox.setObjectName("groupBox")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox)
self.horizontalLayout.setObjectName("horizontalLayout")
self.image_glo = QtWidgets.QGridLayout()
self.image_glo.setObjectName("image_glo")
self.horizontalLayout.addLayout(self.image_glo)
self.verticalLayout_4.addWidget(self.groupBox)
self.statu_tb = QtWidgets.QTextBrowser(self.groupBox_3)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.statu_tb.sizePolicy().hasHeightForWidth())
self.statu_tb.setSizePolicy(sizePolicy)
self.statu_tb.setMaximumSize(QtCore.QSize(8777215, 100))
self.statu_tb.setReadOnly(True)
self.statu_tb.setObjectName("statu_tb")
self.verticalLayout_4.addWidget(self.statu_tb)
self.groupBox_4 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_4.sizePolicy().hasHeightForWidth())
self.groupBox_4.setSizePolicy(sizePolicy)
self.groupBox_4.setObjectName("groupBox_4")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_4)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.groupBox_2 = QtWidgets.QGroupBox(self.groupBox_4)
self.groupBox_2.setObjectName("groupBox_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox_2)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.focus_glo = QtWidgets.QGridLayout()
self.focus_glo.setObjectName("focus_glo")
self.horizontalLayout_2.addLayout(self.focus_glo)
self.verticalLayout_5.addWidget(self.groupBox_2)
self.groupBox_6 = QtWidgets.QGroupBox(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_6.sizePolicy().hasHeightForWidth())
self.groupBox_6.setSizePolicy(sizePolicy)
self.groupBox_6.setObjectName("groupBox_6")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.groupBox_6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.groupBox_7 = QtWidgets.QGroupBox(self.groupBox_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_7.sizePolicy().hasHeightForWidth())
self.groupBox_7.setSizePolicy(sizePolicy)
self.groupBox_7.setMaximumSize(QtCore.QSize(500, 500))
self.groupBox_7.setObjectName("groupBox_7")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.groupBox_7)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.label_3 = QtWidgets.QLabel(self.groupBox_7)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.verticalLayout_6.addWidget(self.label_3)
self.focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.focus_bt.setObjectName("focus_bt")
self.verticalLayout_6.addWidget(self.focus_bt)
self.exposureTime_bt = QtWidgets.QPushButton(self.groupBox_7)
self.exposureTime_bt.setObjectName("exposureTime_bt")
self.verticalLayout_6.addWidget(self.exposureTime_bt)
self.label_5 = QtWidgets.QLabel(self.groupBox_7)
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.verticalLayout_6.addWidget(self.label_5)
self.wb_bt = QtWidgets.QPushButton(self.groupBox_7)
self.wb_bt.setObjectName("wb_bt")
self.verticalLayout_6.addWidget(self.wb_bt)
self.label_2 = QtWidgets.QLabel(self.groupBox_7)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.verticalLayout_6.addWidget(self.label_2)
self.record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.record_bt.setObjectName("record_bt")
self.verticalLayout_6.addWidget(self.record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_6)
self.verticalLayout_8 = QtWidgets.QVBoxLayout()
self.verticalLayout_8.setObjectName("verticalLayout_8")
self.framerate_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framerate_le.setReadOnly(False)
self.framerate_le.setObjectName("framerate_le")
self.verticalLayout_8.addWidget(self.framerate_le)
self.stop_focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.stop_focus_bt.setObjectName("stop_focus_bt")
self.verticalLayout_8.addWidget(self.stop_focus_bt)
self.exposureTime_le = QtWidgets.QLineEdit(self.groupBox_7)
self.exposureTime_le.setObjectName("exposureTime_le")
self.verticalLayout_8.addWidget(self.exposureTime_le)
self.gain_le = QtWidgets.QLineEdit(self.groupBox_7)
self.gain_le.setObjectName("gain_le")
self.verticalLayout_8.addWidget(self.gain_le)
self.dc_bt = QtWidgets.QPushButton(self.groupBox_7)
self.dc_bt.setObjectName("dc_bt")
self.verticalLayout_8.addWidget(self.dc_bt)
self.framenumber_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framenumber_le.setObjectName("framenumber_le")
self.verticalLayout_8.addWidget(self.framenumber_le)
self.motor_bt = QtWidgets.QPushButton(self.groupBox_7)
self.motor_bt.setObjectName("motor_bt")
self.verticalLayout_8.addWidget(self.motor_bt)
self.stop_record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.stop_record_bt.setObjectName("stop_record_bt")
self.verticalLayout_8.addWidget(self.stop_record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_8)
self.horizontalLayout_5.addWidget(self.groupBox_7)
spacerItem2 = QtWidgets.QSpacerItem(261, 17, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_5.addItem(spacerItem2)
self.verticalLayout_5.addWidget(self.groupBox_6)
self.verticalLayout_7.addWidget(self.splitter)
self.retranslateUi(image_Window)
QtCore.QMetaObject.connectSlotsByName(image_Window)
def retranslateUi(self, image_Window):
_translate = QtCore.QCoreApplication.translate
image_Window.setWindowTitle(_translate("image_Window", "影像窗口"))
self.groupBox_5.setTitle(_translate("image_Window", "GroupBox"))
self.label.setText(_translate("image_Window", "保存路径"))
self.label_4.setText(_translate("image_Window", "文件名"))
self.filepath_bt.setText(_translate("image_Window", "浏览"))
self.save_bt.setText(_translate("image_Window", "保存"))
self.groupBox_3.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox.setTitle(_translate("image_Window", "图像"))
self.groupBox_4.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_2.setTitle(_translate("image_Window", "光谱"))
self.groupBox_6.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_7.setTitle(_translate("image_Window", "GroupBox"))
self.label_3.setText(_translate("image_Window", "帧率"))
self.focus_bt.setText(_translate("image_Window", "调焦"))
self.exposureTime_bt.setText(_translate("image_Window", "曝光"))
self.label_5.setText(_translate("image_Window", "gain"))
self.wb_bt.setText(_translate("image_Window", "白板"))
self.label_2.setText(_translate("image_Window", "帧数"))
self.record_bt.setText(_translate("image_Window", "采集"))
self.stop_focus_bt.setText(_translate("image_Window", "停止调焦"))
self.dc_bt.setText(_translate("image_Window", "暗电流"))
self.motor_bt.setText(_translate("image_Window", "马达"))
self.stop_record_bt.setText(_translate("image_Window", "停止采集"))

View File

@ -0,0 +1,377 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>image_Window</class>
<widget class="QDialog" name="image_Window">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1181</width>
<height>683</height>
</rect>
</property>
<property name="mouseTracking">
<bool>false</bool>
</property>
<property name="windowTitle">
<string>影像窗口</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSplitter" name="splitter_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>保存路径</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>文件名</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLineEdit" name="filepath_le"/>
</item>
<item>
<widget class="QLineEdit" name="filename_le"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QPushButton" name="filepath_bt">
<property name="text">
<string>浏览</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="save_bt">
<property name="text">
<string>保存</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QGroupBox" name="groupBox_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>2000</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>图像</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="image_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTextBrowser" name="statu_tb">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>8777215</width>
<height>100</height>
</size>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QGroupBox" name="groupBox_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>光谱</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QGridLayout" name="focus_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>500</width>
<height>500</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>帧率</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="focus_bt">
<property name="text">
<string>调焦</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="exposureTime_bt">
<property name="text">
<string>曝光</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>gain</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="wb_bt">
<property name="text">
<string>白板</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>帧数</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QLineEdit" name="framerate_le">
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stop_focus_bt">
<property name="text">
<string>停止调焦</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="exposureTime_le"/>
</item>
<item>
<widget class="QLineEdit" name="gain_le"/>
</item>
<item>
<widget class="QPushButton" name="dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="framenumber_le"/>
</item>
<item>
<widget class="QPushButton" name="motor_bt">
<property name="text">
<string>马达</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stop_record_bt">
<property name="text">
<string>停止采集</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>261</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,94 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'spectral_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_spectral_Window(object):
def setupUi(self, spectral_Window):
spectral_Window.setObjectName("spectral_Window")
spectral_Window.resize(792, 523)
self.label = QtWidgets.QLabel(spectral_Window)
self.label.setGeometry(QtCore.QRect(54, 10, 51, 20))
self.label.setObjectName("label")
self.filepath_le = QtWidgets.QLineEdit(spectral_Window)
self.filepath_le.setGeometry(QtCore.QRect(131, 10, 261, 21))
self.filepath_le.setObjectName("filepath_le")
self.label_2 = QtWidgets.QLabel(spectral_Window)
self.label_2.setGeometry(QtCore.QRect(54, 40, 41, 20))
self.label_2.setObjectName("label_2")
self.filename_le = QtWidgets.QLineEdit(spectral_Window)
self.filename_le.setGeometry(QtCore.QRect(131, 40, 261, 21))
self.filename_le.setObjectName("filename_le")
self.filepath_bt = QtWidgets.QPushButton(spectral_Window)
self.filepath_bt.setGeometry(QtCore.QRect(401, 10, 71, 21))
self.filepath_bt.setObjectName("filepath_bt")
self.statu_tb = QtWidgets.QTextBrowser(spectral_Window)
self.statu_tb.setGeometry(QtCore.QRect(611, 210, 161, 301))
self.statu_tb.setObjectName("statu_tb")
self.tabWidget = QtWidgets.QTabWidget(spectral_Window)
self.tabWidget.setGeometry(QtCore.QRect(10, 70, 591, 441))
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.gridLayoutWidget = QtWidgets.QWidget(self.tab)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 581, 411))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.spe_glo = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.spe_glo.setContentsMargins(0, 0, 0, 0)
self.spe_glo.setObjectName("spe_glo")
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.gridLayoutWidget_2 = QtWidgets.QWidget(self.tab_2)
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(-1, -1, 581, 411))
self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
self.align_glo = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.align_glo.setContentsMargins(0, 0, 0, 0)
self.align_glo.setObjectName("align_glo")
self.tabWidget.addTab(self.tab_2, "")
self.layoutWidget = QtWidgets.QWidget(spectral_Window)
self.layoutWidget.setGeometry(QtCore.QRect(610, 90, 195, 135))
self.layoutWidget.setObjectName("layoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.align_bt.setObjectName("align_bt")
self.gridLayout.addWidget(self.align_bt, 0, 0, 1, 1)
self.stop_align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.stop_align_bt.setObjectName("stop_align_bt")
self.gridLayout.addWidget(self.stop_align_bt, 0, 1, 1, 1)
self.wb_bt = QtWidgets.QPushButton(self.layoutWidget)
self.wb_bt.setObjectName("wb_bt")
self.gridLayout.addWidget(self.wb_bt, 1, 0, 1, 2)
self.dc_bt = QtWidgets.QPushButton(self.layoutWidget)
self.dc_bt.setObjectName("dc_bt")
self.gridLayout.addWidget(self.dc_bt, 2, 0, 1, 2)
self.record_bt = QtWidgets.QPushButton(self.layoutWidget)
self.record_bt.setObjectName("record_bt")
self.gridLayout.addWidget(self.record_bt, 3, 0, 1, 2)
self.retranslateUi(spectral_Window)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(spectral_Window)
def retranslateUi(self, spectral_Window):
_translate = QtCore.QCoreApplication.translate
spectral_Window.setWindowTitle(_translate("spectral_Window", "光谱窗口"))
self.label.setText(_translate("spectral_Window", "保存路径"))
self.label_2.setText(_translate("spectral_Window", "文件名"))
self.filepath_bt.setText(_translate("spectral_Window", "浏览"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("spectral_Window", "spe"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("spectral_Window", "align"))
self.align_bt.setText(_translate("spectral_Window", "align"))
self.stop_align_bt.setText(_translate("spectral_Window", "stop align"))
self.wb_bt.setText(_translate("spectral_Window", "曝光/白板"))
self.dc_bt.setText(_translate("spectral_Window", "暗电流"))
self.record_bt.setText(_translate("spectral_Window", "采集"))

View File

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>spectral_Window</class>
<widget class="QDialog" name="spectral_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>792</width>
<height>523</height>
</rect>
</property>
<property name="windowTitle">
<string>光谱窗口</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>54</x>
<y>10</y>
<width>51</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>保存路径</string>
</property>
</widget>
<widget class="QLineEdit" name="filepath_le">
<property name="geometry">
<rect>
<x>131</x>
<y>10</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>54</x>
<y>40</y>
<width>41</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>文件名</string>
</property>
</widget>
<widget class="QLineEdit" name="filename_le">
<property name="geometry">
<rect>
<x>131</x>
<y>40</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="filepath_bt">
<property name="geometry">
<rect>
<x>401</x>
<y>10</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>浏览</string>
</property>
</widget>
<widget class="QTextBrowser" name="statu_tb">
<property name="geometry">
<rect>
<x>611</x>
<y>210</y>
<width>161</width>
<height>301</height>
</rect>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>591</width>
<height>441</height>
</rect>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>spe</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="spe_glo"/>
</widget>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>align</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget_2">
<property name="geometry">
<rect>
<x>-1</x>
<y>-1</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="align_glo"/>
</widget>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>610</x>
<y>90</y>
<width>195</width>
<height>135</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="align_bt">
<property name="text">
<string>align</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="stop_align_bt">
<property name="text">
<string>stop align</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="wb_bt">
<property name="text">
<string>曝光/白板</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'arcus_control_ui.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_arcus_ui(object):
def setupUi(self, arcus_ui):
arcus_ui.setObjectName("arcus_ui")
arcus_ui.resize(354, 171)
self.centralwidget = QtWidgets.QWidget(arcus_ui)
self.centralwidget.setObjectName("centralwidget")
self.left_btn = QtWidgets.QPushButton(self.centralwidget)
self.left_btn.setGeometry(QtCore.QRect(100, 90, 61, 21))
self.left_btn.setObjectName("left_btn")
self.right_btn = QtWidgets.QPushButton(self.centralwidget)
self.right_btn.setGeometry(QtCore.QRect(170, 90, 61, 23))
self.right_btn.setObjectName("right_btn")
self.speed_lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.speed_lineEdit.setGeometry(QtCore.QRect(101, 10, 131, 20))
self.speed_lineEdit.setObjectName("speed_lineEdit")
self.speed_ScrollBar = QtWidgets.QScrollBar(self.centralwidget)
self.speed_ScrollBar.setGeometry(QtCore.QRect(100, 40, 131, 20))
self.speed_ScrollBar.setOrientation(QtCore.Qt.Horizontal)
self.speed_ScrollBar.setObjectName("speed_ScrollBar")
arcus_ui.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(arcus_ui)
self.menubar.setGeometry(QtCore.QRect(0, 0, 354, 23))
self.menubar.setObjectName("menubar")
arcus_ui.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(arcus_ui)
self.statusbar.setObjectName("statusbar")
arcus_ui.setStatusBar(self.statusbar)
self.retranslateUi(arcus_ui)
QtCore.QMetaObject.connectSlotsByName(arcus_ui)
def retranslateUi(self, arcus_ui):
_translate = QtCore.QCoreApplication.translate
arcus_ui.setWindowTitle(_translate("arcus_ui", "MainWindow"))
self.left_btn.setText(_translate("arcus_ui", ""))
self.right_btn.setText(_translate("arcus_ui", ""))

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>arcus_ui</class>
<widget class="QMainWindow" name="arcus_ui">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>171</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="left_btn">
<property name="geometry">
<rect>
<x>100</x>
<y>90</y>
<width>61</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>左</string>
</property>
</widget>
<widget class="QPushButton" name="right_btn">
<property name="geometry">
<rect>
<x>170</x>
<y>90</y>
<width>61</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>右</string>
</property>
</widget>
<widget class="QLineEdit" name="speed_lineEdit">
<property name="geometry">
<rect>
<x>101</x>
<y>10</y>
<width>131</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QScrollBar" name="speed_ScrollBar">
<property name="geometry">
<rect>
<x>100</x>
<y>40</y>
<width>131</width>
<height>20</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'enter_window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_enter_Window(object):
def setupUi(self, enter_Window):
enter_Window.setObjectName("enter_Window")
enter_Window.resize(651, 474)
self.centralwidget = QtWidgets.QWidget(enter_Window)
self.centralwidget.setObjectName("centralwidget")
self.image_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.image_mode_bt.setGeometry(QtCore.QRect(200, 180, 111, 51))
self.image_mode_bt.setObjectName("image_mode_bt")
self.spectral_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.spectral_mode_bt.setGeometry(QtCore.QRect(360, 180, 111, 51))
self.spectral_mode_bt.setObjectName("spectral_mode_bt")
self.camstatus_tb = QtWidgets.QTextBrowser(self.centralwidget)
self.camstatus_tb.setGeometry(QtCore.QRect(200, 240, 271, 81))
self.camstatus_tb.setObjectName("camstatus_tb")
enter_Window.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(enter_Window)
self.menubar.setGeometry(QtCore.QRect(0, 0, 651, 26))
self.menubar.setObjectName("menubar")
enter_Window.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(enter_Window)
self.statusbar.setObjectName("statusbar")
enter_Window.setStatusBar(self.statusbar)
self.actionwew_e = QtWidgets.QAction(enter_Window)
self.actionwew_e.setObjectName("actionwew_e")
self.retranslateUi(enter_Window)
QtCore.QMetaObject.connectSlotsByName(enter_Window)
def retranslateUi(self, enter_Window):
_translate = QtCore.QCoreApplication.translate
enter_Window.setWindowTitle(_translate("enter_Window", "主窗口"))
self.image_mode_bt.setText(_translate("enter_Window", "影像模式"))
self.spectral_mode_bt.setText(_translate("enter_Window", "光谱模式"))
self.actionwew_e.setText(_translate("enter_Window", "wew e"))

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>enter_Window</class>
<widget class="QMainWindow" name="enter_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>474</height>
</rect>
</property>
<property name="windowTitle">
<string>主窗口</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="image_mode_bt">
<property name="geometry">
<rect>
<x>200</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>影像模式</string>
</property>
</widget>
<widget class="QPushButton" name="spectral_mode_bt">
<property name="geometry">
<rect>
<x>360</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>光谱模式</string>
</property>
</widget>
<widget class="QTextBrowser" name="camstatus_tb">
<property name="geometry">
<rect>
<x>200</x>
<y>240</y>
<width>271</width>
<height>81</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>26</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionwew_e">
<property name="text">
<string>wew e</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,231 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'image_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_image_Window(object):
def setupUi(self, image_Window):
image_Window.setObjectName("image_Window")
image_Window.setEnabled(True)
image_Window.resize(1181, 683)
image_Window.setMouseTracking(False)
image_Window.setAutoFillBackground(False)
image_Window.setSizeGripEnabled(False)
image_Window.setModal(False)
self.verticalLayout_7 = QtWidgets.QVBoxLayout(image_Window)
self.verticalLayout_7.setObjectName("verticalLayout_7")
self.groupBox_5 = QtWidgets.QGroupBox(image_Window)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_5.sizePolicy().hasHeightForWidth())
self.groupBox_5.setSizePolicy(sizePolicy)
self.groupBox_5.setObjectName("groupBox_5")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.groupBox_5)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem)
self.splitter_3 = QtWidgets.QSplitter(self.groupBox_5)
self.splitter_3.setOrientation(QtCore.Qt.Horizontal)
self.splitter_3.setObjectName("splitter_3")
self.layoutWidget = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.layoutWidget)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.label_4 = QtWidgets.QLabel(self.layoutWidget)
self.label_4.setObjectName("label_4")
self.verticalLayout.addWidget(self.label_4)
self.layoutWidget1 = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget1.setObjectName("layoutWidget1")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.filepath_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filepath_le.setObjectName("filepath_le")
self.verticalLayout_2.addWidget(self.filepath_le)
self.filename_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filename_le.setObjectName("filename_le")
self.verticalLayout_2.addWidget(self.filename_le)
self.layoutWidget2 = QtWidgets.QWidget(self.splitter_3)
self.layoutWidget2.setObjectName("layoutWidget2")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.layoutWidget2)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.filepath_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.filepath_bt.setObjectName("filepath_bt")
self.verticalLayout_3.addWidget(self.filepath_bt)
self.save_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.save_bt.setObjectName("save_bt")
self.verticalLayout_3.addWidget(self.save_bt)
self.horizontalLayout_4.addWidget(self.splitter_3)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem1)
self.verticalLayout_7.addWidget(self.groupBox_5)
self.splitter = QtWidgets.QSplitter(image_Window)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setObjectName("splitter")
self.groupBox_3 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth())
self.groupBox_3.setSizePolicy(sizePolicy)
self.groupBox_3.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox_3.setMaximumSize(QtCore.QSize(2000, 16777215))
self.groupBox_3.setObjectName("groupBox_3")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_3)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.groupBox = QtWidgets.QGroupBox(self.groupBox_3)
self.groupBox.setObjectName("groupBox")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox)
self.horizontalLayout.setObjectName("horizontalLayout")
self.image_glo = QtWidgets.QGridLayout()
self.image_glo.setObjectName("image_glo")
self.horizontalLayout.addLayout(self.image_glo)
self.verticalLayout_4.addWidget(self.groupBox)
self.statu_tb = QtWidgets.QTextBrowser(self.groupBox_3)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.statu_tb.sizePolicy().hasHeightForWidth())
self.statu_tb.setSizePolicy(sizePolicy)
self.statu_tb.setMaximumSize(QtCore.QSize(8777215, 100))
self.statu_tb.setReadOnly(True)
self.statu_tb.setObjectName("statu_tb")
self.verticalLayout_4.addWidget(self.statu_tb)
self.groupBox_4 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_4.sizePolicy().hasHeightForWidth())
self.groupBox_4.setSizePolicy(sizePolicy)
self.groupBox_4.setObjectName("groupBox_4")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_4)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.groupBox_2 = QtWidgets.QGroupBox(self.groupBox_4)
self.groupBox_2.setObjectName("groupBox_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox_2)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.focus_glo = QtWidgets.QGridLayout()
self.focus_glo.setObjectName("focus_glo")
self.horizontalLayout_2.addLayout(self.focus_glo)
self.verticalLayout_5.addWidget(self.groupBox_2)
self.groupBox_6 = QtWidgets.QGroupBox(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_6.sizePolicy().hasHeightForWidth())
self.groupBox_6.setSizePolicy(sizePolicy)
self.groupBox_6.setObjectName("groupBox_6")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.groupBox_6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.groupBox_7 = QtWidgets.QGroupBox(self.groupBox_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_7.sizePolicy().hasHeightForWidth())
self.groupBox_7.setSizePolicy(sizePolicy)
self.groupBox_7.setMaximumSize(QtCore.QSize(500, 500))
self.groupBox_7.setObjectName("groupBox_7")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.groupBox_7)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.label_3 = QtWidgets.QLabel(self.groupBox_7)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.verticalLayout_6.addWidget(self.label_3)
self.focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.focus_bt.setObjectName("focus_bt")
self.verticalLayout_6.addWidget(self.focus_bt)
self.exposureTime_bt = QtWidgets.QPushButton(self.groupBox_7)
self.exposureTime_bt.setObjectName("exposureTime_bt")
self.verticalLayout_6.addWidget(self.exposureTime_bt)
self.label_5 = QtWidgets.QLabel(self.groupBox_7)
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.verticalLayout_6.addWidget(self.label_5)
self.wb_bt = QtWidgets.QPushButton(self.groupBox_7)
self.wb_bt.setObjectName("wb_bt")
self.verticalLayout_6.addWidget(self.wb_bt)
self.label_2 = QtWidgets.QLabel(self.groupBox_7)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.verticalLayout_6.addWidget(self.label_2)
self.record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.record_bt.setObjectName("record_bt")
self.verticalLayout_6.addWidget(self.record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_6)
self.verticalLayout_8 = QtWidgets.QVBoxLayout()
self.verticalLayout_8.setObjectName("verticalLayout_8")
self.framerate_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framerate_le.setReadOnly(False)
self.framerate_le.setObjectName("framerate_le")
self.verticalLayout_8.addWidget(self.framerate_le)
self.stop_focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.stop_focus_bt.setObjectName("stop_focus_bt")
self.verticalLayout_8.addWidget(self.stop_focus_bt)
self.exposureTime_le = QtWidgets.QLineEdit(self.groupBox_7)
self.exposureTime_le.setObjectName("exposureTime_le")
self.verticalLayout_8.addWidget(self.exposureTime_le)
self.gain_le = QtWidgets.QLineEdit(self.groupBox_7)
self.gain_le.setObjectName("gain_le")
self.verticalLayout_8.addWidget(self.gain_le)
self.dc_bt = QtWidgets.QPushButton(self.groupBox_7)
self.dc_bt.setObjectName("dc_bt")
self.verticalLayout_8.addWidget(self.dc_bt)
self.framenumber_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framenumber_le.setObjectName("framenumber_le")
self.verticalLayout_8.addWidget(self.framenumber_le)
self.motor_bt = QtWidgets.QPushButton(self.groupBox_7)
self.motor_bt.setObjectName("motor_bt")
self.verticalLayout_8.addWidget(self.motor_bt)
self.stop_record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.stop_record_bt.setObjectName("stop_record_bt")
self.verticalLayout_8.addWidget(self.stop_record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_8)
self.horizontalLayout_5.addWidget(self.groupBox_7)
spacerItem2 = QtWidgets.QSpacerItem(261, 17, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_5.addItem(spacerItem2)
self.verticalLayout_5.addWidget(self.groupBox_6)
self.verticalLayout_7.addWidget(self.splitter)
self.retranslateUi(image_Window)
QtCore.QMetaObject.connectSlotsByName(image_Window)
def retranslateUi(self, image_Window):
_translate = QtCore.QCoreApplication.translate
image_Window.setWindowTitle(_translate("image_Window", "影像窗口"))
self.groupBox_5.setTitle(_translate("image_Window", "GroupBox"))
self.label.setText(_translate("image_Window", "保存路径"))
self.label_4.setText(_translate("image_Window", "文件名"))
self.filepath_bt.setText(_translate("image_Window", "浏览"))
self.save_bt.setText(_translate("image_Window", "保存"))
self.groupBox_3.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox.setTitle(_translate("image_Window", "图像"))
self.groupBox_4.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_2.setTitle(_translate("image_Window", "光谱"))
self.groupBox_6.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_7.setTitle(_translate("image_Window", "GroupBox"))
self.label_3.setText(_translate("image_Window", "帧率"))
self.focus_bt.setText(_translate("image_Window", "调焦"))
self.exposureTime_bt.setText(_translate("image_Window", "曝光"))
self.label_5.setText(_translate("image_Window", "gain"))
self.wb_bt.setText(_translate("image_Window", "白板"))
self.label_2.setText(_translate("image_Window", "帧数"))
self.record_bt.setText(_translate("image_Window", "采集"))
self.stop_focus_bt.setText(_translate("image_Window", "停止调焦"))
self.dc_bt.setText(_translate("image_Window", "暗电流"))
self.motor_bt.setText(_translate("image_Window", "马达"))
self.stop_record_bt.setText(_translate("image_Window", "停止采集"))

View File

@ -0,0 +1,377 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>image_Window</class>
<widget class="QDialog" name="image_Window">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1181</width>
<height>683</height>
</rect>
</property>
<property name="mouseTracking">
<bool>false</bool>
</property>
<property name="windowTitle">
<string>影像窗口</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSplitter" name="splitter_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>保存路径</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>文件名</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLineEdit" name="filepath_le"/>
</item>
<item>
<widget class="QLineEdit" name="filename_le"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QPushButton" name="filepath_bt">
<property name="text">
<string>浏览</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="save_bt">
<property name="text">
<string>保存</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QGroupBox" name="groupBox_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>2000</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>图像</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="image_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTextBrowser" name="statu_tb">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>8777215</width>
<height>100</height>
</size>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QGroupBox" name="groupBox_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>光谱</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QGridLayout" name="focus_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>500</width>
<height>500</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>帧率</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="focus_bt">
<property name="text">
<string>调焦</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="exposureTime_bt">
<property name="text">
<string>曝光</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>gain</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="wb_bt">
<property name="text">
<string>白板</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>帧数</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QLineEdit" name="framerate_le">
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stop_focus_bt">
<property name="text">
<string>停止调焦</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="exposureTime_le"/>
</item>
<item>
<widget class="QLineEdit" name="gain_le"/>
</item>
<item>
<widget class="QPushButton" name="dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="framenumber_le"/>
</item>
<item>
<widget class="QPushButton" name="motor_bt">
<property name="text">
<string>马达</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stop_record_bt">
<property name="text">
<string>停止采集</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>261</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,94 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'spectral_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_spectral_Window(object):
def setupUi(self, spectral_Window):
spectral_Window.setObjectName("spectral_Window")
spectral_Window.resize(792, 523)
self.label = QtWidgets.QLabel(spectral_Window)
self.label.setGeometry(QtCore.QRect(54, 10, 51, 20))
self.label.setObjectName("label")
self.filepath_le = QtWidgets.QLineEdit(spectral_Window)
self.filepath_le.setGeometry(QtCore.QRect(131, 10, 261, 21))
self.filepath_le.setObjectName("filepath_le")
self.label_2 = QtWidgets.QLabel(spectral_Window)
self.label_2.setGeometry(QtCore.QRect(54, 40, 41, 20))
self.label_2.setObjectName("label_2")
self.filename_le = QtWidgets.QLineEdit(spectral_Window)
self.filename_le.setGeometry(QtCore.QRect(131, 40, 261, 21))
self.filename_le.setObjectName("filename_le")
self.filepath_bt = QtWidgets.QPushButton(spectral_Window)
self.filepath_bt.setGeometry(QtCore.QRect(401, 10, 71, 21))
self.filepath_bt.setObjectName("filepath_bt")
self.statu_tb = QtWidgets.QTextBrowser(spectral_Window)
self.statu_tb.setGeometry(QtCore.QRect(611, 210, 161, 301))
self.statu_tb.setObjectName("statu_tb")
self.tabWidget = QtWidgets.QTabWidget(spectral_Window)
self.tabWidget.setGeometry(QtCore.QRect(10, 70, 591, 441))
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.gridLayoutWidget = QtWidgets.QWidget(self.tab)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 581, 411))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.spe_glo = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.spe_glo.setContentsMargins(0, 0, 0, 0)
self.spe_glo.setObjectName("spe_glo")
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.gridLayoutWidget_2 = QtWidgets.QWidget(self.tab_2)
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(-1, -1, 581, 411))
self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
self.align_glo = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.align_glo.setContentsMargins(0, 0, 0, 0)
self.align_glo.setObjectName("align_glo")
self.tabWidget.addTab(self.tab_2, "")
self.layoutWidget = QtWidgets.QWidget(spectral_Window)
self.layoutWidget.setGeometry(QtCore.QRect(610, 90, 195, 135))
self.layoutWidget.setObjectName("layoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.align_bt.setObjectName("align_bt")
self.gridLayout.addWidget(self.align_bt, 0, 0, 1, 1)
self.stop_align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.stop_align_bt.setObjectName("stop_align_bt")
self.gridLayout.addWidget(self.stop_align_bt, 0, 1, 1, 1)
self.wb_bt = QtWidgets.QPushButton(self.layoutWidget)
self.wb_bt.setObjectName("wb_bt")
self.gridLayout.addWidget(self.wb_bt, 1, 0, 1, 2)
self.dc_bt = QtWidgets.QPushButton(self.layoutWidget)
self.dc_bt.setObjectName("dc_bt")
self.gridLayout.addWidget(self.dc_bt, 2, 0, 1, 2)
self.record_bt = QtWidgets.QPushButton(self.layoutWidget)
self.record_bt.setObjectName("record_bt")
self.gridLayout.addWidget(self.record_bt, 3, 0, 1, 2)
self.retranslateUi(spectral_Window)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(spectral_Window)
def retranslateUi(self, spectral_Window):
_translate = QtCore.QCoreApplication.translate
spectral_Window.setWindowTitle(_translate("spectral_Window", "光谱窗口"))
self.label.setText(_translate("spectral_Window", "保存路径"))
self.label_2.setText(_translate("spectral_Window", "文件名"))
self.filepath_bt.setText(_translate("spectral_Window", "浏览"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("spectral_Window", "spe"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("spectral_Window", "align"))
self.align_bt.setText(_translate("spectral_Window", "align"))
self.stop_align_bt.setText(_translate("spectral_Window", "stop align"))
self.wb_bt.setText(_translate("spectral_Window", "曝光/白板"))
self.dc_bt.setText(_translate("spectral_Window", "暗电流"))
self.record_bt.setText(_translate("spectral_Window", "采集"))

View File

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>spectral_Window</class>
<widget class="QDialog" name="spectral_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>792</width>
<height>523</height>
</rect>
</property>
<property name="windowTitle">
<string>光谱窗口</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>54</x>
<y>10</y>
<width>51</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>保存路径</string>
</property>
</widget>
<widget class="QLineEdit" name="filepath_le">
<property name="geometry">
<rect>
<x>131</x>
<y>10</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>54</x>
<y>40</y>
<width>41</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>文件名</string>
</property>
</widget>
<widget class="QLineEdit" name="filename_le">
<property name="geometry">
<rect>
<x>131</x>
<y>40</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="filepath_bt">
<property name="geometry">
<rect>
<x>401</x>
<y>10</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>浏览</string>
</property>
</widget>
<widget class="QTextBrowser" name="statu_tb">
<property name="geometry">
<rect>
<x>611</x>
<y>210</y>
<width>161</width>
<height>301</height>
</rect>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>591</width>
<height>441</height>
</rect>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>spe</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="spe_glo"/>
</widget>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>align</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget_2">
<property name="geometry">
<rect>
<x>-1</x>
<y>-1</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="align_glo"/>
</widget>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>610</x>
<y>90</y>
<width>195</width>
<height>135</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="align_bt">
<property name="text">
<string>align</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="stop_align_bt">
<property name="text">
<string>stop align</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="wb_bt">
<property name="text">
<string>曝光/白板</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,75 @@
"""
Arcus controller python interface.
Only works if one ARCUS device is connected.
Including Arcus Configuration cables.
Open ArcusDevice.py in Python IDE --> Run --> Enter Terminal Commands
"""
import threading
import Arcus
import copy
import sys
class ArcusDevice(object):
"""
This is interface class to Arcus stepper controller
@author Lukas Zubal
@version 1.0
"""
def __init__(self):
"""
@brief Constructor
@param self object instance
"""
self.device = Arcus.Arcus()
if self.device.Connect() == 1:
print ' '
else:
print "Cannot open stepper device on port "
sys.exit()
self.outputBuffer = " "
self.lock = threading.Lock() # thread safety
self.verbose = 0
def close(self):
"""
@brief Closes Arcus device connection
@param self object instance
@return bool Returns a 1 if successful
"""
self.lock.acquire()
self.device.Close()
self.lock.release()
del self.device
return 1
def write(self, data):
"""
@brief Command-response call to Arcus device
@see Arcus controller manual for complete list of interactive commands
@param self object instance
@param data string containing interactive commands to arcus
@return str Returns string containing response of controller
"""
self.lock.acquire()
self.device.SendAndRecive(data, self.outputBuffer)
resp = copy.deepcopy(self.outputBuffer[:])
self.lock.release()
resp = resp.split('\x00')[0]
if self.verbose == 1:
print resp
return resp
arc = ArcusDevice()
arc.write('DN') # Send Terminal Command to return device name.
# print "Connected to device: " + response # Notify user
for i in range(len(sys.argv)-1):
response = arc.write(sys.argv[i+1]) # Process Command and save Controller Response
while response != 'OK':
response = arc.write(sys.argv[i+1])
if sys.argv[i+1] == 'HSPD':
print response
arc.close() # Close Device.
del arc

View File

@ -0,0 +1,23 @@
[bin]
binning = 1
start_column_binning_1 = 12
end_column_binning_1 = 1376
start_row_binning_1 = 1
end_row_binning_1 = 300
start_column_binning_2 = 13
end_column_binning_2 = 695
start_row_binning_2 = 1
end_row_binning_2 = 150
[image_record_param]
image_dir = D:/07 Itres
default_image_name = test_image
framerate = 60
exposure_time = 16667
gain = 0.0
frame_number = 600
[spectral_record_param]
spectral_dir = D:/demo data
default_spectral_name = test_spectral

View File

@ -0,0 +1,42 @@
import os, subprocess, time, traceback
print('开始马达')
try:
# D:\software\Anaconda3\envs\py27_32\
python2_command = r'python2.exe ' + os.path.dirname(__file__) + '/ArcusDevice.py' + ' CLR PX=0 EO=1 J+'
print(python2_command)
print(python2_command.split())
process = subprocess.Popen(python2_command.split(), stdout=subprocess.PIPE)
try:
output, error = process.communicate(timeout=1)
except subprocess.TimeoutExpired:
print('有错1')
process.kill()
output, error = process.communicate()
except:
traceback.print_exc()
print('有错2')
pass
print('转动5秒')
time.sleep(5)
print('返回马达')
try:
# D:\software\Anaconda3\envs\py27_32\
# 打包https://stackoverflow.com/questions/58995937/using-pyinstaller-to-convert-python3-and-python2-to-exe
python2_command = r'python2.exe ' + os.path.dirname(__file__) + '/ArcusDevice.py' + ' CLR STOP X0'
print(python2_command)
process = subprocess.Popen(python2_command.split(), stdout=subprocess.PIPE)
try:
output, error = process.communicate(timeout=1)
except subprocess.TimeoutExpired:
print('有错3')
process.kill()
output, error = process.communicate()
except:
traceback.print_exc()
print('有错4')
pass

View File

View File

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'arcus_control_ui.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_arcus_ui(object):
def setupUi(self, arcus_ui):
arcus_ui.setObjectName("arcus_ui")
arcus_ui.resize(354, 171)
self.centralwidget = QtWidgets.QWidget(arcus_ui)
self.centralwidget.setObjectName("centralwidget")
self.left_btn = QtWidgets.QPushButton(self.centralwidget)
self.left_btn.setGeometry(QtCore.QRect(100, 90, 61, 21))
self.left_btn.setObjectName("left_btn")
self.right_btn = QtWidgets.QPushButton(self.centralwidget)
self.right_btn.setGeometry(QtCore.QRect(170, 90, 61, 23))
self.right_btn.setObjectName("right_btn")
self.speed_lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.speed_lineEdit.setGeometry(QtCore.QRect(101, 10, 131, 20))
self.speed_lineEdit.setObjectName("speed_lineEdit")
self.speed_ScrollBar = QtWidgets.QScrollBar(self.centralwidget)
self.speed_ScrollBar.setGeometry(QtCore.QRect(100, 40, 131, 20))
self.speed_ScrollBar.setOrientation(QtCore.Qt.Horizontal)
self.speed_ScrollBar.setObjectName("speed_ScrollBar")
arcus_ui.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(arcus_ui)
self.menubar.setGeometry(QtCore.QRect(0, 0, 354, 23))
self.menubar.setObjectName("menubar")
arcus_ui.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(arcus_ui)
self.statusbar.setObjectName("statusbar")
arcus_ui.setStatusBar(self.statusbar)
self.retranslateUi(arcus_ui)
QtCore.QMetaObject.connectSlotsByName(arcus_ui)
def retranslateUi(self, arcus_ui):
_translate = QtCore.QCoreApplication.translate
arcus_ui.setWindowTitle(_translate("arcus_ui", "MainWindow"))
self.left_btn.setText(_translate("arcus_ui", ""))
self.right_btn.setText(_translate("arcus_ui", ""))

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>arcus_ui</class>
<widget class="QMainWindow" name="arcus_ui">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>171</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="left_btn">
<property name="geometry">
<rect>
<x>100</x>
<y>90</y>
<width>61</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>左</string>
</property>
</widget>
<widget class="QPushButton" name="right_btn">
<property name="geometry">
<rect>
<x>170</x>
<y>90</y>
<width>61</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>右</string>
</property>
</widget>
<widget class="QLineEdit" name="speed_lineEdit">
<property name="geometry">
<rect>
<x>101</x>
<y>10</y>
<width>131</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QScrollBar" name="speed_ScrollBar">
<property name="geometry">
<rect>
<x>100</x>
<y>40</y>
<width>131</width>
<height>20</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'enter_window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_enter_Window(object):
def setupUi(self, enter_Window):
enter_Window.setObjectName("enter_Window")
enter_Window.resize(651, 474)
self.centralwidget = QtWidgets.QWidget(enter_Window)
self.centralwidget.setObjectName("centralwidget")
self.image_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.image_mode_bt.setGeometry(QtCore.QRect(200, 180, 111, 51))
self.image_mode_bt.setObjectName("image_mode_bt")
self.spectral_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.spectral_mode_bt.setGeometry(QtCore.QRect(360, 180, 111, 51))
self.spectral_mode_bt.setObjectName("spectral_mode_bt")
self.camstatus_tb = QtWidgets.QTextBrowser(self.centralwidget)
self.camstatus_tb.setGeometry(QtCore.QRect(200, 240, 271, 81))
self.camstatus_tb.setObjectName("camstatus_tb")
enter_Window.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(enter_Window)
self.menubar.setGeometry(QtCore.QRect(0, 0, 651, 26))
self.menubar.setObjectName("menubar")
enter_Window.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(enter_Window)
self.statusbar.setObjectName("statusbar")
enter_Window.setStatusBar(self.statusbar)
self.actionwew_e = QtWidgets.QAction(enter_Window)
self.actionwew_e.setObjectName("actionwew_e")
self.retranslateUi(enter_Window)
QtCore.QMetaObject.connectSlotsByName(enter_Window)
def retranslateUi(self, enter_Window):
_translate = QtCore.QCoreApplication.translate
enter_Window.setWindowTitle(_translate("enter_Window", "主窗口"))
self.image_mode_bt.setText(_translate("enter_Window", "影像模式"))
self.spectral_mode_bt.setText(_translate("enter_Window", "光谱模式"))
self.actionwew_e.setText(_translate("enter_Window", "wew e"))

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>enter_Window</class>
<widget class="QMainWindow" name="enter_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>474</height>
</rect>
</property>
<property name="windowTitle">
<string>主窗口</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="image_mode_bt">
<property name="geometry">
<rect>
<x>200</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>影像模式</string>
</property>
</widget>
<widget class="QPushButton" name="spectral_mode_bt">
<property name="geometry">
<rect>
<x>360</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>光谱模式</string>
</property>
</widget>
<widget class="QTextBrowser" name="camstatus_tb">
<property name="geometry">
<rect>
<x>200</x>
<y>240</y>
<width>271</width>
<height>81</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>26</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionwew_e">
<property name="text">
<string>wew e</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,246 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'image_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_image_Window(object):
def setupUi(self, image_Window):
image_Window.setObjectName("image_Window")
image_Window.setEnabled(True)
image_Window.resize(1181, 683)
image_Window.setMouseTracking(False)
image_Window.setAutoFillBackground(False)
image_Window.setSizeGripEnabled(False)
image_Window.setModal(False)
self.gridLayout = QtWidgets.QGridLayout(image_Window)
self.gridLayout.setObjectName("gridLayout")
self.groupBox_5 = QtWidgets.QGroupBox(image_Window)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_5.sizePolicy().hasHeightForWidth())
self.groupBox_5.setSizePolicy(sizePolicy)
self.groupBox_5.setObjectName("groupBox_5")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.groupBox_5)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
spacerItem = QtWidgets.QSpacerItem(374, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem)
self.splitter_2 = QtWidgets.QSplitter(self.groupBox_5)
self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
self.splitter_2.setObjectName("splitter_2")
self.layoutWidget = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.layoutWidget)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.label_4 = QtWidgets.QLabel(self.layoutWidget)
self.label_4.setObjectName("label_4")
self.verticalLayout.addWidget(self.label_4)
self.layoutWidget1 = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget1.setObjectName("layoutWidget1")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.filepath_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filepath_le.setObjectName("filepath_le")
self.verticalLayout_2.addWidget(self.filepath_le)
self.filename_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filename_le.setObjectName("filename_le")
self.verticalLayout_2.addWidget(self.filename_le)
self.layoutWidget2 = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget2.setObjectName("layoutWidget2")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.layoutWidget2)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.filepath_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.filepath_bt.setObjectName("filepath_bt")
self.verticalLayout_3.addWidget(self.filepath_bt)
self.save_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.save_bt.setObjectName("save_bt")
self.verticalLayout_3.addWidget(self.save_bt)
self.layoutWidget3 = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget3.setObjectName("layoutWidget3")
self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.layoutWidget3)
self.verticalLayout_7.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_7.setObjectName("verticalLayout_7")
self.t_label = QtWidgets.QLabel(self.layoutWidget3)
self.t_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.t_label.setObjectName("t_label")
self.verticalLayout_7.addWidget(self.t_label)
self.hum_label = QtWidgets.QLabel(self.layoutWidget3)
self.hum_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.hum_label.setObjectName("hum_label")
self.verticalLayout_7.addWidget(self.hum_label)
self.horizontalLayout_4.addWidget(self.splitter_2)
spacerItem1 = QtWidgets.QSpacerItem(374, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem1)
self.gridLayout.addWidget(self.groupBox_5, 0, 0, 1, 1)
self.splitter = QtWidgets.QSplitter(image_Window)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setObjectName("splitter")
self.groupBox_3 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth())
self.groupBox_3.setSizePolicy(sizePolicy)
self.groupBox_3.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox_3.setMaximumSize(QtCore.QSize(2000, 16777215))
self.groupBox_3.setObjectName("groupBox_3")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_3)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.groupBox = QtWidgets.QGroupBox(self.groupBox_3)
self.groupBox.setObjectName("groupBox")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox)
self.horizontalLayout.setObjectName("horizontalLayout")
self.image_glo = QtWidgets.QGridLayout()
self.image_glo.setObjectName("image_glo")
self.horizontalLayout.addLayout(self.image_glo)
self.verticalLayout_4.addWidget(self.groupBox)
self.statu_tb = QtWidgets.QTextBrowser(self.groupBox_3)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.statu_tb.sizePolicy().hasHeightForWidth())
self.statu_tb.setSizePolicy(sizePolicy)
self.statu_tb.setMaximumSize(QtCore.QSize(8777215, 100))
self.statu_tb.setReadOnly(True)
self.statu_tb.setObjectName("statu_tb")
self.verticalLayout_4.addWidget(self.statu_tb)
self.groupBox_4 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_4.sizePolicy().hasHeightForWidth())
self.groupBox_4.setSizePolicy(sizePolicy)
self.groupBox_4.setObjectName("groupBox_4")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_4)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.groupBox_2 = QtWidgets.QGroupBox(self.groupBox_4)
self.groupBox_2.setObjectName("groupBox_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox_2)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.focus_glo = QtWidgets.QGridLayout()
self.focus_glo.setObjectName("focus_glo")
self.horizontalLayout_2.addLayout(self.focus_glo)
self.verticalLayout_5.addWidget(self.groupBox_2)
self.groupBox_6 = QtWidgets.QGroupBox(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_6.sizePolicy().hasHeightForWidth())
self.groupBox_6.setSizePolicy(sizePolicy)
self.groupBox_6.setObjectName("groupBox_6")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.groupBox_6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.groupBox_7 = QtWidgets.QGroupBox(self.groupBox_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_7.sizePolicy().hasHeightForWidth())
self.groupBox_7.setSizePolicy(sizePolicy)
self.groupBox_7.setMaximumSize(QtCore.QSize(500, 500))
self.groupBox_7.setObjectName("groupBox_7")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.groupBox_7)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.label_3 = QtWidgets.QLabel(self.groupBox_7)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.verticalLayout_6.addWidget(self.label_3)
self.image_mode_focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_focus_bt.setObjectName("image_mode_focus_bt")
self.verticalLayout_6.addWidget(self.image_mode_focus_bt)
self.image_mode_exposureTime_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_exposureTime_bt.setObjectName("image_mode_exposureTime_bt")
self.verticalLayout_6.addWidget(self.image_mode_exposureTime_bt)
self.label_5 = QtWidgets.QLabel(self.groupBox_7)
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.verticalLayout_6.addWidget(self.label_5)
self.image_mode_wb_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_wb_bt.setObjectName("image_mode_wb_bt")
self.verticalLayout_6.addWidget(self.image_mode_wb_bt)
self.label_2 = QtWidgets.QLabel(self.groupBox_7)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.verticalLayout_6.addWidget(self.label_2)
self.image_mode_record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_record_bt.setObjectName("image_mode_record_bt")
self.verticalLayout_6.addWidget(self.image_mode_record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_6)
self.verticalLayout_8 = QtWidgets.QVBoxLayout()
self.verticalLayout_8.setObjectName("verticalLayout_8")
self.framerate_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framerate_le.setReadOnly(False)
self.framerate_le.setObjectName("framerate_le")
self.verticalLayout_8.addWidget(self.framerate_le)
self.image_mode_stop_focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_stop_focus_bt.setObjectName("image_mode_stop_focus_bt")
self.verticalLayout_8.addWidget(self.image_mode_stop_focus_bt)
self.exposureTime_le = QtWidgets.QLineEdit(self.groupBox_7)
self.exposureTime_le.setObjectName("exposureTime_le")
self.verticalLayout_8.addWidget(self.exposureTime_le)
self.gain_le = QtWidgets.QLineEdit(self.groupBox_7)
self.gain_le.setObjectName("gain_le")
self.verticalLayout_8.addWidget(self.gain_le)
self.image_mode_dc_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_dc_bt.setObjectName("image_mode_dc_bt")
self.verticalLayout_8.addWidget(self.image_mode_dc_bt)
self.framenumber_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framenumber_le.setObjectName("framenumber_le")
self.verticalLayout_8.addWidget(self.framenumber_le)
self.image_mode_motor_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_motor_bt.setObjectName("image_mode_motor_bt")
self.verticalLayout_8.addWidget(self.image_mode_motor_bt)
self.image_mode_stop_record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_stop_record_bt.setObjectName("image_mode_stop_record_bt")
self.verticalLayout_8.addWidget(self.image_mode_stop_record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_8)
self.horizontalLayout_5.addWidget(self.groupBox_7)
spacerItem2 = QtWidgets.QSpacerItem(261, 17, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_5.addItem(spacerItem2)
self.verticalLayout_5.addWidget(self.groupBox_6)
self.gridLayout.addWidget(self.splitter, 1, 0, 1, 1)
self.retranslateUi(image_Window)
QtCore.QMetaObject.connectSlotsByName(image_Window)
def retranslateUi(self, image_Window):
_translate = QtCore.QCoreApplication.translate
image_Window.setWindowTitle(_translate("image_Window", "影像窗口"))
self.groupBox_5.setTitle(_translate("image_Window", "GroupBox"))
self.label.setText(_translate("image_Window", "保存路径"))
self.label_4.setText(_translate("image_Window", "文件名"))
self.filepath_bt.setText(_translate("image_Window", "浏览"))
self.save_bt.setText(_translate("image_Window", "保存"))
self.t_label.setText(_translate("image_Window", "温度:无数据"))
self.hum_label.setText(_translate("image_Window", "湿度:无数据"))
self.groupBox_3.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox.setTitle(_translate("image_Window", "图像"))
self.groupBox_4.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_2.setTitle(_translate("image_Window", "光谱"))
self.groupBox_6.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_7.setTitle(_translate("image_Window", "GroupBox"))
self.label_3.setText(_translate("image_Window", "帧率"))
self.image_mode_focus_bt.setText(_translate("image_Window", "调焦"))
self.image_mode_exposureTime_bt.setText(_translate("image_Window", "曝光"))
self.label_5.setText(_translate("image_Window", "gain"))
self.image_mode_wb_bt.setText(_translate("image_Window", "白板"))
self.label_2.setText(_translate("image_Window", "帧数"))
self.image_mode_record_bt.setText(_translate("image_Window", "采集"))
self.image_mode_stop_focus_bt.setText(_translate("image_Window", "停止调焦"))
self.image_mode_dc_bt.setText(_translate("image_Window", "暗电流"))
self.image_mode_motor_bt.setText(_translate("image_Window", "马达"))
self.image_mode_stop_record_bt.setText(_translate("image_Window", "停止采集"))

View File

@ -0,0 +1,405 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>image_Window</class>
<widget class="QDialog" name="image_Window">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1179</width>
<height>683</height>
</rect>
</property>
<property name="mouseTracking">
<bool>false</bool>
</property>
<property name="windowTitle">
<string>影像窗口</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="hum_label">
<property name="text">
<string>湿度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>374</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSplitter" name="splitter_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>保存路径</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>文件名</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLineEdit" name="filepath_le">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="filename_le"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QPushButton" name="filepath_bt">
<property name="text">
<string>浏览</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="save_bt">
<property name="text">
<string>保存</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QLabel" name="t_label">
<property name="text">
<string>温度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>374</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QGroupBox" name="groupBox_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>2000</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>图像</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="image_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTextBrowser" name="statu_tb">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>8777215</width>
<height>100</height>
</size>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QGroupBox" name="groupBox_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>光谱</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QGridLayout" name="focus_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>500</width>
<height>500</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>帧率</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_focus_bt">
<property name="text">
<string>调焦</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_exposureTime_bt">
<property name="text">
<string>曝光</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>gain</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_wb_bt">
<property name="text">
<string>白板</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>帧数</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QLineEdit" name="framerate_le">
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_stop_focus_bt">
<property name="text">
<string>停止调焦</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="exposureTime_le"/>
</item>
<item>
<widget class="QLineEdit" name="gain_le"/>
</item>
<item>
<widget class="QPushButton" name="image_mode_dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="framenumber_le"/>
</item>
<item>
<widget class="QPushButton" name="image_mode_motor_bt">
<property name="text">
<string>马达</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_stop_record_bt">
<property name="text">
<string>停止采集</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>261</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,104 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'spectral_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_spectral_Window(object):
def setupUi(self, spectral_Window):
spectral_Window.setObjectName("spectral_Window")
spectral_Window.resize(820, 545)
self.label = QtWidgets.QLabel(spectral_Window)
self.label.setGeometry(QtCore.QRect(54, 10, 51, 20))
self.label.setObjectName("label")
self.filepath_le = QtWidgets.QLineEdit(spectral_Window)
self.filepath_le.setGeometry(QtCore.QRect(131, 10, 261, 21))
self.filepath_le.setObjectName("filepath_le")
self.label_2 = QtWidgets.QLabel(spectral_Window)
self.label_2.setGeometry(QtCore.QRect(54, 40, 41, 20))
self.label_2.setObjectName("label_2")
self.filename_le = QtWidgets.QLineEdit(spectral_Window)
self.filename_le.setGeometry(QtCore.QRect(131, 40, 261, 21))
self.filename_le.setObjectName("filename_le")
self.filepath_bt = QtWidgets.QPushButton(spectral_Window)
self.filepath_bt.setGeometry(QtCore.QRect(401, 10, 71, 21))
self.filepath_bt.setObjectName("filepath_bt")
self.statu_tb = QtWidgets.QTextBrowser(spectral_Window)
self.statu_tb.setGeometry(QtCore.QRect(620, 240, 161, 301))
self.statu_tb.setObjectName("statu_tb")
self.tabWidget = QtWidgets.QTabWidget(spectral_Window)
self.tabWidget.setGeometry(QtCore.QRect(10, 70, 591, 441))
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.gridLayoutWidget = QtWidgets.QWidget(self.tab)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 581, 411))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.spe_glo = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.spe_glo.setContentsMargins(0, 0, 0, 0)
self.spe_glo.setObjectName("spe_glo")
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.gridLayoutWidget_2 = QtWidgets.QWidget(self.tab_2)
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(-1, -1, 581, 411))
self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
self.align_glo = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.align_glo.setContentsMargins(0, 0, 0, 0)
self.align_glo.setObjectName("align_glo")
self.tabWidget.addTab(self.tab_2, "")
self.layoutWidget = QtWidgets.QWidget(spectral_Window)
self.layoutWidget.setGeometry(QtCore.QRect(610, 90, 195, 135))
self.layoutWidget.setObjectName("layoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.spectral_mode_align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_align_bt.setObjectName("spectral_mode_align_bt")
self.gridLayout.addWidget(self.spectral_mode_align_bt, 0, 0, 1, 1)
self.spectral_mode_stop_align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_stop_align_bt.setObjectName("spectral_mode_stop_align_bt")
self.gridLayout.addWidget(self.spectral_mode_stop_align_bt, 0, 1, 1, 1)
self.spectral_mode_wb_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_wb_bt.setObjectName("spectral_mode_wb_bt")
self.gridLayout.addWidget(self.spectral_mode_wb_bt, 1, 0, 1, 2)
self.spectral_mode_dc_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_dc_bt.setObjectName("spectral_mode_dc_bt")
self.gridLayout.addWidget(self.spectral_mode_dc_bt, 2, 0, 1, 2)
self.spectral_mode_record_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_record_bt.setObjectName("spectral_mode_record_bt")
self.gridLayout.addWidget(self.spectral_mode_record_bt, 3, 0, 1, 2)
self.t_label = QtWidgets.QLabel(spectral_Window)
self.t_label.setGeometry(QtCore.QRect(490, 11, 78, 23))
self.t_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.t_label.setObjectName("t_label")
self.hum_label = QtWidgets.QLabel(spectral_Window)
self.hum_label.setGeometry(QtCore.QRect(490, 40, 78, 23))
self.hum_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.hum_label.setObjectName("hum_label")
self.retranslateUi(spectral_Window)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(spectral_Window)
def retranslateUi(self, spectral_Window):
_translate = QtCore.QCoreApplication.translate
spectral_Window.setWindowTitle(_translate("spectral_Window", "光谱窗口"))
self.label.setText(_translate("spectral_Window", "保存路径"))
self.label_2.setText(_translate("spectral_Window", "文件名"))
self.filepath_bt.setText(_translate("spectral_Window", "浏览"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("spectral_Window", "spe"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("spectral_Window", "align"))
self.spectral_mode_align_bt.setText(_translate("spectral_Window", "align"))
self.spectral_mode_stop_align_bt.setText(_translate("spectral_Window", "stop align"))
self.spectral_mode_wb_bt.setText(_translate("spectral_Window", "曝光/白板"))
self.spectral_mode_dc_bt.setText(_translate("spectral_Window", "暗电流"))
self.spectral_mode_record_bt.setText(_translate("spectral_Window", "采集"))
self.t_label.setText(_translate("spectral_Window", "温度:无数据"))
self.hum_label.setText(_translate("spectral_Window", "湿度:无数据"))

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>spectral_Window</class>
<widget class="QDialog" name="spectral_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>820</width>
<height>545</height>
</rect>
</property>
<property name="windowTitle">
<string>光谱窗口</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>54</x>
<y>10</y>
<width>51</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>保存路径</string>
</property>
</widget>
<widget class="QLineEdit" name="filepath_le">
<property name="geometry">
<rect>
<x>131</x>
<y>10</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>54</x>
<y>40</y>
<width>41</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>文件名</string>
</property>
</widget>
<widget class="QLineEdit" name="filename_le">
<property name="geometry">
<rect>
<x>131</x>
<y>40</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="filepath_bt">
<property name="geometry">
<rect>
<x>401</x>
<y>10</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>浏览</string>
</property>
</widget>
<widget class="QTextBrowser" name="statu_tb">
<property name="geometry">
<rect>
<x>620</x>
<y>240</y>
<width>161</width>
<height>301</height>
</rect>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>591</width>
<height>441</height>
</rect>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>spe</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="spe_glo"/>
</widget>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>align</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget_2">
<property name="geometry">
<rect>
<x>-1</x>
<y>-1</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="align_glo"/>
</widget>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>610</x>
<y>90</y>
<width>195</width>
<height>135</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="spectral_mode_align_bt">
<property name="text">
<string>align</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="spectral_mode_stop_align_bt">
<property name="text">
<string>stop align</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="spectral_mode_wb_bt">
<property name="text">
<string>曝光/白板</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="spectral_mode_dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="spectral_mode_record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QLabel" name="t_label">
<property name="geometry">
<rect>
<x>490</x>
<y>11</y>
<width>78</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>温度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLabel" name="hum_label">
<property name="geometry">
<rect>
<x>490</x>
<y>40</y>
<width>78</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>湿度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
from record_system_v25.library.functions import get_path
print(get_path())

View File

@ -0,0 +1,23 @@
[bin]
binning = 1
start_column_binning_1 = 12
end_column_binning_1 = 1376
start_row_binning_1 = 1
end_row_binning_1 = 301
start_column_binning_2 = 13
end_column_binning_2 = 695
start_row_binning_2 = 1
end_row_binning_2 = 150
[image_record_param]
image_dir = D:/delete
default_image_name = tangdfg
framerate = 30
exposure_time = 199
gain = 0
frame_number = 10
[spectral_record_param]
spectral_dir = D:/py27_program/arcus
default_spectral_name = 555

View File

View File

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'arcus_control_ui.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_arcus_ui(object):
def setupUi(self, arcus_ui):
arcus_ui.setObjectName("arcus_ui")
arcus_ui.resize(354, 171)
self.centralwidget = QtWidgets.QWidget(arcus_ui)
self.centralwidget.setObjectName("centralwidget")
self.left_btn = QtWidgets.QPushButton(self.centralwidget)
self.left_btn.setGeometry(QtCore.QRect(100, 90, 61, 21))
self.left_btn.setObjectName("left_btn")
self.right_btn = QtWidgets.QPushButton(self.centralwidget)
self.right_btn.setGeometry(QtCore.QRect(170, 90, 61, 23))
self.right_btn.setObjectName("right_btn")
self.speed_lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.speed_lineEdit.setGeometry(QtCore.QRect(101, 10, 131, 20))
self.speed_lineEdit.setObjectName("speed_lineEdit")
self.speed_ScrollBar = QtWidgets.QScrollBar(self.centralwidget)
self.speed_ScrollBar.setGeometry(QtCore.QRect(100, 40, 131, 20))
self.speed_ScrollBar.setOrientation(QtCore.Qt.Horizontal)
self.speed_ScrollBar.setObjectName("speed_ScrollBar")
arcus_ui.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(arcus_ui)
self.menubar.setGeometry(QtCore.QRect(0, 0, 354, 23))
self.menubar.setObjectName("menubar")
arcus_ui.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(arcus_ui)
self.statusbar.setObjectName("statusbar")
arcus_ui.setStatusBar(self.statusbar)
self.retranslateUi(arcus_ui)
QtCore.QMetaObject.connectSlotsByName(arcus_ui)
def retranslateUi(self, arcus_ui):
_translate = QtCore.QCoreApplication.translate
arcus_ui.setWindowTitle(_translate("arcus_ui", "MainWindow"))
self.left_btn.setText(_translate("arcus_ui", ""))
self.right_btn.setText(_translate("arcus_ui", ""))

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>arcus_ui</class>
<widget class="QMainWindow" name="arcus_ui">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>171</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="left_btn">
<property name="geometry">
<rect>
<x>100</x>
<y>90</y>
<width>61</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>左</string>
</property>
</widget>
<widget class="QPushButton" name="right_btn">
<property name="geometry">
<rect>
<x>170</x>
<y>90</y>
<width>61</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>右</string>
</property>
</widget>
<widget class="QLineEdit" name="speed_lineEdit">
<property name="geometry">
<rect>
<x>101</x>
<y>10</y>
<width>131</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QScrollBar" name="speed_ScrollBar">
<property name="geometry">
<rect>
<x>100</x>
<y>40</y>
<width>131</width>
<height>20</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>354</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'enter_window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_enter_Window(object):
def setupUi(self, enter_Window):
enter_Window.setObjectName("enter_Window")
enter_Window.resize(651, 474)
self.centralwidget = QtWidgets.QWidget(enter_Window)
self.centralwidget.setObjectName("centralwidget")
self.image_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.image_mode_bt.setGeometry(QtCore.QRect(200, 180, 111, 51))
self.image_mode_bt.setObjectName("image_mode_bt")
self.spectral_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.spectral_mode_bt.setGeometry(QtCore.QRect(360, 180, 111, 51))
self.spectral_mode_bt.setObjectName("spectral_mode_bt")
self.camstatus_tb = QtWidgets.QTextBrowser(self.centralwidget)
self.camstatus_tb.setGeometry(QtCore.QRect(200, 240, 271, 81))
self.camstatus_tb.setObjectName("camstatus_tb")
enter_Window.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(enter_Window)
self.menubar.setGeometry(QtCore.QRect(0, 0, 651, 26))
self.menubar.setObjectName("menubar")
enter_Window.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(enter_Window)
self.statusbar.setObjectName("statusbar")
enter_Window.setStatusBar(self.statusbar)
self.actionwew_e = QtWidgets.QAction(enter_Window)
self.actionwew_e.setObjectName("actionwew_e")
self.retranslateUi(enter_Window)
QtCore.QMetaObject.connectSlotsByName(enter_Window)
def retranslateUi(self, enter_Window):
_translate = QtCore.QCoreApplication.translate
enter_Window.setWindowTitle(_translate("enter_Window", "主窗口"))
self.image_mode_bt.setText(_translate("enter_Window", "影像模式"))
self.spectral_mode_bt.setText(_translate("enter_Window", "光谱模式"))
self.actionwew_e.setText(_translate("enter_Window", "wew e"))

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>enter_Window</class>
<widget class="QMainWindow" name="enter_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>474</height>
</rect>
</property>
<property name="windowTitle">
<string>主窗口</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="image_mode_bt">
<property name="geometry">
<rect>
<x>200</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>影像模式</string>
</property>
</widget>
<widget class="QPushButton" name="spectral_mode_bt">
<property name="geometry">
<rect>
<x>360</x>
<y>180</y>
<width>111</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>光谱模式</string>
</property>
</widget>
<widget class="QTextBrowser" name="camstatus_tb">
<property name="geometry">
<rect>
<x>200</x>
<y>240</y>
<width>271</width>
<height>81</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>26</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionwew_e">
<property name="text">
<string>wew e</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,268 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'image_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_image_Window(object):
def setupUi(self, image_Window):
image_Window.setObjectName("image_Window")
image_Window.setEnabled(True)
image_Window.resize(1179, 683)
image_Window.setMouseTracking(False)
image_Window.setFocusPolicy(QtCore.Qt.NoFocus)
image_Window.setAutoFillBackground(False)
image_Window.setSizeGripEnabled(False)
image_Window.setModal(False)
self.gridLayout = QtWidgets.QGridLayout(image_Window)
self.gridLayout.setObjectName("gridLayout")
self.groupBox_5 = QtWidgets.QGroupBox(image_Window)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_5.sizePolicy().hasHeightForWidth())
self.groupBox_5.setSizePolicy(sizePolicy)
self.groupBox_5.setObjectName("groupBox_5")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.groupBox_5)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.hum_label = QtWidgets.QLabel(self.groupBox_5)
self.hum_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.hum_label.setObjectName("hum_label")
self.horizontalLayout_4.addWidget(self.hum_label)
spacerItem = QtWidgets.QSpacerItem(374, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem)
self.splitter_2 = QtWidgets.QSplitter(self.groupBox_5)
self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
self.splitter_2.setObjectName("splitter_2")
self.layoutWidget = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.layoutWidget)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.label_4 = QtWidgets.QLabel(self.layoutWidget)
self.label_4.setObjectName("label_4")
self.verticalLayout.addWidget(self.label_4)
self.layoutWidget1 = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget1.setObjectName("layoutWidget1")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.filepath_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filepath_le.setReadOnly(True)
self.filepath_le.setObjectName("filepath_le")
self.verticalLayout_2.addWidget(self.filepath_le)
self.filename_le = QtWidgets.QLineEdit(self.layoutWidget1)
self.filename_le.setObjectName("filename_le")
self.verticalLayout_2.addWidget(self.filename_le)
self.layoutWidget2 = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget2.setObjectName("layoutWidget2")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.layoutWidget2)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.filepath_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.filepath_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.filepath_bt.setAutoDefault(False)
self.filepath_bt.setObjectName("filepath_bt")
self.verticalLayout_3.addWidget(self.filepath_bt)
self.save_bt = QtWidgets.QPushButton(self.layoutWidget2)
self.save_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.save_bt.setAutoDefault(False)
self.save_bt.setObjectName("save_bt")
self.verticalLayout_3.addWidget(self.save_bt)
self.layoutWidget3 = QtWidgets.QWidget(self.splitter_2)
self.layoutWidget3.setObjectName("layoutWidget3")
self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.layoutWidget3)
self.verticalLayout_7.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_7.setObjectName("verticalLayout_7")
self.t_label = QtWidgets.QLabel(self.layoutWidget3)
self.t_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.t_label.setObjectName("t_label")
self.verticalLayout_7.addWidget(self.t_label)
self.horizontalLayout_4.addWidget(self.splitter_2)
spacerItem1 = QtWidgets.QSpacerItem(374, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem1)
self.gridLayout.addWidget(self.groupBox_5, 0, 0, 1, 1)
self.splitter = QtWidgets.QSplitter(image_Window)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setObjectName("splitter")
self.groupBox_3 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth())
self.groupBox_3.setSizePolicy(sizePolicy)
self.groupBox_3.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox_3.setMaximumSize(QtCore.QSize(2000, 16777215))
self.groupBox_3.setObjectName("groupBox_3")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_3)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.groupBox = QtWidgets.QGroupBox(self.groupBox_3)
self.groupBox.setObjectName("groupBox")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox)
self.horizontalLayout.setObjectName("horizontalLayout")
self.image_glo = QtWidgets.QGridLayout()
self.image_glo.setObjectName("image_glo")
self.horizontalLayout.addLayout(self.image_glo)
self.verticalLayout_4.addWidget(self.groupBox)
self.statu_tb = QtWidgets.QTextBrowser(self.groupBox_3)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.statu_tb.sizePolicy().hasHeightForWidth())
self.statu_tb.setSizePolicy(sizePolicy)
self.statu_tb.setMaximumSize(QtCore.QSize(8777215, 100))
self.statu_tb.setReadOnly(True)
self.statu_tb.setObjectName("statu_tb")
self.verticalLayout_4.addWidget(self.statu_tb)
self.groupBox_4 = QtWidgets.QGroupBox(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_4.sizePolicy().hasHeightForWidth())
self.groupBox_4.setSizePolicy(sizePolicy)
self.groupBox_4.setObjectName("groupBox_4")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_4)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.groupBox_2 = QtWidgets.QGroupBox(self.groupBox_4)
self.groupBox_2.setObjectName("groupBox_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox_2)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.focus_glo = QtWidgets.QGridLayout()
self.focus_glo.setObjectName("focus_glo")
self.horizontalLayout_2.addLayout(self.focus_glo)
self.verticalLayout_5.addWidget(self.groupBox_2)
self.groupBox_6 = QtWidgets.QGroupBox(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_6.sizePolicy().hasHeightForWidth())
self.groupBox_6.setSizePolicy(sizePolicy)
self.groupBox_6.setObjectName("groupBox_6")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.groupBox_6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.groupBox_7 = QtWidgets.QGroupBox(self.groupBox_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_7.sizePolicy().hasHeightForWidth())
self.groupBox_7.setSizePolicy(sizePolicy)
self.groupBox_7.setMaximumSize(QtCore.QSize(500, 500))
self.groupBox_7.setObjectName("groupBox_7")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.groupBox_7)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.label_3 = QtWidgets.QLabel(self.groupBox_7)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.verticalLayout_6.addWidget(self.label_3)
self.image_mode_focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_focus_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.image_mode_focus_bt.setAutoDefault(False)
self.image_mode_focus_bt.setObjectName("image_mode_focus_bt")
self.verticalLayout_6.addWidget(self.image_mode_focus_bt)
self.image_mode_exposureTime_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_exposureTime_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.image_mode_exposureTime_bt.setAutoDefault(False)
self.image_mode_exposureTime_bt.setObjectName("image_mode_exposureTime_bt")
self.verticalLayout_6.addWidget(self.image_mode_exposureTime_bt)
self.label_5 = QtWidgets.QLabel(self.groupBox_7)
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.verticalLayout_6.addWidget(self.label_5)
self.image_mode_wb_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_wb_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.image_mode_wb_bt.setAutoDefault(False)
self.image_mode_wb_bt.setObjectName("image_mode_wb_bt")
self.verticalLayout_6.addWidget(self.image_mode_wb_bt)
self.label_2 = QtWidgets.QLabel(self.groupBox_7)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.verticalLayout_6.addWidget(self.label_2)
self.image_mode_record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_record_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.image_mode_record_bt.setAutoDefault(False)
self.image_mode_record_bt.setObjectName("image_mode_record_bt")
self.verticalLayout_6.addWidget(self.image_mode_record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_6)
self.verticalLayout_8 = QtWidgets.QVBoxLayout()
self.verticalLayout_8.setObjectName("verticalLayout_8")
self.framerate_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framerate_le.setReadOnly(False)
self.framerate_le.setObjectName("framerate_le")
self.verticalLayout_8.addWidget(self.framerate_le)
self.image_mode_stop_focus_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_stop_focus_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.image_mode_stop_focus_bt.setAutoDefault(False)
self.image_mode_stop_focus_bt.setObjectName("image_mode_stop_focus_bt")
self.verticalLayout_8.addWidget(self.image_mode_stop_focus_bt)
self.exposure_time_le = QtWidgets.QLineEdit(self.groupBox_7)
self.exposure_time_le.setObjectName("exposure_time_le")
self.verticalLayout_8.addWidget(self.exposure_time_le)
self.gain_le = QtWidgets.QLineEdit(self.groupBox_7)
self.gain_le.setObjectName("gain_le")
self.verticalLayout_8.addWidget(self.gain_le)
self.image_mode_dc_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_dc_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.image_mode_dc_bt.setAutoDefault(False)
self.image_mode_dc_bt.setObjectName("image_mode_dc_bt")
self.verticalLayout_8.addWidget(self.image_mode_dc_bt)
self.framenumber_le = QtWidgets.QLineEdit(self.groupBox_7)
self.framenumber_le.setObjectName("framenumber_le")
self.verticalLayout_8.addWidget(self.framenumber_le)
self.image_mode_motor_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_motor_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.image_mode_motor_bt.setAutoDefault(False)
self.image_mode_motor_bt.setObjectName("image_mode_motor_bt")
self.verticalLayout_8.addWidget(self.image_mode_motor_bt)
self.image_mode_stop_record_bt = QtWidgets.QPushButton(self.groupBox_7)
self.image_mode_stop_record_bt.setFocusPolicy(QtCore.Qt.ClickFocus)
self.image_mode_stop_record_bt.setAutoDefault(False)
self.image_mode_stop_record_bt.setObjectName("image_mode_stop_record_bt")
self.verticalLayout_8.addWidget(self.image_mode_stop_record_bt)
self.horizontalLayout_3.addLayout(self.verticalLayout_8)
self.horizontalLayout_5.addWidget(self.groupBox_7)
spacerItem2 = QtWidgets.QSpacerItem(261, 17, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_5.addItem(spacerItem2)
self.verticalLayout_5.addWidget(self.groupBox_6)
self.gridLayout.addWidget(self.splitter, 1, 0, 1, 1)
self.retranslateUi(image_Window)
QtCore.QMetaObject.connectSlotsByName(image_Window)
def retranslateUi(self, image_Window):
_translate = QtCore.QCoreApplication.translate
image_Window.setWindowTitle(_translate("image_Window", "影像窗口"))
self.groupBox_5.setTitle(_translate("image_Window", "GroupBox"))
self.hum_label.setText(_translate("image_Window", "湿度:无数据"))
self.label.setText(_translate("image_Window", "保存路径"))
self.label_4.setText(_translate("image_Window", "文件名"))
self.filepath_bt.setText(_translate("image_Window", "浏览"))
self.save_bt.setText(_translate("image_Window", "保存"))
self.t_label.setText(_translate("image_Window", "温度:无数据"))
self.groupBox_3.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox.setTitle(_translate("image_Window", "图像"))
self.groupBox_4.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_2.setTitle(_translate("image_Window", "光谱"))
self.groupBox_6.setTitle(_translate("image_Window", "GroupBox"))
self.groupBox_7.setTitle(_translate("image_Window", "GroupBox"))
self.label_3.setText(_translate("image_Window", "帧率"))
self.image_mode_focus_bt.setText(_translate("image_Window", "调焦"))
self.image_mode_exposureTime_bt.setText(_translate("image_Window", "曝光"))
self.label_5.setText(_translate("image_Window", "gain"))
self.image_mode_wb_bt.setText(_translate("image_Window", "白板"))
self.label_2.setText(_translate("image_Window", "帧数"))
self.image_mode_record_bt.setText(_translate("image_Window", "采集"))
self.image_mode_stop_focus_bt.setText(_translate("image_Window", "停止调焦"))
self.image_mode_dc_bt.setText(_translate("image_Window", "暗电流"))
self.image_mode_motor_bt.setText(_translate("image_Window", "马达"))
self.image_mode_stop_record_bt.setText(_translate("image_Window", "停止采集"))

View File

@ -0,0 +1,468 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>image_Window</class>
<widget class="QDialog" name="image_Window">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1179</width>
<height>683</height>
</rect>
</property>
<property name="mouseTracking">
<bool>false</bool>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="windowTitle">
<string>影像窗口</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="hum_label">
<property name="text">
<string>湿度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>374</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSplitter" name="splitter_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>保存路径</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>文件名</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLineEdit" name="filepath_le">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="filename_le"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QPushButton" name="filepath_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>浏览</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="save_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>保存</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QLabel" name="t_label">
<property name="text">
<string>温度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>374</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QGroupBox" name="groupBox_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>2000</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>图像</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="image_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTextBrowser" name="statu_tb">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>8777215</width>
<height>100</height>
</size>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QGroupBox" name="groupBox_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>光谱</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QGridLayout" name="focus_glo"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>500</width>
<height>500</height>
</size>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>帧率</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_focus_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>调焦</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_exposureTime_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>曝光</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>gain</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_wb_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>白板</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>帧数</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_record_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>采集</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QLineEdit" name="framerate_le">
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_stop_focus_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>停止调焦</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="exposure_time_le"/>
</item>
<item>
<widget class="QLineEdit" name="gain_le"/>
</item>
<item>
<widget class="QPushButton" name="image_mode_dc_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>暗电流</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="framenumber_le"/>
</item>
<item>
<widget class="QPushButton" name="image_mode_motor_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>马达</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="image_mode_stop_record_bt">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string>停止采集</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>261</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,104 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'spectral_Window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_spectral_Window(object):
def setupUi(self, spectral_Window):
spectral_Window.setObjectName("spectral_Window")
spectral_Window.resize(820, 545)
self.label = QtWidgets.QLabel(spectral_Window)
self.label.setGeometry(QtCore.QRect(54, 10, 51, 20))
self.label.setObjectName("label")
self.filepath_le = QtWidgets.QLineEdit(spectral_Window)
self.filepath_le.setGeometry(QtCore.QRect(131, 10, 261, 21))
self.filepath_le.setObjectName("filepath_le")
self.label_2 = QtWidgets.QLabel(spectral_Window)
self.label_2.setGeometry(QtCore.QRect(54, 40, 41, 20))
self.label_2.setObjectName("label_2")
self.filename_le = QtWidgets.QLineEdit(spectral_Window)
self.filename_le.setGeometry(QtCore.QRect(131, 40, 261, 21))
self.filename_le.setObjectName("filename_le")
self.filepath_bt = QtWidgets.QPushButton(spectral_Window)
self.filepath_bt.setGeometry(QtCore.QRect(401, 10, 71, 21))
self.filepath_bt.setObjectName("filepath_bt")
self.statu_tb = QtWidgets.QTextBrowser(spectral_Window)
self.statu_tb.setGeometry(QtCore.QRect(620, 240, 161, 301))
self.statu_tb.setObjectName("statu_tb")
self.tabWidget = QtWidgets.QTabWidget(spectral_Window)
self.tabWidget.setGeometry(QtCore.QRect(10, 70, 591, 441))
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.gridLayoutWidget = QtWidgets.QWidget(self.tab)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 581, 411))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.spe_glo = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.spe_glo.setContentsMargins(0, 0, 0, 0)
self.spe_glo.setObjectName("spe_glo")
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.gridLayoutWidget_2 = QtWidgets.QWidget(self.tab_2)
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(-1, -1, 581, 411))
self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
self.align_glo = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.align_glo.setContentsMargins(0, 0, 0, 0)
self.align_glo.setObjectName("align_glo")
self.tabWidget.addTab(self.tab_2, "")
self.layoutWidget = QtWidgets.QWidget(spectral_Window)
self.layoutWidget.setGeometry(QtCore.QRect(610, 90, 195, 135))
self.layoutWidget.setObjectName("layoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.spectral_mode_align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_align_bt.setObjectName("spectral_mode_align_bt")
self.gridLayout.addWidget(self.spectral_mode_align_bt, 0, 0, 1, 1)
self.spectral_mode_stop_align_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_stop_align_bt.setObjectName("spectral_mode_stop_align_bt")
self.gridLayout.addWidget(self.spectral_mode_stop_align_bt, 0, 1, 1, 1)
self.spectral_mode_wb_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_wb_bt.setObjectName("spectral_mode_wb_bt")
self.gridLayout.addWidget(self.spectral_mode_wb_bt, 1, 0, 1, 2)
self.spectral_mode_dc_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_dc_bt.setObjectName("spectral_mode_dc_bt")
self.gridLayout.addWidget(self.spectral_mode_dc_bt, 2, 0, 1, 2)
self.spectral_mode_record_bt = QtWidgets.QPushButton(self.layoutWidget)
self.spectral_mode_record_bt.setObjectName("spectral_mode_record_bt")
self.gridLayout.addWidget(self.spectral_mode_record_bt, 3, 0, 1, 2)
self.t_label = QtWidgets.QLabel(spectral_Window)
self.t_label.setGeometry(QtCore.QRect(490, 11, 78, 23))
self.t_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.t_label.setObjectName("t_label")
self.hum_label = QtWidgets.QLabel(spectral_Window)
self.hum_label.setGeometry(QtCore.QRect(490, 40, 78, 23))
self.hum_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.hum_label.setObjectName("hum_label")
self.retranslateUi(spectral_Window)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(spectral_Window)
def retranslateUi(self, spectral_Window):
_translate = QtCore.QCoreApplication.translate
spectral_Window.setWindowTitle(_translate("spectral_Window", "光谱窗口"))
self.label.setText(_translate("spectral_Window", "保存路径"))
self.label_2.setText(_translate("spectral_Window", "文件名"))
self.filepath_bt.setText(_translate("spectral_Window", "浏览"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("spectral_Window", "spe"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("spectral_Window", "align"))
self.spectral_mode_align_bt.setText(_translate("spectral_Window", "align"))
self.spectral_mode_stop_align_bt.setText(_translate("spectral_Window", "stop align"))
self.spectral_mode_wb_bt.setText(_translate("spectral_Window", "曝光/白板"))
self.spectral_mode_dc_bt.setText(_translate("spectral_Window", "暗电流"))
self.spectral_mode_record_bt.setText(_translate("spectral_Window", "采集"))
self.t_label.setText(_translate("spectral_Window", "温度:无数据"))
self.hum_label.setText(_translate("spectral_Window", "湿度:无数据"))

View File

@ -0,0 +1,215 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>spectral_Window</class>
<widget class="QDialog" name="spectral_Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>820</width>
<height>545</height>
</rect>
</property>
<property name="windowTitle">
<string>光谱窗口</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>54</x>
<y>10</y>
<width>51</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>保存路径</string>
</property>
</widget>
<widget class="QLineEdit" name="filepath_le">
<property name="geometry">
<rect>
<x>131</x>
<y>10</y>
<width>261</width>
<height>21</height>
</rect>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>54</x>
<y>40</y>
<width>41</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>文件名</string>
</property>
</widget>
<widget class="QLineEdit" name="filename_le">
<property name="geometry">
<rect>
<x>131</x>
<y>40</y>
<width>261</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="filepath_bt">
<property name="geometry">
<rect>
<x>401</x>
<y>10</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>浏览</string>
</property>
</widget>
<widget class="QTextBrowser" name="statu_tb">
<property name="geometry">
<rect>
<x>620</x>
<y>240</y>
<width>161</width>
<height>301</height>
</rect>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>591</width>
<height>441</height>
</rect>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>spe</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="spe_glo"/>
</widget>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>align</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget_2">
<property name="geometry">
<rect>
<x>-1</x>
<y>-1</y>
<width>581</width>
<height>411</height>
</rect>
</property>
<layout class="QGridLayout" name="align_glo"/>
</widget>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>610</x>
<y>90</y>
<width>195</width>
<height>135</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="spectral_mode_align_bt">
<property name="text">
<string>align</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="spectral_mode_stop_align_bt">
<property name="text">
<string>stop align</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="spectral_mode_wb_bt">
<property name="text">
<string>曝光/白板</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="spectral_mode_dc_bt">
<property name="text">
<string>暗电流</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="spectral_mode_record_bt">
<property name="text">
<string>采集</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QLabel" name="t_label">
<property name="geometry">
<rect>
<x>490</x>
<y>11</y>
<width>78</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>温度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLabel" name="hum_label">
<property name="geometry">
<rect>
<x>490</x>
<y>40</y>
<width>78</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>湿度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,377 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>spectral_Window_phone</class>
<widget class="QDialog" name="spectral_Window_phone">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>568</width>
<height>1144</height>
</rect>
</property>
<property name="windowTitle">
<string>光谱窗口</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QFrame" name="frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>600</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<layout class="QGridLayout" name="spe_glo"/>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="frame_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>600</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QPushButton" name="spectral_mode_wb_bt">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">/*按钮普通态*/
QPushButton
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:25pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
/*background-color:rgb(14 , 150 , 254);*/
/*边框圆角半径为8像素*/
/*border-radius:8px;*/
}
/*按钮停留态*/
QPushButton:hover
{
/*背景颜色*/
background-color:rgb(44 , 137 , 255);
/*边框圆角半径为8像素*/
border-radius:20px;
}
/*按钮按下态*/
QPushButton:pressed
{
/*背景颜色*/
/*background-color:rgb(14 , 135 , 228);*/
background-color:red;
/*左内边距为3像素让按下时字向右移动3像素*/
padding-left:3px;
/*上内边距为3像素让按下时字向下移动3像素*/
padding-top:3px;
}</string>
</property>
<property name="text">
<string>曝光/白板</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="spectral_mode_dc_bt">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">/*按钮普通态*/
QPushButton
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:25pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
/*background-color:rgb(14 , 150 , 254);*/
/*边框圆角半径为8像素*/
/*border-radius:8px;*/
}
/*按钮停留态*/
QPushButton:hover
{
/*背景颜色*/
background-color:rgb(44 , 137 , 255);
/*边框圆角半径为8像素*/
border-radius:20px;
}
/*按钮按下态*/
QPushButton:pressed
{
/*背景颜色*/
/*background-color:rgb(14 , 135 , 228);*/
background-color:red;
/*左内边距为3像素让按下时字向右移动3像素*/
padding-left:3px;
/*上内边距为3像素让按下时字向下移动3像素*/
padding-top:3px;
}</string>
</property>
<property name="text">
<string>暗电流</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="spectral_mode_record_bt">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">/*按钮普通态*/
QPushButton
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:25pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
/*background-color:rgb(14 , 150 , 254);*/
/*边框圆角半径为8像素*/
/*border-radius:8px;*/
}
/*按钮停留态*/
QPushButton:hover
{
/*背景颜色*/
background-color:rgb(44 , 137 , 255);
/*边框圆角半径为8像素*/
border-radius:20px;
}
/*按钮按下态*/
QPushButton:pressed
{
/*背景颜色*/
/*background-color:rgb(14 , 135 , 228);*/
background-color:red;
/*左内边距为3像素让按下时字向右移动3像素*/
padding-left:3px;
/*上内边距为3像素让按下时字向下移动3像素*/
padding-top:3px;
}</string>
</property>
<property name="text">
<string>采集</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QFrame" name="frame_3">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>150</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>25</pointsize>
</font>
</property>
<property name="text">
<string>文件名</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="filename_le">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>61</pointsize>
</font>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="t_label">
<property name="text">
<string>温度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="hum_label">
<property name="text">
<string>湿度:无数据</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,27 @@
[bin]
binning = 1
start_column_binning_1 = 12
end_column_binning_1 = 1376
start_row_binning_1 = 0
end_row_binning_1 = 300
start_column_binning_2 = 13
end_column_binning_2 = 695
start_row_binning_2 = 0
end_row_binning_2 = 150
[image_record_param]
image_dir = D:\py_program\corning410\record_system_v26/image
default_image_name = test_image
framerate = 10
exposure_time = 99997
gain = 0.0
frame_number = 1000
arcus_speed = 500
[spectral_record_param]
spectral_dir = D:\py_program\corning410\record_system_v26/spectral
default_spectral_name = 500
spectral_number = 500
framenumber_average = 500
exposure_time_spectral = 500

View File

View File

@ -0,0 +1,150 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'enter_window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_enter_Window(object):
def setupUi(self, enter_Window):
enter_Window.setObjectName("enter_Window")
enter_Window.setEnabled(True)
enter_Window.resize(651, 474)
self.centralwidget = QtWidgets.QWidget(enter_Window)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.camstatus_label = QtWidgets.QLabel(self.centralwidget)
self.camstatus_label.setEnabled(True)
self.camstatus_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:30pt;\n"
" /*字体颜色为白色*/\n"
" /*color:white;*/\n"
" /*背景颜色*/\n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}")
self.camstatus_label.setAlignment(QtCore.Qt.AlignCenter)
self.camstatus_label.setObjectName("camstatus_label")
self.gridLayout.addWidget(self.camstatus_label, 2, 0, 1, 1)
self.spectral_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.spectral_mode_bt.setEnabled(True)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_bt.setSizePolicy(sizePolicy)
self.spectral_mode_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_bt.setObjectName("spectral_mode_bt")
self.gridLayout.addWidget(self.spectral_mode_bt, 1, 0, 1, 1)
self.image_mode_phone_bt = QtWidgets.QPushButton(self.centralwidget)
self.image_mode_phone_bt.setEnabled(True)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_phone_bt.sizePolicy().hasHeightForWidth())
self.image_mode_phone_bt.setSizePolicy(sizePolicy)
self.image_mode_phone_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_phone_bt.setObjectName("image_mode_phone_bt")
self.gridLayout.addWidget(self.image_mode_phone_bt, 0, 0, 1, 1)
enter_Window.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(enter_Window)
self.menubar.setGeometry(QtCore.QRect(0, 0, 651, 23))
self.menubar.setObjectName("menubar")
enter_Window.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(enter_Window)
self.statusbar.setObjectName("statusbar")
enter_Window.setStatusBar(self.statusbar)
self.actionwew_e = QtWidgets.QAction(enter_Window)
self.actionwew_e.setObjectName("actionwew_e")
self.retranslateUi(enter_Window)
QtCore.QMetaObject.connectSlotsByName(enter_Window)
def retranslateUi(self, enter_Window):
_translate = QtCore.QCoreApplication.translate
enter_Window.setWindowTitle(_translate("enter_Window", "主窗口"))
self.camstatus_label.setText(_translate("enter_Window", "正在打开相机..."))
self.spectral_mode_bt.setText(_translate("enter_Window", "光谱模式"))
self.image_mode_phone_bt.setText(_translate("enter_Window", "影像模式"))
self.actionwew_e.setText(_translate("enter_Window", "wew e"))

View File

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>enter_Window</class>
<widget class="QMainWindow" name="enter_Window">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>474</height>
</rect>
</property>
<property name="windowTitle">
<string>主窗口</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QLabel" name="camstatus_label">
<property name="enabled">
<bool>true</bool>
</property>
<property name="styleSheet">
<string notr="true">QLabel
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:30pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
background-color:rgb(225 , 225 , 225);
/*边框圆角半径为8像素*/
border-radius:20px;
}</string>
</property>
<property name="text">
<string>正在打开相机...</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="spectral_mode_bt">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">/*按钮普通态*/
QPushButton
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:25pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
background-color:rgb(225 , 225 , 225);
/*边框圆角半径为8像素*/
border-radius:20px;
}
/*按钮停留态*/
QPushButton:hover
{
/*背景颜色*/
background-color:rgb(44 , 137 , 255);
/*边框圆角半径为8像素*/
/*border-radius:20px;*/
}
/*按钮按下态*/
QPushButton:pressed
{
/*背景颜色*/
background-color:rgb(255 , 0 , 0);
/*左内边距为3像素让按下时字向右移动3像素*/
padding-left:3px;
/*上内边距为3像素让按下时字向下移动3像素*/
padding-top:3px;
}</string>
</property>
<property name="text">
<string>光谱模式</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="image_mode_phone_bt">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">/*按钮普通态*/
QPushButton
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:25pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
background-color:rgb(225 , 225 , 225);
/*边框圆角半径为8像素*/
border-radius:20px;
}
/*按钮停留态*/
QPushButton:hover
{
/*背景颜色*/
background-color:rgb(44 , 137 , 255);
/*边框圆角半径为8像素*/
/*border-radius:20px;*/
}
/*按钮按下态*/
QPushButton:pressed
{
/*背景颜色*/
background-color:rgb(255 , 0 , 0);
/*左内边距为3像素让按下时字向右移动3像素*/
padding-left:3px;
/*上内边距为3像素让按下时字向下移动3像素*/
padding-top:3px;
}</string>
</property>
<property name="text">
<string>影像模式</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionwew_e">
<property name="text">
<string>wew e</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,830 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'image_Window_phone.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_image_Window_phone(object):
def setupUi(self, image_Window_phone):
image_Window_phone.setObjectName("image_Window_phone")
image_Window_phone.setEnabled(True)
image_Window_phone.resize(518, 1174)
image_Window_phone.setMouseTracking(False)
image_Window_phone.setAutoFillBackground(False)
image_Window_phone.setSizeGripEnabled(False)
image_Window_phone.setModal(False)
self.gridLayout_6 = QtWidgets.QGridLayout(image_Window_phone)
self.gridLayout_6.setObjectName("gridLayout_6")
self.splitter = QtWidgets.QSplitter(image_Window_phone)
self.splitter.setOrientation(QtCore.Qt.Vertical)
self.splitter.setObjectName("splitter")
self.frame_2 = QtWidgets.QFrame(self.splitter)
self.frame_2.setFrameShape(QtWidgets.QFrame.Box)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_2.setObjectName("frame_2")
self.gridLayout_2 = QtWidgets.QGridLayout(self.frame_2)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.gridLayout_2.setObjectName("gridLayout_2")
self.image_glo = QtWidgets.QGridLayout()
self.image_glo.setObjectName("image_glo")
self.gridLayout_2.addLayout(self.image_glo, 0, 0, 1, 1)
self.frame = QtWidgets.QFrame(self.splitter)
self.frame.setMaximumSize(QtCore.QSize(16777215, 600))
self.frame.setFrameShape(QtWidgets.QFrame.Box)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.gridLayout = QtWidgets.QGridLayout(self.frame)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.focus_glo = QtWidgets.QGridLayout()
self.focus_glo.setObjectName("focus_glo")
self.gridLayout.addLayout(self.focus_glo, 0, 0, 1, 1)
self.gridLayout_6.addWidget(self.splitter, 0, 0, 1, 1)
self.frame_3 = QtWidgets.QFrame(image_Window_phone)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_3.sizePolicy().hasHeightForWidth())
self.frame_3.setSizePolicy(sizePolicy)
self.frame_3.setMaximumSize(QtCore.QSize(16777215, 600))
self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_3.setObjectName("frame_3")
self.gridLayout_5 = QtWidgets.QGridLayout(self.frame_3)
self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
self.gridLayout_5.setObjectName("gridLayout_5")
self.frame_7 = QtWidgets.QFrame(self.frame_3)
self.frame_7.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_7.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_7.setObjectName("frame_7")
self.gridLayout_4 = QtWidgets.QGridLayout(self.frame_7)
self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
self.gridLayout_4.setObjectName("gridLayout_4")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.image_mode_exposureTime_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_exposureTime_bt.sizePolicy().hasHeightForWidth())
self.image_mode_exposureTime_bt.setSizePolicy(sizePolicy)
self.image_mode_exposureTime_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_exposureTime_bt.setFont(font)
self.image_mode_exposureTime_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_exposureTime_bt.setAutoDefault(False)
self.image_mode_exposureTime_bt.setObjectName("image_mode_exposureTime_bt")
self.verticalLayout.addWidget(self.image_mode_exposureTime_bt)
self.image_mode_focus_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_focus_bt.sizePolicy().hasHeightForWidth())
self.image_mode_focus_bt.setSizePolicy(sizePolicy)
self.image_mode_focus_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_focus_bt.setFont(font)
self.image_mode_focus_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_focus_bt.setAutoDefault(False)
self.image_mode_focus_bt.setObjectName("image_mode_focus_bt")
self.verticalLayout.addWidget(self.image_mode_focus_bt)
self.image_mode_dc_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_dc_bt.sizePolicy().hasHeightForWidth())
self.image_mode_dc_bt.setSizePolicy(sizePolicy)
self.image_mode_dc_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_dc_bt.setFont(font)
self.image_mode_dc_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_dc_bt.setAutoDefault(False)
self.image_mode_dc_bt.setObjectName("image_mode_dc_bt")
self.verticalLayout.addWidget(self.image_mode_dc_bt)
self.image_mode_wb_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_wb_bt.sizePolicy().hasHeightForWidth())
self.image_mode_wb_bt.setSizePolicy(sizePolicy)
self.image_mode_wb_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_wb_bt.setFont(font)
self.image_mode_wb_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_wb_bt.setAutoDefault(False)
self.image_mode_wb_bt.setObjectName("image_mode_wb_bt")
self.verticalLayout.addWidget(self.image_mode_wb_bt)
self.image_mode_record_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_record_bt.sizePolicy().hasHeightForWidth())
self.image_mode_record_bt.setSizePolicy(sizePolicy)
self.image_mode_record_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_record_bt.setFont(font)
self.image_mode_record_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_record_bt.setAutoDefault(False)
self.image_mode_record_bt.setObjectName("image_mode_record_bt")
self.verticalLayout.addWidget(self.image_mode_record_bt)
self.save_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.save_bt.sizePolicy().hasHeightForWidth())
self.save_bt.setSizePolicy(sizePolicy)
self.save_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.save_bt.setFont(font)
self.save_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.save_bt.setAutoDefault(False)
self.save_bt.setObjectName("save_bt")
self.verticalLayout.addWidget(self.save_bt)
self.gridLayout_4.addLayout(self.verticalLayout, 0, 0, 1, 1)
self.gridLayout_5.addWidget(self.frame_7, 0, 0, 1, 1)
self.frame_6 = QtWidgets.QFrame(self.frame_3)
self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_6.setObjectName("frame_6")
self.gridLayout_3 = QtWidgets.QGridLayout(self.frame_6)
self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
self.gridLayout_3.setObjectName("gridLayout_3")
self.frame_8 = QtWidgets.QFrame(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_8.sizePolicy().hasHeightForWidth())
self.frame_8.setSizePolicy(sizePolicy)
self.frame_8.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_8.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_8.setLineWidth(0)
self.frame_8.setObjectName("frame_8")
self.gridLayout_3.addWidget(self.frame_8, 3, 0, 1, 1)
self.frame_10 = QtWidgets.QFrame(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_10.sizePolicy().hasHeightForWidth())
self.frame_10.setSizePolicy(sizePolicy)
self.frame_10.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_10.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_10.setObjectName("frame_10")
self.gridLayout_8 = QtWidgets.QGridLayout(self.frame_10)
self.gridLayout_8.setContentsMargins(0, 0, 0, 0)
self.gridLayout_8.setSpacing(0)
self.gridLayout_8.setObjectName("gridLayout_8")
self.label_2 = QtWidgets.QLabel(self.frame_10)
self.label_2.setMinimumSize(QtCore.QSize(110, 0))
self.label_2.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_8.addWidget(self.label_2, 0, 0, 1, 1)
self.framenumber_le = QtWidgets.QLineEdit(self.frame_10)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.framenumber_le.sizePolicy().hasHeightForWidth())
self.framenumber_le.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(42)
self.framenumber_le.setFont(font)
self.framenumber_le.setObjectName("framenumber_le")
self.gridLayout_8.addWidget(self.framenumber_le, 0, 1, 1, 1)
self.gridLayout_3.addWidget(self.frame_10, 4, 0, 1, 1)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_3 = QtWidgets.QLabel(self.frame_6)
self.label_3.setMinimumSize(QtCore.QSize(110, 0))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(20)
self.label_3.setFont(font)
self.label_3.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.horizontalLayout_3.addWidget(self.label_3)
self.framerate_le = QtWidgets.QLineEdit(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.framerate_le.sizePolicy().hasHeightForWidth())
self.framerate_le.setSizePolicy(sizePolicy)
self.framerate_le.setMaximumSize(QtCore.QSize(16777215, 106))
font = QtGui.QFont()
font.setPointSize(42)
self.framerate_le.setFont(font)
self.framerate_le.setReadOnly(False)
self.framerate_le.setObjectName("framerate_le")
self.horizontalLayout_3.addWidget(self.framerate_le)
self.gridLayout_3.addLayout(self.horizontalLayout_3, 1, 0, 1, 1)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_5 = QtWidgets.QLabel(self.frame_6)
self.label_5.setMinimumSize(QtCore.QSize(110, 0))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(20)
self.label_5.setFont(font)
self.label_5.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_5.setObjectName("label_5")
self.horizontalLayout_4.addWidget(self.label_5)
self.exposure_time_le = QtWidgets.QLineEdit(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.exposure_time_le.sizePolicy().hasHeightForWidth())
self.exposure_time_le.setSizePolicy(sizePolicy)
self.exposure_time_le.setMaximumSize(QtCore.QSize(16777215, 106))
font = QtGui.QFont()
font.setPointSize(42)
self.exposure_time_le.setFont(font)
self.exposure_time_le.setObjectName("exposure_time_le")
self.horizontalLayout_4.addWidget(self.exposure_time_le)
self.gridLayout_3.addLayout(self.horizontalLayout_4, 0, 0, 1, 1)
self.frame_5 = QtWidgets.QFrame(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_5.sizePolicy().hasHeightForWidth())
self.frame_5.setSizePolicy(sizePolicy)
self.frame_5.setMinimumSize(QtCore.QSize(160, 0))
self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_5.setObjectName("frame_5")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.frame_5)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_7 = QtWidgets.QLabel(self.frame_5)
self.label_7.setMinimumSize(QtCore.QSize(110, 0))
self.label_7.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_7.setAlignment(QtCore.Qt.AlignCenter)
self.label_7.setObjectName("label_7")
self.horizontalLayout_2.addWidget(self.label_7)
self.arcus_left_bt = QtWidgets.QPushButton(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_left_bt.sizePolicy().hasHeightForWidth())
self.arcus_left_bt.setSizePolicy(sizePolicy)
self.arcus_left_bt.setMinimumSize(QtCore.QSize(50, 0))
self.arcus_left_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.arcus_left_bt.setFont(font)
self.arcus_left_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.arcus_left_bt.setAutoDefault(False)
self.arcus_left_bt.setObjectName("arcus_left_bt")
self.horizontalLayout_2.addWidget(self.arcus_left_bt)
self.arcus_speed_le = QtWidgets.QLineEdit(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_speed_le.sizePolicy().hasHeightForWidth())
self.arcus_speed_le.setSizePolicy(sizePolicy)
self.arcus_speed_le.setMinimumSize(QtCore.QSize(60, 0))
self.arcus_speed_le.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setPointSize(42)
self.arcus_speed_le.setFont(font)
self.arcus_speed_le.setObjectName("arcus_speed_le")
self.horizontalLayout_2.addWidget(self.arcus_speed_le)
self.arcus_right_bt = QtWidgets.QPushButton(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_right_bt.sizePolicy().hasHeightForWidth())
self.arcus_right_bt.setSizePolicy(sizePolicy)
self.arcus_right_bt.setMinimumSize(QtCore.QSize(50, 0))
self.arcus_right_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.arcus_right_bt.setFont(font)
self.arcus_right_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.arcus_right_bt.setAutoDefault(False)
self.arcus_right_bt.setObjectName("arcus_right_bt")
self.horizontalLayout_2.addWidget(self.arcus_right_bt)
self.gridLayout_3.addWidget(self.frame_5, 2, 0, 1, 1)
self.frame_9 = QtWidgets.QFrame(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_9.sizePolicy().hasHeightForWidth())
self.frame_9.setSizePolicy(sizePolicy)
self.frame_9.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_9.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_9.setLineWidth(0)
self.frame_9.setObjectName("frame_9")
self.gridLayout_7 = QtWidgets.QGridLayout(self.frame_9)
self.gridLayout_7.setContentsMargins(0, 0, 0, 0)
self.gridLayout_7.setSpacing(0)
self.gridLayout_7.setObjectName("gridLayout_7")
self.filename_le = QtWidgets.QLineEdit(self.frame_9)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.filename_le.sizePolicy().hasHeightForWidth())
self.filename_le.setSizePolicy(sizePolicy)
self.filename_le.setMaximumSize(QtCore.QSize(16777215, 106))
font = QtGui.QFont()
font.setPointSize(42)
self.filename_le.setFont(font)
self.filename_le.setObjectName("filename_le")
self.gridLayout_7.addWidget(self.filename_le, 0, 1, 1, 1)
self.file_number_label = QtWidgets.QLabel(self.frame_9)
self.file_number_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.file_number_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.file_number_label.setAlignment(QtCore.Qt.AlignCenter)
self.file_number_label.setObjectName("file_number_label")
self.gridLayout_7.addWidget(self.file_number_label, 0, 2, 1, 1)
self.label_6 = QtWidgets.QLabel(self.frame_9)
self.label_6.setMinimumSize(QtCore.QSize(110, 0))
self.label_6.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
self.label_6.setObjectName("label_6")
self.gridLayout_7.addWidget(self.label_6, 0, 0, 1, 1)
self.gridLayout_3.addWidget(self.frame_9, 6, 0, 1, 1)
self.gridLayout_5.addWidget(self.frame_6, 0, 1, 1, 1)
self.gridLayout_6.addWidget(self.frame_3, 1, 0, 1, 1)
self.frame_4 = QtWidgets.QFrame(image_Window_phone)
self.frame_4.setMinimumSize(QtCore.QSize(0, 0))
self.frame_4.setMaximumSize(QtCore.QSize(16777215, 35))
self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_4.setObjectName("frame_4")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame_4)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setObjectName("horizontalLayout")
spacerItem = QtWidgets.QSpacerItem(233, 12, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.t_label = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.t_label.sizePolicy().hasHeightForWidth())
self.t_label.setSizePolicy(sizePolicy)
self.t_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.t_label.setAlignment(QtCore.Qt.AlignCenter)
self.t_label.setObjectName("t_label")
self.horizontalLayout.addWidget(self.t_label)
self.hum_label = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.hum_label.sizePolicy().hasHeightForWidth())
self.hum_label.setSizePolicy(sizePolicy)
self.hum_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.hum_label.setAlignment(QtCore.Qt.AlignCenter)
self.hum_label.setObjectName("hum_label")
self.horizontalLayout.addWidget(self.hum_label)
self.camera_status_label = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.camera_status_label.sizePolicy().hasHeightForWidth())
self.camera_status_label.setSizePolicy(sizePolicy)
self.camera_status_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.camera_status_label.setAlignment(QtCore.Qt.AlignCenter)
self.camera_status_label.setObjectName("camera_status_label")
self.horizontalLayout.addWidget(self.camera_status_label)
self.arcus_status_label = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_status_label.sizePolicy().hasHeightForWidth())
self.arcus_status_label.setSizePolicy(sizePolicy)
self.arcus_status_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.arcus_status_label.setAlignment(QtCore.Qt.AlignCenter)
self.arcus_status_label.setObjectName("arcus_status_label")
self.horizontalLayout.addWidget(self.arcus_status_label)
self.gridLayout_6.addWidget(self.frame_4, 2, 0, 1, 1)
self.retranslateUi(image_Window_phone)
QtCore.QMetaObject.connectSlotsByName(image_Window_phone)
def retranslateUi(self, image_Window_phone):
_translate = QtCore.QCoreApplication.translate
image_Window_phone.setWindowTitle(_translate("image_Window_phone", "影像窗口"))
self.image_mode_exposureTime_bt.setText(_translate("image_Window_phone", "曝 光"))
self.image_mode_focus_bt.setText(_translate("image_Window_phone", "调 焦"))
self.image_mode_dc_bt.setText(_translate("image_Window_phone", "暗 电 流"))
self.image_mode_wb_bt.setText(_translate("image_Window_phone", "白 板"))
self.image_mode_record_bt.setText(_translate("image_Window_phone", "采 集"))
self.save_bt.setText(_translate("image_Window_phone", "保 存"))
self.label_2.setText(_translate("image_Window_phone", "帧 数"))
self.label_3.setText(_translate("image_Window_phone", "帧 率"))
self.label_5.setText(_translate("image_Window_phone", "积分时间"))
self.label_7.setText(_translate("image_Window_phone", "马 达"))
self.arcus_left_bt.setText(_translate("image_Window_phone", "<"))
self.arcus_right_bt.setText(_translate("image_Window_phone", ">"))
self.file_number_label.setText(_translate("image_Window_phone", "文件号"))
self.label_6.setText(_translate("image_Window_phone", "命 名"))
self.t_label.setText(_translate("image_Window_phone", "温度:无数据"))
self.hum_label.setText(_translate("image_Window_phone", "湿度:无数据"))
self.camera_status_label.setText(_translate("image_Window_phone", "光谱仪:连接失败"))
self.arcus_status_label.setText(_translate("image_Window_phone", "马达:连接失败!"))

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,629 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'spectral_Window_phone.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_spectral_Window_phone(object):
def setupUi(self, spectral_Window_phone):
spectral_Window_phone.setObjectName("spectral_Window_phone")
spectral_Window_phone.resize(540, 1175)
self.gridLayout_6 = QtWidgets.QGridLayout(spectral_Window_phone)
self.gridLayout_6.setObjectName("gridLayout_6")
self.frame = QtWidgets.QFrame(spectral_Window_phone)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
self.frame.setSizePolicy(sizePolicy)
self.frame.setMinimumSize(QtCore.QSize(0, 600))
self.frame.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.gridLayout = QtWidgets.QGridLayout(self.frame)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.spe_glo = QtWidgets.QGridLayout()
self.spe_glo.setObjectName("spe_glo")
self.gridLayout.addLayout(self.spe_glo, 0, 0, 1, 1)
self.gridLayout_6.addWidget(self.frame, 0, 0, 1, 1)
self.frame_2 = QtWidgets.QFrame(spectral_Window_phone)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
self.frame_2.setSizePolicy(sizePolicy)
self.frame_2.setMaximumSize(QtCore.QSize(16777215, 600))
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_2.setObjectName("frame_2")
self.gridLayout_8 = QtWidgets.QGridLayout(self.frame_2)
self.gridLayout_8.setContentsMargins(0, 0, 0, 0)
self.gridLayout_8.setSpacing(0)
self.gridLayout_8.setObjectName("gridLayout_8")
self.frame_4 = QtWidgets.QFrame(self.frame_2)
self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_4.setObjectName("frame_4")
self.gridLayout_4 = QtWidgets.QGridLayout(self.frame_4)
self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
self.gridLayout_4.setSpacing(0)
self.gridLayout_4.setObjectName("gridLayout_4")
self.spectral_mode_autoexposure_bt = QtWidgets.QPushButton(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_autoexposure_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_autoexposure_bt.setSizePolicy(sizePolicy)
self.spectral_mode_autoexposure_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_autoexposure_bt.setAutoDefault(False)
self.spectral_mode_autoexposure_bt.setObjectName("spectral_mode_autoexposure_bt")
self.gridLayout_4.addWidget(self.spectral_mode_autoexposure_bt, 0, 0, 1, 1)
self.autoexposure_le = QtWidgets.QLineEdit(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.autoexposure_le.sizePolicy().hasHeightForWidth())
self.autoexposure_le.setSizePolicy(sizePolicy)
self.autoexposure_le.setMaximumSize(QtCore.QSize(200, 16777215))
self.autoexposure_le.setStyleSheet("QLineEdit\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:40pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.autoexposure_le.setObjectName("autoexposure_le")
self.gridLayout_4.addWidget(self.autoexposure_le, 0, 1, 1, 1)
self.gridLayout_8.addWidget(self.frame_4, 0, 0, 1, 1)
self.frame_6 = QtWidgets.QFrame(self.frame_2)
self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_6.setObjectName("frame_6")
self.gridLayout_2 = QtWidgets.QGridLayout(self.frame_6)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.gridLayout_2.setSpacing(0)
self.gridLayout_2.setObjectName("gridLayout_2")
self.dc_timer_label = QtWidgets.QLabel(self.frame_6)
self.dc_timer_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.dc_timer_label.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.dc_timer_label.setAlignment(QtCore.Qt.AlignCenter)
self.dc_timer_label.setObjectName("dc_timer_label")
self.gridLayout_2.addWidget(self.dc_timer_label, 0, 1, 1, 1)
self.spectral_mode_dc_bt = QtWidgets.QPushButton(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_dc_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_dc_bt.setSizePolicy(sizePolicy)
self.spectral_mode_dc_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_dc_bt.setAutoDefault(False)
self.spectral_mode_dc_bt.setObjectName("spectral_mode_dc_bt")
self.gridLayout_2.addWidget(self.spectral_mode_dc_bt, 0, 0, 1, 1)
self.gridLayout_8.addWidget(self.frame_6, 1, 0, 1, 1)
self.frame_7 = QtWidgets.QFrame(self.frame_2)
self.frame_7.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_7.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_7.setObjectName("frame_7")
self.gridLayout_7 = QtWidgets.QGridLayout(self.frame_7)
self.gridLayout_7.setContentsMargins(0, 0, 0, 0)
self.gridLayout_7.setSpacing(0)
self.gridLayout_7.setObjectName("gridLayout_7")
self.spectral_mode_wb_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_wb_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_wb_bt.setSizePolicy(sizePolicy)
self.spectral_mode_wb_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_wb_bt.setAutoDefault(False)
self.spectral_mode_wb_bt.setObjectName("spectral_mode_wb_bt")
self.gridLayout_7.addWidget(self.spectral_mode_wb_bt, 0, 0, 1, 1)
self.wb_timer_label = QtWidgets.QLabel(self.frame_7)
self.wb_timer_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.wb_timer_label.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.wb_timer_label.setAlignment(QtCore.Qt.AlignCenter)
self.wb_timer_label.setObjectName("wb_timer_label")
self.gridLayout_7.addWidget(self.wb_timer_label, 0, 1, 1, 1)
self.gridLayout_8.addWidget(self.frame_7, 2, 0, 1, 1)
self.frame_5 = QtWidgets.QFrame(self.frame_2)
self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_5.setObjectName("frame_5")
self.gridLayout_5 = QtWidgets.QGridLayout(self.frame_5)
self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
self.gridLayout_5.setSpacing(0)
self.gridLayout_5.setObjectName("gridLayout_5")
self.spectral_mode_record_bt = QtWidgets.QPushButton(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_record_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_record_bt.setSizePolicy(sizePolicy)
self.spectral_mode_record_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_record_bt.setAutoDefault(False)
self.spectral_mode_record_bt.setObjectName("spectral_mode_record_bt")
self.gridLayout_5.addWidget(self.spectral_mode_record_bt, 0, 0, 1, 1)
self.data_type_comboBox = QtWidgets.QComboBox(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.data_type_comboBox.sizePolicy().hasHeightForWidth())
self.data_type_comboBox.setSizePolicy(sizePolicy)
self.data_type_comboBox.setMaximumSize(QtCore.QSize(200, 16777215))
self.data_type_comboBox.setStyleSheet("/*按钮普通态*/\n"
"QComboBox\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}")
self.data_type_comboBox.setFrame(False)
self.data_type_comboBox.setObjectName("data_type_comboBox")
self.data_type_comboBox.addItem("")
self.data_type_comboBox.addItem("")
self.data_type_comboBox.addItem("")
self.gridLayout_5.addWidget(self.data_type_comboBox, 0, 1, 1, 1)
self.progressBar = QtWidgets.QProgressBar(self.frame_5)
self.progressBar.setProperty("value", 0)
self.progressBar.setTextVisible(False)
self.progressBar.setObjectName("progressBar")
self.gridLayout_5.addWidget(self.progressBar, 1, 0, 1, 2)
self.gridLayout_8.addWidget(self.frame_5, 3, 0, 1, 1)
self.gridLayout_6.addWidget(self.frame_2, 1, 0, 1, 1)
self.frame_3 = QtWidgets.QFrame(spectral_Window_phone)
self.frame_3.setMaximumSize(QtCore.QSize(16777215, 200))
self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_3.setObjectName("frame_3")
self.gridLayout_10 = QtWidgets.QGridLayout(self.frame_3)
self.gridLayout_10.setContentsMargins(0, 0, 0, 0)
self.gridLayout_10.setSpacing(0)
self.gridLayout_10.setObjectName("gridLayout_10")
self.frame_9 = QtWidgets.QFrame(self.frame_3)
self.frame_9.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_9.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_9.setObjectName("frame_9")
self.gridLayout_9 = QtWidgets.QGridLayout(self.frame_9)
self.gridLayout_9.setContentsMargins(0, 0, 0, 0)
self.gridLayout_9.setSpacing(0)
self.gridLayout_9.setObjectName("gridLayout_9")
self.filename_le = QtWidgets.QLineEdit(self.frame_9)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.filename_le.sizePolicy().hasHeightForWidth())
self.filename_le.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(61)
self.filename_le.setFont(font)
self.filename_le.setStyleSheet("QLineEdit\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:61pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.filename_le.setObjectName("filename_le")
self.gridLayout_9.addWidget(self.filename_le, 0, 2, 1, 1)
self.label_2 = QtWidgets.QLabel(self.frame_9)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.label_2.setFont(font)
self.label_2.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_9.addWidget(self.label_2, 0, 1, 1, 1)
self.file_number_label = QtWidgets.QLabel(self.frame_9)
self.file_number_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.file_number_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.file_number_label.setAlignment(QtCore.Qt.AlignCenter)
self.file_number_label.setObjectName("file_number_label")
self.gridLayout_9.addWidget(self.file_number_label, 0, 3, 1, 1)
self.frame_10 = QtWidgets.QFrame(self.frame_9)
self.frame_10.setMinimumSize(QtCore.QSize(200, 0))
self.frame_10.setMaximumSize(QtCore.QSize(200, 16777215))
self.frame_10.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_10.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_10.setObjectName("frame_10")
self.gridLayout_11 = QtWidgets.QGridLayout(self.frame_10)
self.gridLayout_11.setContentsMargins(0, 0, 0, 0)
self.gridLayout_11.setSpacing(0)
self.gridLayout_11.setObjectName("gridLayout_11")
self.label_3 = QtWidgets.QLabel(self.frame_10)
self.label_3.setMinimumSize(QtCore.QSize(140, 0))
self.label_3.setMaximumSize(QtCore.QSize(110, 16777215))
self.label_3.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.gridLayout_11.addWidget(self.label_3, 0, 0, 1, 1)
self.label_4 = QtWidgets.QLabel(self.frame_10)
self.label_4.setMinimumSize(QtCore.QSize(140, 0))
self.label_4.setMaximumSize(QtCore.QSize(110, 16777215))
self.label_4.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.gridLayout_11.addWidget(self.label_4, 1, 0, 1, 1)
self.spectral_number_le = QtWidgets.QLineEdit(self.frame_10)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_number_le.sizePolicy().hasHeightForWidth())
self.spectral_number_le.setSizePolicy(sizePolicy)
self.spectral_number_le.setMinimumSize(QtCore.QSize(60, 0))
self.spectral_number_le.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.spectral_number_le.setStyleSheet("QLineEdit\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:30pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.spectral_number_le.setObjectName("spectral_number_le")
self.gridLayout_11.addWidget(self.spectral_number_le, 1, 2, 1, 1)
self.framenumber_average_le = QtWidgets.QLineEdit(self.frame_10)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.framenumber_average_le.sizePolicy().hasHeightForWidth())
self.framenumber_average_le.setSizePolicy(sizePolicy)
self.framenumber_average_le.setMinimumSize(QtCore.QSize(60, 0))
self.framenumber_average_le.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.framenumber_average_le.setStyleSheet("QLineEdit\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:30pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.framenumber_average_le.setObjectName("framenumber_average_le")
self.gridLayout_11.addWidget(self.framenumber_average_le, 0, 2, 1, 1)
self.gridLayout_9.addWidget(self.frame_10, 0, 0, 1, 1)
self.gridLayout_10.addWidget(self.frame_9, 0, 0, 1, 1)
self.frame_8 = QtWidgets.QFrame(self.frame_3)
self.frame_8.setMaximumSize(QtCore.QSize(16777215, 35))
self.frame_8.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_8.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_8.setObjectName("frame_8")
self.gridLayout_3 = QtWidgets.QGridLayout(self.frame_8)
self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
self.gridLayout_3.setSpacing(0)
self.gridLayout_3.setObjectName("gridLayout_3")
spacerItem = QtWidgets.QSpacerItem(399, 15, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_3.addItem(spacerItem, 0, 0, 1, 1)
self.t_label = QtWidgets.QLabel(self.frame_8)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.t_label.sizePolicy().hasHeightForWidth())
self.t_label.setSizePolicy(sizePolicy)
self.t_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.t_label.setAlignment(QtCore.Qt.AlignCenter)
self.t_label.setObjectName("t_label")
self.gridLayout_3.addWidget(self.t_label, 0, 1, 1, 1)
self.hum_label = QtWidgets.QLabel(self.frame_8)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.hum_label.sizePolicy().hasHeightForWidth())
self.hum_label.setSizePolicy(sizePolicy)
self.hum_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.hum_label.setAlignment(QtCore.Qt.AlignCenter)
self.hum_label.setObjectName("hum_label")
self.gridLayout_3.addWidget(self.hum_label, 0, 2, 1, 1)
self.camera_status_label = QtWidgets.QLabel(self.frame_8)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.camera_status_label.sizePolicy().hasHeightForWidth())
self.camera_status_label.setSizePolicy(sizePolicy)
self.camera_status_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.camera_status_label.setAlignment(QtCore.Qt.AlignCenter)
self.camera_status_label.setObjectName("camera_status_label")
self.gridLayout_3.addWidget(self.camera_status_label, 0, 3, 1, 1)
self.gridLayout_10.addWidget(self.frame_8, 1, 0, 1, 1)
self.gridLayout_6.addWidget(self.frame_3, 2, 0, 1, 1)
self.retranslateUi(spectral_Window_phone)
QtCore.QMetaObject.connectSlotsByName(spectral_Window_phone)
def retranslateUi(self, spectral_Window_phone):
_translate = QtCore.QCoreApplication.translate
spectral_Window_phone.setWindowTitle(_translate("spectral_Window_phone", "光谱窗口"))
self.spectral_mode_autoexposure_bt.setText(_translate("spectral_Window_phone", "曝 光"))
self.dc_timer_label.setText(_translate("spectral_Window_phone", "计时"))
self.spectral_mode_dc_bt.setText(_translate("spectral_Window_phone", "暗 电 流"))
self.spectral_mode_wb_bt.setText(_translate("spectral_Window_phone", "白 板"))
self.wb_timer_label.setText(_translate("spectral_Window_phone", "计时"))
self.spectral_mode_record_bt.setText(_translate("spectral_Window_phone", "采 集"))
self.data_type_comboBox.setCurrentText(_translate("spectral_Window_phone", "Ref"))
self.data_type_comboBox.setItemText(0, _translate("spectral_Window_phone", "Ref"))
self.data_type_comboBox.setItemText(1, _translate("spectral_Window_phone", "DN"))
self.data_type_comboBox.setItemText(2, _translate("spectral_Window_phone", "Rad"))
self.label_2.setText(_translate("spectral_Window_phone", "文 件"))
self.file_number_label.setText(_translate("spectral_Window_phone", "文件号"))
self.label_3.setText(_translate("spectral_Window_phone", "自动平均"))
self.label_4.setText(_translate("spectral_Window_phone", "连续测量"))
self.t_label.setText(_translate("spectral_Window_phone", "温度:无数据"))
self.hum_label.setText(_translate("spectral_Window_phone", "湿度:无数据"))
self.camera_status_label.setText(_translate("spectral_Window_phone", "光谱仪:连接失败"))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,27 @@
[bin]
binning = 1
start_column_binning_1 = 12
end_column_binning_1 = 1376
start_row_binning_1 = 0
end_row_binning_1 = 300
start_column_binning_2 = 13
end_column_binning_2 = 695
start_row_binning_2 = 1
end_row_binning_2 = 151
[image_record_param]
image_dir = D:\py_program\corning410\record_system_v27/image
default_image_name = mnhbjhb
framerate = 40
exposure_time = 24997
gain = 0.0
frame_number = 4000
arcus_speed = 2000
[spectral_record_param]
spectral_dir = D:\py_program\corning410\record_system_v27/spectral
default_spectral_name = lllllll
spectral_number = 10
framenumber_average = 10
exposure_time_spectral = 1000

View File

View File

@ -0,0 +1,150 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'enter_window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_enter_Window(object):
def setupUi(self, enter_Window):
enter_Window.setObjectName("enter_Window")
enter_Window.setEnabled(True)
enter_Window.resize(651, 474)
self.centralwidget = QtWidgets.QWidget(enter_Window)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.camstatus_label = QtWidgets.QLabel(self.centralwidget)
self.camstatus_label.setEnabled(True)
self.camstatus_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:30pt;\n"
" /*字体颜色为白色*/\n"
" /*color:white;*/\n"
" /*背景颜色*/\n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}")
self.camstatus_label.setAlignment(QtCore.Qt.AlignCenter)
self.camstatus_label.setObjectName("camstatus_label")
self.gridLayout.addWidget(self.camstatus_label, 2, 0, 1, 1)
self.spectral_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.spectral_mode_bt.setEnabled(True)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_bt.setSizePolicy(sizePolicy)
self.spectral_mode_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_bt.setObjectName("spectral_mode_bt")
self.gridLayout.addWidget(self.spectral_mode_bt, 1, 0, 1, 1)
self.image_mode_phone_bt = QtWidgets.QPushButton(self.centralwidget)
self.image_mode_phone_bt.setEnabled(True)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_phone_bt.sizePolicy().hasHeightForWidth())
self.image_mode_phone_bt.setSizePolicy(sizePolicy)
self.image_mode_phone_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_phone_bt.setObjectName("image_mode_phone_bt")
self.gridLayout.addWidget(self.image_mode_phone_bt, 0, 0, 1, 1)
enter_Window.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(enter_Window)
self.menubar.setGeometry(QtCore.QRect(0, 0, 651, 23))
self.menubar.setObjectName("menubar")
enter_Window.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(enter_Window)
self.statusbar.setObjectName("statusbar")
enter_Window.setStatusBar(self.statusbar)
self.actionwew_e = QtWidgets.QAction(enter_Window)
self.actionwew_e.setObjectName("actionwew_e")
self.retranslateUi(enter_Window)
QtCore.QMetaObject.connectSlotsByName(enter_Window)
def retranslateUi(self, enter_Window):
_translate = QtCore.QCoreApplication.translate
enter_Window.setWindowTitle(_translate("enter_Window", "主窗口"))
self.camstatus_label.setText(_translate("enter_Window", "正在打开相机..."))
self.spectral_mode_bt.setText(_translate("enter_Window", "光谱模式"))
self.image_mode_phone_bt.setText(_translate("enter_Window", "影像模式"))
self.actionwew_e.setText(_translate("enter_Window", "wew e"))

View File

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>enter_Window</class>
<widget class="QMainWindow" name="enter_Window">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>474</height>
</rect>
</property>
<property name="windowTitle">
<string>主窗口</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QLabel" name="camstatus_label">
<property name="enabled">
<bool>true</bool>
</property>
<property name="styleSheet">
<string notr="true">QLabel
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:30pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
background-color:rgb(225 , 225 , 225);
/*边框圆角半径为8像素*/
border-radius:20px;
}</string>
</property>
<property name="text">
<string>正在打开相机...</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="spectral_mode_bt">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">/*按钮普通态*/
QPushButton
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:25pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
background-color:rgb(225 , 225 , 225);
/*边框圆角半径为8像素*/
border-radius:20px;
}
/*按钮停留态*/
QPushButton:hover
{
/*背景颜色*/
background-color:rgb(44 , 137 , 255);
/*边框圆角半径为8像素*/
/*border-radius:20px;*/
}
/*按钮按下态*/
QPushButton:pressed
{
/*背景颜色*/
background-color:rgb(255 , 0 , 0);
/*左内边距为3像素让按下时字向右移动3像素*/
padding-left:3px;
/*上内边距为3像素让按下时字向下移动3像素*/
padding-top:3px;
}</string>
</property>
<property name="text">
<string>光谱模式</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="image_mode_phone_bt">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">/*按钮普通态*/
QPushButton
{
/*字体为微软雅黑*/
font-family:Microsoft Yahei;
/*字体大小为20点*/
font-size:25pt;
/*字体颜色为白色*/
/*color:white;*/
/*背景颜色*/
background-color:rgb(225 , 225 , 225);
/*边框圆角半径为8像素*/
border-radius:20px;
}
/*按钮停留态*/
QPushButton:hover
{
/*背景颜色*/
background-color:rgb(44 , 137 , 255);
/*边框圆角半径为8像素*/
/*border-radius:20px;*/
}
/*按钮按下态*/
QPushButton:pressed
{
/*背景颜色*/
background-color:rgb(255 , 0 , 0);
/*左内边距为3像素让按下时字向右移动3像素*/
padding-left:3px;
/*上内边距为3像素让按下时字向下移动3像素*/
padding-top:3px;
}</string>
</property>
<property name="text">
<string>影像模式</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>651</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionwew_e">
<property name="text">
<string>wew e</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,868 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'image_Window_phone.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_image_Window_phone(object):
def setupUi(self, image_Window_phone):
image_Window_phone.setObjectName("image_Window_phone")
image_Window_phone.setEnabled(True)
image_Window_phone.resize(562, 1174)
image_Window_phone.setMouseTracking(False)
image_Window_phone.setAutoFillBackground(False)
image_Window_phone.setSizeGripEnabled(False)
image_Window_phone.setModal(False)
self.gridLayout_6 = QtWidgets.QGridLayout(image_Window_phone)
self.gridLayout_6.setObjectName("gridLayout_6")
self.frame_3 = QtWidgets.QFrame(image_Window_phone)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_3.sizePolicy().hasHeightForWidth())
self.frame_3.setSizePolicy(sizePolicy)
self.frame_3.setMaximumSize(QtCore.QSize(16777215, 600))
self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_3.setObjectName("frame_3")
self.gridLayout_5 = QtWidgets.QGridLayout(self.frame_3)
self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
self.gridLayout_5.setObjectName("gridLayout_5")
self.frame_7 = QtWidgets.QFrame(self.frame_3)
self.frame_7.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_7.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_7.setObjectName("frame_7")
self.gridLayout_4 = QtWidgets.QGridLayout(self.frame_7)
self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
self.gridLayout_4.setObjectName("gridLayout_4")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.image_mode_focus_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_focus_bt.sizePolicy().hasHeightForWidth())
self.image_mode_focus_bt.setSizePolicy(sizePolicy)
self.image_mode_focus_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_focus_bt.setFont(font)
self.image_mode_focus_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_focus_bt.setAutoDefault(False)
self.image_mode_focus_bt.setObjectName("image_mode_focus_bt")
self.verticalLayout.addWidget(self.image_mode_focus_bt)
self.image_mode_exposureTime_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_exposureTime_bt.sizePolicy().hasHeightForWidth())
self.image_mode_exposureTime_bt.setSizePolicy(sizePolicy)
self.image_mode_exposureTime_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_exposureTime_bt.setFont(font)
self.image_mode_exposureTime_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_exposureTime_bt.setAutoDefault(False)
self.image_mode_exposureTime_bt.setObjectName("image_mode_exposureTime_bt")
self.verticalLayout.addWidget(self.image_mode_exposureTime_bt)
self.image_mode_dc_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_dc_bt.sizePolicy().hasHeightForWidth())
self.image_mode_dc_bt.setSizePolicy(sizePolicy)
self.image_mode_dc_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_dc_bt.setFont(font)
self.image_mode_dc_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_dc_bt.setAutoDefault(False)
self.image_mode_dc_bt.setObjectName("image_mode_dc_bt")
self.verticalLayout.addWidget(self.image_mode_dc_bt)
self.image_mode_record_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_record_bt.sizePolicy().hasHeightForWidth())
self.image_mode_record_bt.setSizePolicy(sizePolicy)
self.image_mode_record_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.image_mode_record_bt.setFont(font)
self.image_mode_record_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_record_bt.setAutoDefault(False)
self.image_mode_record_bt.setObjectName("image_mode_record_bt")
self.verticalLayout.addWidget(self.image_mode_record_bt)
self.save_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.save_bt.sizePolicy().hasHeightForWidth())
self.save_bt.setSizePolicy(sizePolicy)
self.save_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.save_bt.setFont(font)
self.save_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.save_bt.setAutoDefault(False)
self.save_bt.setObjectName("save_bt")
self.verticalLayout.addWidget(self.save_bt)
self.gridLayout_4.addLayout(self.verticalLayout, 0, 0, 1, 1)
self.gridLayout_5.addWidget(self.frame_7, 0, 0, 1, 1)
self.frame_6 = QtWidgets.QFrame(self.frame_3)
self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_6.setObjectName("frame_6")
self.gridLayout_3 = QtWidgets.QGridLayout(self.frame_6)
self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
self.gridLayout_3.setObjectName("gridLayout_3")
self.frame_10 = QtWidgets.QFrame(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_10.sizePolicy().hasHeightForWidth())
self.frame_10.setSizePolicy(sizePolicy)
self.frame_10.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_10.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_10.setObjectName("frame_10")
self.gridLayout_8 = QtWidgets.QGridLayout(self.frame_10)
self.gridLayout_8.setContentsMargins(0, 0, 0, 0)
self.gridLayout_8.setSpacing(0)
self.gridLayout_8.setObjectName("gridLayout_8")
self.rad_dn_comboBox = QtWidgets.QComboBox(self.frame_10)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_dn_comboBox.sizePolicy().hasHeightForWidth())
self.rad_dn_comboBox.setSizePolicy(sizePolicy)
self.rad_dn_comboBox.setMinimumSize(QtCore.QSize(90, 0))
self.rad_dn_comboBox.setStyleSheet("/*按钮普通态*/\n"
"QComboBox\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}")
self.rad_dn_comboBox.setObjectName("rad_dn_comboBox")
self.rad_dn_comboBox.addItem("")
self.rad_dn_comboBox.addItem("")
self.gridLayout_8.addWidget(self.rad_dn_comboBox, 0, 2, 1, 1)
self.framenumber_le = QtWidgets.QLineEdit(self.frame_10)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.framenumber_le.sizePolicy().hasHeightForWidth())
self.framenumber_le.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(42)
self.framenumber_le.setFont(font)
self.framenumber_le.setObjectName("framenumber_le")
self.gridLayout_8.addWidget(self.framenumber_le, 0, 1, 1, 1)
self.arcus_direction_bt = QtWidgets.QPushButton(self.frame_10)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_direction_bt.sizePolicy().hasHeightForWidth())
self.arcus_direction_bt.setSizePolicy(sizePolicy)
self.arcus_direction_bt.setMinimumSize(QtCore.QSize(90, 0))
self.arcus_direction_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.arcus_direction_bt.setFont(font)
self.arcus_direction_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.arcus_direction_bt.setAutoDefault(False)
self.arcus_direction_bt.setObjectName("arcus_direction_bt")
self.gridLayout_8.addWidget(self.arcus_direction_bt, 0, 3, 1, 1)
self.label_2 = QtWidgets.QLabel(self.frame_10)
self.label_2.setMinimumSize(QtCore.QSize(110, 0))
self.label_2.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_8.addWidget(self.label_2, 0, 0, 1, 1)
self.gridLayout_3.addWidget(self.frame_10, 4, 0, 1, 1)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_3 = QtWidgets.QLabel(self.frame_6)
self.label_3.setMinimumSize(QtCore.QSize(110, 0))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(20)
self.label_3.setFont(font)
self.label_3.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.horizontalLayout_3.addWidget(self.label_3)
self.framerate_le = QtWidgets.QLineEdit(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.framerate_le.sizePolicy().hasHeightForWidth())
self.framerate_le.setSizePolicy(sizePolicy)
self.framerate_le.setMaximumSize(QtCore.QSize(16777215, 106))
font = QtGui.QFont()
font.setPointSize(42)
self.framerate_le.setFont(font)
self.framerate_le.setReadOnly(False)
self.framerate_le.setObjectName("framerate_le")
self.horizontalLayout_3.addWidget(self.framerate_le)
self.framenumber_recorded_label = QtWidgets.QLabel(self.frame_6)
self.framenumber_recorded_label.setMinimumSize(QtCore.QSize(180, 0))
self.framenumber_recorded_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.framenumber_recorded_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.framenumber_recorded_label.setAlignment(QtCore.Qt.AlignCenter)
self.framenumber_recorded_label.setObjectName("framenumber_recorded_label")
self.horizontalLayout_3.addWidget(self.framenumber_recorded_label)
self.gridLayout_3.addLayout(self.horizontalLayout_3, 1, 0, 1, 1)
self.frame_9 = QtWidgets.QFrame(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_9.sizePolicy().hasHeightForWidth())
self.frame_9.setSizePolicy(sizePolicy)
self.frame_9.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_9.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_9.setLineWidth(0)
self.frame_9.setObjectName("frame_9")
self.gridLayout_7 = QtWidgets.QGridLayout(self.frame_9)
self.gridLayout_7.setContentsMargins(0, 0, 0, 0)
self.gridLayout_7.setSpacing(0)
self.gridLayout_7.setObjectName("gridLayout_7")
self.filename_le = QtWidgets.QLineEdit(self.frame_9)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.filename_le.sizePolicy().hasHeightForWidth())
self.filename_le.setSizePolicy(sizePolicy)
self.filename_le.setMaximumSize(QtCore.QSize(16777215, 106))
font = QtGui.QFont()
font.setPointSize(42)
self.filename_le.setFont(font)
self.filename_le.setObjectName("filename_le")
self.gridLayout_7.addWidget(self.filename_le, 0, 1, 1, 1)
self.label_6 = QtWidgets.QLabel(self.frame_9)
self.label_6.setMinimumSize(QtCore.QSize(110, 0))
self.label_6.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
self.label_6.setObjectName("label_6")
self.gridLayout_7.addWidget(self.label_6, 0, 0, 1, 1)
self.file_number_label = QtWidgets.QLabel(self.frame_9)
self.file_number_label.setMinimumSize(QtCore.QSize(180, 0))
self.file_number_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.file_number_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.file_number_label.setAlignment(QtCore.Qt.AlignCenter)
self.file_number_label.setObjectName("file_number_label")
self.gridLayout_7.addWidget(self.file_number_label, 0, 2, 1, 1)
self.gridLayout_3.addWidget(self.frame_9, 6, 0, 1, 1)
self.frame_5 = QtWidgets.QFrame(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_5.sizePolicy().hasHeightForWidth())
self.frame_5.setSizePolicy(sizePolicy)
self.frame_5.setMinimumSize(QtCore.QSize(160, 0))
self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_5.setObjectName("frame_5")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.frame_5)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_7 = QtWidgets.QLabel(self.frame_5)
self.label_7.setMinimumSize(QtCore.QSize(110, 0))
self.label_7.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_7.setAlignment(QtCore.Qt.AlignCenter)
self.label_7.setObjectName("label_7")
self.horizontalLayout_2.addWidget(self.label_7)
self.arcus_left_bt = QtWidgets.QPushButton(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_left_bt.sizePolicy().hasHeightForWidth())
self.arcus_left_bt.setSizePolicy(sizePolicy)
self.arcus_left_bt.setMinimumSize(QtCore.QSize(50, 0))
self.arcus_left_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.arcus_left_bt.setFont(font)
self.arcus_left_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.arcus_left_bt.setAutoDefault(False)
self.arcus_left_bt.setObjectName("arcus_left_bt")
self.horizontalLayout_2.addWidget(self.arcus_left_bt)
self.arcus_speed_le = QtWidgets.QLineEdit(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_speed_le.sizePolicy().hasHeightForWidth())
self.arcus_speed_le.setSizePolicy(sizePolicy)
self.arcus_speed_le.setMinimumSize(QtCore.QSize(60, 0))
self.arcus_speed_le.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setPointSize(42)
self.arcus_speed_le.setFont(font)
self.arcus_speed_le.setObjectName("arcus_speed_le")
self.horizontalLayout_2.addWidget(self.arcus_speed_le)
self.arcus_right_bt = QtWidgets.QPushButton(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_right_bt.sizePolicy().hasHeightForWidth())
self.arcus_right_bt.setSizePolicy(sizePolicy)
self.arcus_right_bt.setMinimumSize(QtCore.QSize(50, 0))
self.arcus_right_bt.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.arcus_right_bt.setFont(font)
self.arcus_right_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.arcus_right_bt.setAutoDefault(False)
self.arcus_right_bt.setObjectName("arcus_right_bt")
self.horizontalLayout_2.addWidget(self.arcus_right_bt)
self.gridLayout_3.addWidget(self.frame_5, 3, 0, 1, 1)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_5 = QtWidgets.QLabel(self.frame_6)
self.label_5.setMinimumSize(QtCore.QSize(110, 0))
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(20)
self.label_5.setFont(font)
self.label_5.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:20pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_5.setObjectName("label_5")
self.horizontalLayout_4.addWidget(self.label_5)
self.exposure_time_le = QtWidgets.QLineEdit(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.exposure_time_le.sizePolicy().hasHeightForWidth())
self.exposure_time_le.setSizePolicy(sizePolicy)
self.exposure_time_le.setMaximumSize(QtCore.QSize(16777215, 106))
font = QtGui.QFont()
font.setPointSize(42)
self.exposure_time_le.setFont(font)
self.exposure_time_le.setObjectName("exposure_time_le")
self.horizontalLayout_4.addWidget(self.exposure_time_le)
self.gridLayout_3.addLayout(self.horizontalLayout_4, 2, 0, 1, 1)
self.gridLayout_5.addWidget(self.frame_6, 0, 1, 1, 1)
self.gridLayout_6.addWidget(self.frame_3, 1, 0, 1, 1)
self.frame_4 = QtWidgets.QFrame(image_Window_phone)
self.frame_4.setMinimumSize(QtCore.QSize(0, 0))
self.frame_4.setMaximumSize(QtCore.QSize(16777215, 35))
self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_4.setObjectName("frame_4")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame_4)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setObjectName("horizontalLayout")
spacerItem = QtWidgets.QSpacerItem(233, 12, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.t_label = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.t_label.sizePolicy().hasHeightForWidth())
self.t_label.setSizePolicy(sizePolicy)
self.t_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.t_label.setAlignment(QtCore.Qt.AlignCenter)
self.t_label.setObjectName("t_label")
self.horizontalLayout.addWidget(self.t_label)
self.hum_label = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.hum_label.sizePolicy().hasHeightForWidth())
self.hum_label.setSizePolicy(sizePolicy)
self.hum_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.hum_label.setAlignment(QtCore.Qt.AlignCenter)
self.hum_label.setObjectName("hum_label")
self.horizontalLayout.addWidget(self.hum_label)
self.camera_status_label = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.camera_status_label.sizePolicy().hasHeightForWidth())
self.camera_status_label.setSizePolicy(sizePolicy)
self.camera_status_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.camera_status_label.setAlignment(QtCore.Qt.AlignCenter)
self.camera_status_label.setObjectName("camera_status_label")
self.horizontalLayout.addWidget(self.camera_status_label)
self.arcus_status_label = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.arcus_status_label.sizePolicy().hasHeightForWidth())
self.arcus_status_label.setSizePolicy(sizePolicy)
self.arcus_status_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.arcus_status_label.setAlignment(QtCore.Qt.AlignCenter)
self.arcus_status_label.setObjectName("arcus_status_label")
self.horizontalLayout.addWidget(self.arcus_status_label)
self.gridLayout_6.addWidget(self.frame_4, 2, 0, 1, 1)
self.splitter = QtWidgets.QSplitter(image_Window_phone)
self.splitter.setOrientation(QtCore.Qt.Vertical)
self.splitter.setObjectName("splitter")
self.frame_2 = QtWidgets.QFrame(self.splitter)
self.frame_2.setFrameShape(QtWidgets.QFrame.Box)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_2.setObjectName("frame_2")
self.gridLayout_2 = QtWidgets.QGridLayout(self.frame_2)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.gridLayout_2.setObjectName("gridLayout_2")
self.image_glo = QtWidgets.QGridLayout()
self.image_glo.setObjectName("image_glo")
self.gridLayout_2.addLayout(self.image_glo, 0, 0, 1, 1)
self.frame = QtWidgets.QFrame(self.splitter)
self.frame.setMaximumSize(QtCore.QSize(16777215, 600))
self.frame.setFrameShape(QtWidgets.QFrame.Box)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.gridLayout = QtWidgets.QGridLayout(self.frame)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.focus_glo = QtWidgets.QGridLayout()
self.focus_glo.setObjectName("focus_glo")
self.gridLayout.addLayout(self.focus_glo, 0, 0, 1, 1)
self.gridLayout_6.addWidget(self.splitter, 0, 0, 1, 1)
self.retranslateUi(image_Window_phone)
QtCore.QMetaObject.connectSlotsByName(image_Window_phone)
def retranslateUi(self, image_Window_phone):
_translate = QtCore.QCoreApplication.translate
image_Window_phone.setWindowTitle(_translate("image_Window_phone", "影像窗口"))
self.image_mode_focus_bt.setText(_translate("image_Window_phone", "调 焦"))
self.image_mode_exposureTime_bt.setText(_translate("image_Window_phone", "曝 光"))
self.image_mode_dc_bt.setText(_translate("image_Window_phone", "暗 电 流"))
self.image_mode_record_bt.setText(_translate("image_Window_phone", "采 集"))
self.save_bt.setText(_translate("image_Window_phone", "保 存"))
self.rad_dn_comboBox.setItemText(0, _translate("image_Window_phone", "rad"))
self.rad_dn_comboBox.setItemText(1, _translate("image_Window_phone", "dn"))
self.arcus_direction_bt.setText(_translate("image_Window_phone", "反转"))
self.label_2.setText(_translate("image_Window_phone", "帧 数"))
self.label_3.setText(_translate("image_Window_phone", "帧 率"))
self.framenumber_recorded_label.setText(_translate("image_Window_phone", "文件号"))
self.label_6.setText(_translate("image_Window_phone", "命 名"))
self.file_number_label.setText(_translate("image_Window_phone", "文件号"))
self.label_7.setText(_translate("image_Window_phone", "马 达"))
self.arcus_left_bt.setText(_translate("image_Window_phone", "<"))
self.arcus_right_bt.setText(_translate("image_Window_phone", ">"))
self.label_5.setText(_translate("image_Window_phone", "积分时间"))
self.t_label.setText(_translate("image_Window_phone", "温度:无数据"))
self.hum_label.setText(_translate("image_Window_phone", "湿度:无数据"))
self.camera_status_label.setText(_translate("image_Window_phone", "光谱仪:连接失败"))
self.arcus_status_label.setText(_translate("image_Window_phone", "马达:连接失败!"))

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,629 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'spectral_Window_phone.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_spectral_Window_phone(object):
def setupUi(self, spectral_Window_phone):
spectral_Window_phone.setObjectName("spectral_Window_phone")
spectral_Window_phone.resize(540, 1175)
self.gridLayout_6 = QtWidgets.QGridLayout(spectral_Window_phone)
self.gridLayout_6.setObjectName("gridLayout_6")
self.frame = QtWidgets.QFrame(spectral_Window_phone)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
self.frame.setSizePolicy(sizePolicy)
self.frame.setMinimumSize(QtCore.QSize(0, 600))
self.frame.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.gridLayout = QtWidgets.QGridLayout(self.frame)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.spe_glo = QtWidgets.QGridLayout()
self.spe_glo.setObjectName("spe_glo")
self.gridLayout.addLayout(self.spe_glo, 0, 0, 1, 1)
self.gridLayout_6.addWidget(self.frame, 0, 0, 1, 1)
self.frame_2 = QtWidgets.QFrame(spectral_Window_phone)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
self.frame_2.setSizePolicy(sizePolicy)
self.frame_2.setMaximumSize(QtCore.QSize(16777215, 600))
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_2.setObjectName("frame_2")
self.gridLayout_8 = QtWidgets.QGridLayout(self.frame_2)
self.gridLayout_8.setContentsMargins(0, 0, 0, 0)
self.gridLayout_8.setSpacing(0)
self.gridLayout_8.setObjectName("gridLayout_8")
self.frame_4 = QtWidgets.QFrame(self.frame_2)
self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_4.setObjectName("frame_4")
self.gridLayout_4 = QtWidgets.QGridLayout(self.frame_4)
self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
self.gridLayout_4.setSpacing(0)
self.gridLayout_4.setObjectName("gridLayout_4")
self.spectral_mode_autoexposure_bt = QtWidgets.QPushButton(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_autoexposure_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_autoexposure_bt.setSizePolicy(sizePolicy)
self.spectral_mode_autoexposure_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_autoexposure_bt.setAutoDefault(False)
self.spectral_mode_autoexposure_bt.setObjectName("spectral_mode_autoexposure_bt")
self.gridLayout_4.addWidget(self.spectral_mode_autoexposure_bt, 0, 0, 1, 1)
self.autoexposure_le = QtWidgets.QLineEdit(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.autoexposure_le.sizePolicy().hasHeightForWidth())
self.autoexposure_le.setSizePolicy(sizePolicy)
self.autoexposure_le.setMaximumSize(QtCore.QSize(200, 16777215))
self.autoexposure_le.setStyleSheet("QLineEdit\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:40pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.autoexposure_le.setObjectName("autoexposure_le")
self.gridLayout_4.addWidget(self.autoexposure_le, 0, 1, 1, 1)
self.gridLayout_8.addWidget(self.frame_4, 0, 0, 1, 1)
self.frame_6 = QtWidgets.QFrame(self.frame_2)
self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_6.setObjectName("frame_6")
self.gridLayout_2 = QtWidgets.QGridLayout(self.frame_6)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.gridLayout_2.setSpacing(0)
self.gridLayout_2.setObjectName("gridLayout_2")
self.dc_timer_label = QtWidgets.QLabel(self.frame_6)
self.dc_timer_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.dc_timer_label.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.dc_timer_label.setAlignment(QtCore.Qt.AlignCenter)
self.dc_timer_label.setObjectName("dc_timer_label")
self.gridLayout_2.addWidget(self.dc_timer_label, 0, 1, 1, 1)
self.spectral_mode_dc_bt = QtWidgets.QPushButton(self.frame_6)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_dc_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_dc_bt.setSizePolicy(sizePolicy)
self.spectral_mode_dc_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_dc_bt.setAutoDefault(False)
self.spectral_mode_dc_bt.setObjectName("spectral_mode_dc_bt")
self.gridLayout_2.addWidget(self.spectral_mode_dc_bt, 0, 0, 1, 1)
self.gridLayout_8.addWidget(self.frame_6, 1, 0, 1, 1)
self.frame_7 = QtWidgets.QFrame(self.frame_2)
self.frame_7.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_7.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_7.setObjectName("frame_7")
self.gridLayout_7 = QtWidgets.QGridLayout(self.frame_7)
self.gridLayout_7.setContentsMargins(0, 0, 0, 0)
self.gridLayout_7.setSpacing(0)
self.gridLayout_7.setObjectName("gridLayout_7")
self.spectral_mode_wb_bt = QtWidgets.QPushButton(self.frame_7)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_wb_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_wb_bt.setSizePolicy(sizePolicy)
self.spectral_mode_wb_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_wb_bt.setAutoDefault(False)
self.spectral_mode_wb_bt.setObjectName("spectral_mode_wb_bt")
self.gridLayout_7.addWidget(self.spectral_mode_wb_bt, 0, 0, 1, 1)
self.wb_timer_label = QtWidgets.QLabel(self.frame_7)
self.wb_timer_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.wb_timer_label.setStyleSheet("/*按钮普通态*/\n"
"QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.wb_timer_label.setAlignment(QtCore.Qt.AlignCenter)
self.wb_timer_label.setObjectName("wb_timer_label")
self.gridLayout_7.addWidget(self.wb_timer_label, 0, 1, 1, 1)
self.gridLayout_8.addWidget(self.frame_7, 2, 0, 1, 1)
self.frame_5 = QtWidgets.QFrame(self.frame_2)
self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_5.setObjectName("frame_5")
self.gridLayout_5 = QtWidgets.QGridLayout(self.frame_5)
self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
self.gridLayout_5.setSpacing(0)
self.gridLayout_5.setObjectName("gridLayout_5")
self.spectral_mode_record_bt = QtWidgets.QPushButton(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_record_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_record_bt.setSizePolicy(sizePolicy)
self.spectral_mode_record_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);/*hover*/\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);/*pressed*/\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_record_bt.setAutoDefault(False)
self.spectral_mode_record_bt.setObjectName("spectral_mode_record_bt")
self.gridLayout_5.addWidget(self.spectral_mode_record_bt, 0, 0, 1, 1)
self.data_type_comboBox = QtWidgets.QComboBox(self.frame_5)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.data_type_comboBox.sizePolicy().hasHeightForWidth())
self.data_type_comboBox.setSizePolicy(sizePolicy)
self.data_type_comboBox.setMaximumSize(QtCore.QSize(200, 16777215))
self.data_type_comboBox.setStyleSheet("/*按钮普通态*/\n"
"QComboBox\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}")
self.data_type_comboBox.setFrame(False)
self.data_type_comboBox.setObjectName("data_type_comboBox")
self.data_type_comboBox.addItem("")
self.data_type_comboBox.addItem("")
self.data_type_comboBox.addItem("")
self.gridLayout_5.addWidget(self.data_type_comboBox, 0, 1, 1, 1)
self.progressBar = QtWidgets.QProgressBar(self.frame_5)
self.progressBar.setProperty("value", 0)
self.progressBar.setTextVisible(False)
self.progressBar.setObjectName("progressBar")
self.gridLayout_5.addWidget(self.progressBar, 1, 0, 1, 2)
self.gridLayout_8.addWidget(self.frame_5, 3, 0, 1, 1)
self.gridLayout_6.addWidget(self.frame_2, 1, 0, 1, 1)
self.frame_3 = QtWidgets.QFrame(spectral_Window_phone)
self.frame_3.setMaximumSize(QtCore.QSize(16777215, 200))
self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_3.setObjectName("frame_3")
self.gridLayout_10 = QtWidgets.QGridLayout(self.frame_3)
self.gridLayout_10.setContentsMargins(0, 0, 0, 0)
self.gridLayout_10.setSpacing(0)
self.gridLayout_10.setObjectName("gridLayout_10")
self.frame_9 = QtWidgets.QFrame(self.frame_3)
self.frame_9.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_9.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_9.setObjectName("frame_9")
self.gridLayout_9 = QtWidgets.QGridLayout(self.frame_9)
self.gridLayout_9.setContentsMargins(0, 0, 0, 0)
self.gridLayout_9.setSpacing(0)
self.gridLayout_9.setObjectName("gridLayout_9")
self.filename_le = QtWidgets.QLineEdit(self.frame_9)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.filename_le.sizePolicy().hasHeightForWidth())
self.filename_le.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(61)
self.filename_le.setFont(font)
self.filename_le.setStyleSheet("QLineEdit\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:61pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.filename_le.setObjectName("filename_le")
self.gridLayout_9.addWidget(self.filename_le, 0, 2, 1, 1)
self.label_2 = QtWidgets.QLabel(self.frame_9)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Microsoft Yahei")
font.setPointSize(25)
self.label_2.setFont(font)
self.label_2.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_9.addWidget(self.label_2, 0, 1, 1, 1)
self.file_number_label = QtWidgets.QLabel(self.frame_9)
self.file_number_label.setMaximumSize(QtCore.QSize(200, 16777215))
self.file_number_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.file_number_label.setAlignment(QtCore.Qt.AlignCenter)
self.file_number_label.setObjectName("file_number_label")
self.gridLayout_9.addWidget(self.file_number_label, 0, 3, 1, 1)
self.frame_10 = QtWidgets.QFrame(self.frame_9)
self.frame_10.setMinimumSize(QtCore.QSize(200, 0))
self.frame_10.setMaximumSize(QtCore.QSize(200, 16777215))
self.frame_10.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_10.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_10.setObjectName("frame_10")
self.gridLayout_11 = QtWidgets.QGridLayout(self.frame_10)
self.gridLayout_11.setContentsMargins(0, 0, 0, 0)
self.gridLayout_11.setSpacing(0)
self.gridLayout_11.setObjectName("gridLayout_11")
self.label_3 = QtWidgets.QLabel(self.frame_10)
self.label_3.setMinimumSize(QtCore.QSize(140, 0))
self.label_3.setMaximumSize(QtCore.QSize(110, 16777215))
self.label_3.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.gridLayout_11.addWidget(self.label_3, 0, 0, 1, 1)
self.label_4 = QtWidgets.QLabel(self.frame_10)
self.label_4.setMinimumSize(QtCore.QSize(140, 0))
self.label_4.setMaximumSize(QtCore.QSize(110, 16777215))
self.label_4.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.gridLayout_11.addWidget(self.label_4, 1, 0, 1, 1)
self.spectral_number_le = QtWidgets.QLineEdit(self.frame_10)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_number_le.sizePolicy().hasHeightForWidth())
self.spectral_number_le.setSizePolicy(sizePolicy)
self.spectral_number_le.setMinimumSize(QtCore.QSize(60, 0))
self.spectral_number_le.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.spectral_number_le.setStyleSheet("QLineEdit\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:30pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.spectral_number_le.setObjectName("spectral_number_le")
self.gridLayout_11.addWidget(self.spectral_number_le, 1, 2, 1, 1)
self.framenumber_average_le = QtWidgets.QLineEdit(self.frame_10)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.framenumber_average_le.sizePolicy().hasHeightForWidth())
self.framenumber_average_le.setSizePolicy(sizePolicy)
self.framenumber_average_le.setMinimumSize(QtCore.QSize(60, 0))
self.framenumber_average_le.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.framenumber_average_le.setStyleSheet("QLineEdit\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:30pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" /*background-color:rgb(14 , 150 , 254);*/\n"
" /*边框圆角半径为8像素*/ \n"
" /*border-radius:8px;*/\n"
"}")
self.framenumber_average_le.setObjectName("framenumber_average_le")
self.gridLayout_11.addWidget(self.framenumber_average_le, 0, 2, 1, 1)
self.gridLayout_9.addWidget(self.frame_10, 0, 0, 1, 1)
self.gridLayout_10.addWidget(self.frame_9, 0, 0, 1, 1)
self.frame_8 = QtWidgets.QFrame(self.frame_3)
self.frame_8.setMaximumSize(QtCore.QSize(16777215, 35))
self.frame_8.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_8.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_8.setObjectName("frame_8")
self.gridLayout_3 = QtWidgets.QGridLayout(self.frame_8)
self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
self.gridLayout_3.setSpacing(0)
self.gridLayout_3.setObjectName("gridLayout_3")
spacerItem = QtWidgets.QSpacerItem(399, 15, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_3.addItem(spacerItem, 0, 0, 1, 1)
self.t_label = QtWidgets.QLabel(self.frame_8)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.t_label.sizePolicy().hasHeightForWidth())
self.t_label.setSizePolicy(sizePolicy)
self.t_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.t_label.setAlignment(QtCore.Qt.AlignCenter)
self.t_label.setObjectName("t_label")
self.gridLayout_3.addWidget(self.t_label, 0, 1, 1, 1)
self.hum_label = QtWidgets.QLabel(self.frame_8)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.hum_label.sizePolicy().hasHeightForWidth())
self.hum_label.setSizePolicy(sizePolicy)
self.hum_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.hum_label.setAlignment(QtCore.Qt.AlignCenter)
self.hum_label.setObjectName("hum_label")
self.gridLayout_3.addWidget(self.hum_label, 0, 2, 1, 1)
self.camera_status_label = QtWidgets.QLabel(self.frame_8)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.camera_status_label.sizePolicy().hasHeightForWidth())
self.camera_status_label.setSizePolicy(sizePolicy)
self.camera_status_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" background-color:rgb(255 , 0 , 0);/*normal*/\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:10px;\n"
"}")
self.camera_status_label.setAlignment(QtCore.Qt.AlignCenter)
self.camera_status_label.setObjectName("camera_status_label")
self.gridLayout_3.addWidget(self.camera_status_label, 0, 3, 1, 1)
self.gridLayout_10.addWidget(self.frame_8, 1, 0, 1, 1)
self.gridLayout_6.addWidget(self.frame_3, 2, 0, 1, 1)
self.retranslateUi(spectral_Window_phone)
QtCore.QMetaObject.connectSlotsByName(spectral_Window_phone)
def retranslateUi(self, spectral_Window_phone):
_translate = QtCore.QCoreApplication.translate
spectral_Window_phone.setWindowTitle(_translate("spectral_Window_phone", "光谱窗口"))
self.spectral_mode_autoexposure_bt.setText(_translate("spectral_Window_phone", "曝 光"))
self.dc_timer_label.setText(_translate("spectral_Window_phone", "计时"))
self.spectral_mode_dc_bt.setText(_translate("spectral_Window_phone", "暗 电 流"))
self.spectral_mode_wb_bt.setText(_translate("spectral_Window_phone", "白 板"))
self.wb_timer_label.setText(_translate("spectral_Window_phone", "计时"))
self.spectral_mode_record_bt.setText(_translate("spectral_Window_phone", "采 集"))
self.data_type_comboBox.setCurrentText(_translate("spectral_Window_phone", "Ref"))
self.data_type_comboBox.setItemText(0, _translate("spectral_Window_phone", "Ref"))
self.data_type_comboBox.setItemText(1, _translate("spectral_Window_phone", "DN"))
self.data_type_comboBox.setItemText(2, _translate("spectral_Window_phone", "Rad"))
self.label_2.setText(_translate("spectral_Window_phone", "文 件"))
self.file_number_label.setText(_translate("spectral_Window_phone", "文件号"))
self.label_3.setText(_translate("spectral_Window_phone", "自动平均"))
self.label_4.setText(_translate("spectral_Window_phone", "连续测量"))
self.t_label.setText(_translate("spectral_Window_phone", "温度:无数据"))
self.hum_label.setText(_translate("spectral_Window_phone", "湿度:无数据"))
self.camera_status_label.setText(_translate("spectral_Window_phone", "光谱仪:连接失败"))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
from ximea import xiapi
import numpy as np
cam = xiapi.Camera()
cam.open_device()
# self.cam.set_width(1392)
# cam.set_offsetX(272)
#
# cam.set_height(302)
# cam.set_offsetY(338)
# Serial number = 0031
cam.set_width(1392)
cam.set_offsetX(272)
cam.set_height(302)
cam.set_offsetY(406)
framerate=20
cam.set_framerate(framerate)
# cam.set_aeag_roi_offset_x(self.config_file_object.start_column)
# cam.set_aeag_roi_offset_y(self.config_file_object.start_row)
# cam.set_aeag_roi_height(self.config_file_object.end_row - self.config_file_object.start_row)
# cam.set_aeag_roi_width(self.config_file_object.end_column - self.config_file_object.start_column)
img = xiapi.Image()
# 使用相机自动曝光功能得到初始曝光值
cam.enable_aeag() # 开启自动曝光
cam.start_acquisition()
for i in range(10):
cam.get_image(img) # get data and pass them from camera to img
cam.stop_acquisition()
cam.disable_aeag() # 关闭自动曝光
# 根据自动曝光所得初始曝光值,循环迭代获取不过曝的曝光值
img.get_image_data_numpy()
image_raw_numpy = img.get_image_data_numpy()
while image_raw_numpy.max() >= 2730:
cam.set_exposure(int(0.9 * cam.get_exposure()))
cam.start_acquisition()
cam.get_image(img) # get data and pass them from camera to img
cam.stop_acquisition()
image_raw_numpy = img.get_image_data_numpy()
# 如果因为光线不足曝光值达到了最大就将曝光反馈变量设置为1
if cam.get_exposure() > int(1 / framerate * 10**6):
cam.set_exposure(int(1 / framerate * 10**6))
autoexposure_feedback = 1
else:
cam.set_exposure(cam.get_exposure())
haha=cam.get_exposure()

View File

@ -0,0 +1,48 @@
[bin]
binning = 1
start_column_binning_1 = 12
end_column_binning_1 = 1376
start_row_binning_1 = 1
end_row_binning_1 = 301
start_column_binning_2 = 13
end_column_binning_2 = 695
start_row_binning_2 = 1
end_row_binning_2 = 151
[effective_window]
width_binning_1 = 1392
offsetx_binning_1 = 272
height_binning_1 = 302
offsety_binning_1 = 364
width_binning_2 = 696
offsetx_binning_2 = 128
height_binning_2 = 151
offsety_binning_2 = 182
[calibration_file]
cal_file_name_image_bining_1 = lens_bin1_gain_SN0073
cal_file_name_image_bining_2 = lens_bin2_gain_SN0073
cal_file_it_image_bining_1 = 6969
cal_file_it_image_bining_2 = 1628
cal_file_name_spectral_bining_1 = optical_fiber_bin1_gain_SN0073
cal_file_it_spectrl_bining_1 = 42300
[wavelength_file_name]
file_name = wavelength0073.txt
[image_record_param]
image_dir = D:\py_program\corning410\record_system_v28/image
default_image_name = testimage
framerate = 50
exposure_time = 9367.0
gain = 0.0
frame_number = 20
arcus_speed = 1000
[spectral_record_param]
spectral_dir = D:\py_program\corning410\record_system_v28/spectral
default_spectral_name = testspectral
spectral_number = 10
framenumber_average = 10
exposure_time_spectral = 69997

View File

@ -0,0 +1,48 @@
[bin]
binning = 1
start_column_binning_1 = 12
end_column_binning_1 = 1376
start_row_binning_1 = 1
end_row_binning_1 = 301
start_column_binning_2 = 13
end_column_binning_2 = 695
start_row_binning_2 = 1
end_row_binning_2 = 151
[effective_window]
width_binning_1 = 1392
offsetx_binning_1 = 272
height_binning_1 = 302
offsety_binning_1 = 364
width_binning_2 = 696
offsetx_binning_2 = 128
height_binning_2 = 151
offsety_binning_2 = 182
[calibration_file]
cal_file_name_image_bining_1 = lens_bin1_gain_SN0073
cal_file_name_image_bining_2 = lens_bin2_gain_SN0073
cal_file_it_image_bining_1 = 6969
cal_file_it_image_bining_2 = 1628
cal_file_name_spectral_bining_1 = optical_fiber_bin1_gain_SN0073
cal_file_it_spectrl_bining_1 = 42300
[wavelength_file_name]
file_name = wavelength0073.txt
[image_record_param]
image_dir = D:\py_program\corning410\record_system_v28/image
default_image_name = 20220627
framerate = 10
exposure_time = 23232
gain = 0.0
frame_number = 50
arcus_speed = 800
[spectral_record_param]
spectral_dir = D:\py_program\corning410\record_system_v28/spectral
default_spectral_name = testspectral
spectral_number = 10
framenumber_average = 10
exposure_time_spectral = 69997

View File

View File

@ -0,0 +1,150 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'enter_window.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_enter_Window(object):
def setupUi(self, enter_Window):
enter_Window.setObjectName("enter_Window")
enter_Window.setEnabled(True)
enter_Window.resize(651, 474)
self.centralwidget = QtWidgets.QWidget(enter_Window)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.camstatus_label = QtWidgets.QLabel(self.centralwidget)
self.camstatus_label.setEnabled(True)
self.camstatus_label.setStyleSheet("QLabel\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:30pt;\n"
" /*字体颜色为白色*/\n"
" /*color:white;*/\n"
" /*背景颜色*/\n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}")
self.camstatus_label.setAlignment(QtCore.Qt.AlignCenter)
self.camstatus_label.setObjectName("camstatus_label")
self.gridLayout.addWidget(self.camstatus_label, 2, 0, 1, 1)
self.spectral_mode_bt = QtWidgets.QPushButton(self.centralwidget)
self.spectral_mode_bt.setEnabled(True)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_mode_bt.sizePolicy().hasHeightForWidth())
self.spectral_mode_bt.setSizePolicy(sizePolicy)
self.spectral_mode_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.spectral_mode_bt.setObjectName("spectral_mode_bt")
self.gridLayout.addWidget(self.spectral_mode_bt, 1, 0, 1, 1)
self.image_mode_phone_bt = QtWidgets.QPushButton(self.centralwidget)
self.image_mode_phone_bt.setEnabled(True)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.image_mode_phone_bt.sizePolicy().hasHeightForWidth())
self.image_mode_phone_bt.setSizePolicy(sizePolicy)
self.image_mode_phone_bt.setStyleSheet("/*按钮普通态*/\n"
"QPushButton\n"
"{\n"
" /*字体为微软雅黑*/\n"
" font-family:Microsoft Yahei;\n"
" /*字体大小为20点*/\n"
" font-size:25pt;\n"
" /*字体颜色为白色*/ \n"
" /*color:white;*/\n"
" /*背景颜色*/ \n"
" background-color:rgb(225 , 225 , 225);\n"
" /*边框圆角半径为8像素*/ \n"
" border-radius:20px;\n"
"}\n"
"\n"
"/*按钮停留态*/\n"
"QPushButton:hover\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(44 , 137 , 255);\n"
" /*边框圆角半径为8像素*/\n"
" /*border-radius:20px;*/\n"
"}\n"
"\n"
"/*按钮按下态*/\n"
"QPushButton:pressed\n"
"{\n"
" /*背景颜色*/ \n"
" background-color:rgb(255 , 0 , 0);\n"
"\n"
" /*左内边距为3像素让按下时字向右移动3像素*/ \n"
" padding-left:3px;\n"
"\n"
" /*上内边距为3像素让按下时字向下移动3像素*/ \n"
" padding-top:3px;\n"
"}")
self.image_mode_phone_bt.setObjectName("image_mode_phone_bt")
self.gridLayout.addWidget(self.image_mode_phone_bt, 0, 0, 1, 1)
enter_Window.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(enter_Window)
self.menubar.setGeometry(QtCore.QRect(0, 0, 651, 23))
self.menubar.setObjectName("menubar")
enter_Window.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(enter_Window)
self.statusbar.setObjectName("statusbar")
enter_Window.setStatusBar(self.statusbar)
self.actionwew_e = QtWidgets.QAction(enter_Window)
self.actionwew_e.setObjectName("actionwew_e")
self.retranslateUi(enter_Window)
QtCore.QMetaObject.connectSlotsByName(enter_Window)
def retranslateUi(self, enter_Window):
_translate = QtCore.QCoreApplication.translate
enter_Window.setWindowTitle(_translate("enter_Window", "主窗口"))
self.camstatus_label.setText(_translate("enter_Window", "正在打开相机..."))
self.spectral_mode_bt.setText(_translate("enter_Window", "光谱模式"))
self.image_mode_phone_bt.setText(_translate("enter_Window", "影像模式"))
self.actionwew_e.setText(_translate("enter_Window", "wew e"))

Some files were not shown because too many files have changed in this diff Show More