v2.2.1add:能够通过光谱bin1空间bin1的定标文件生成光谱bin2空间bin1的定标文件

This commit is contained in:
tangchao0503
2023-07-28 11:20:31 +08:00
parent 32ccb25a0e
commit 0936506e37
5 changed files with 619 additions and 256 deletions

1
.gitignore vendored
View File

@ -2,6 +2,7 @@
/.idea /.idea
*.xlsx *.xlsx
*.cal *.cal
testdata
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/

View File

@ -14,6 +14,7 @@ from osgeo import gdal
from scipy.interpolate import interp1d from scipy.interpolate import interp1d
import spectral import spectral
import time import time
import copy
from PyQt5.QtWidgets import QMainWindow, QFileDialog, QApplication from PyQt5.QtWidgets import QMainWindow, QFileDialog, QApplication
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
@ -25,6 +26,7 @@ class EnterWindow(QMainWindow, Ui_MainWindow):
self.setupUi(self) self.setupUi(self)
self.radiance_calibration_object = RadianceCalibration() self.radiance_calibration_object = RadianceCalibration()
self.changeBinForCorning_object = ChangeBinForCorning()
# self.setWindowState(Qt.WindowMaximized) # 初始化时就最大化窗口 # self.setWindowState(Qt.WindowMaximized) # 初始化时就最大化窗口
@ -32,6 +34,9 @@ class EnterWindow(QMainWindow, Ui_MainWindow):
self.dn_bt.clicked.connect(self.select_dn) self.dn_bt.clicked.connect(self.select_dn)
self.dark_bt.clicked.connect(self.select_dark) self.dark_bt.clicked.connect(self.select_dark)
self.out_file_bt.clicked.connect(self.select_out_file) self.out_file_bt.clicked.connect(self.select_out_file)
self.calfile_bin1_bt.clicked.connect(self.select_calfile_changebin)
self.out_calfile_bt.clicked.connect(self.select_out_file_changebin)
self.operate_bt.clicked.connect(self.operate) self.operate_bt.clicked.connect(self.operate)
self.dark_checkBox.stateChanged.connect(self.disabledDark) self.dark_checkBox.stateChanged.connect(self.disabledDark)
@ -41,6 +46,14 @@ class EnterWindow(QMainWindow, Ui_MainWindow):
self.tmp_dark_file_path = None # 用于保存当前路径,下次打开就默认在此路径下 self.tmp_dark_file_path = None # 用于保存当前路径,下次打开就默认在此路径下
self.tmp_out_file_path = None # 用于保存当前路径,下次打开就默认在此路径下 self.tmp_out_file_path = None # 用于保存当前路径,下次打开就默认在此路径下
self.spatialbin_comboBox.addItem("1")
# self.spatialbin_comboBox.addItem("2")
# self.spectral_comboBox.addItem("1")
self.spectral_comboBox.addItem("2")
self.change_bin_operate_bt.clicked.connect(self.operate_changebin)
def select_rad(self): def select_rad(self):
if self.tmp_rad_file_path == None: if self.tmp_rad_file_path == None:
rad_file_path = QFileDialog.getOpenFileName(self, '选择asd辐亮度文件', os.path.dirname(__file__))[0] rad_file_path = QFileDialog.getOpenFileName(self, '选择asd辐亮度文件', os.path.dirname(__file__))[0]
@ -93,12 +106,29 @@ class EnterWindow(QMainWindow, Ui_MainWindow):
self.radiance_calibration_object.out_file_path = out_file_path self.radiance_calibration_object.out_file_path = out_file_path
self.out_file_le.setText(out_file_path) self.out_file_le.setText(out_file_path)
def select_calfile_changebin(self):
tmp = QFileDialog.getExistingDirectory(self, 'bin1定标文件夹', os.path.dirname(__file__))
self.changeBinForCorning_object.calfile_path = tmp
self.calfile_bin1_le.setText(tmp)
def select_out_file_changebin(self):
tmp = QFileDialog.getExistingDirectory(self, '选择输出路径', os.path.dirname(__file__))
self.changeBinForCorning_object.out_file_path = tmp
self.out_calfile_changebin_le.setText(tmp)
def operate(self): def operate(self):
if(self.dark_checkBox.isChecked()): if(self.dark_checkBox.isChecked()):
self.radiance_calibration_object.operate() self.radiance_calibration_object.operate()
else: else:
self.radiance_calibration_object.operate_without_dark() self.radiance_calibration_object.operate_without_dark()
def operate_changebin(self):
self.changeBinForCorning_object.spatialbin = int(self.spatialbin_comboBox.currentText())
self.changeBinForCorning_object.spectralbin = int(self.spectral_comboBox.currentText())
self.changeBinForCorning_object.changebin()
def disabledDark(self, isEnable): def disabledDark(self, isEnable):
self.dark_le.setEnabled(isEnable) self.dark_le.setEnabled(isEnable)
self.dark_bt.setEnabled(isEnable) self.dark_bt.setEnabled(isEnable)
@ -284,6 +314,115 @@ class RadianceCalibration():
traceback.print_exc() traceback.print_exc()
class ChangeBinForCorning():
def __init__(self):
self.calfile_path = None
self.out_file_path = None
self.spatialbin = None
self.spectralbin = None
def get_hdr_filename(self, file_path):
return os.path.splitext(file_path)[0] + ".hdr"
def get_hdr_filename_with_bip(self, file_path):
return os.path.splitext(file_path)[0] + ".bip.hdr"
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_Float64,
options=["INTERLEAVE=BIP"])
for i in range(band):
dst_ds.GetRasterBand(i + 1).WriteArray(data[i, :, :]) # gdal的band从1开始所以dst_ds.GetRasterBand(i+1)
dst_ds = None
def write_fields_to_hdrfile(self, fields, hdr_file):
header_tmp = spectral.envi.read_envi_header(hdr_file)
fields['generated time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
with open(hdr_file, "a", encoding='utf-8') as f:
for key in fields.keys():
if key in header_tmp or key == "description":
continue
if type(fields[key]) == list:
f.write(key + " = {" + ", ".join(fields[key]) + "}\n")
else:
f.write(key + " = " + fields[key] + "\n")
def process_hdr(self, hdr_file_path, envi_header_dict):
self.write_fields_to_hdrfile(envi_header_dict, self.get_hdr_filename(hdr_file_path))
shutil.copyfile(self.get_hdr_filename(hdr_file_path), self.get_hdr_filename_with_bip(hdr_file_path))
os.remove(self.get_hdr_filename(hdr_file_path))
def changebin(self):
gain_name_in = os.path.join(self.calfile_path, "gain.bip")
offset_name_in = os.path.join(self.calfile_path, "offset.bip")
img_proj, img_geotrans, img_data = ImageReaderWriter.read_img(gain_name_in)
img_proj1, img_geotrans1, img_dark = ImageReaderWriter.read_img(offset_name_in)
in_hdr_dict = spectral.envi.read_envi_header(self.get_hdr_filename_with_bip(gain_name_in))
if in_hdr_dict["spectral binning"] != "1" and in_hdr_dict["sample binning"] != "1":
print("输入定标文件不是bin1。")
return
if self.spatialbin == 1 and self.spectralbin == 1:
print("Bin1 is not need to convert.")
return
if self.spatialbin == 1 and self.spectralbin == 2:
samples = int(in_hdr_dict["samples"])
if int(in_hdr_dict["bands"]) % 2 == 0:
bands = int(int(in_hdr_dict["bands"]) / 2)
else:
print("Bands is not divisible by 2.")
return
out_hdr_dict = copy.deepcopy(in_hdr_dict)
out_hdr_dict["bands"] = str(bands)
out_hdr_dict["spectral binning"] = str(2)
wave = []
gain = np.empty((bands, 1, samples))
dark = np.empty((bands, 1, samples))
for i in range(gain.shape[0]):
gain[i, :, :] = (img_data[2 * i, :, :] + img_data[2 * i + 1, :, :]) / 2
dark[i, :, :] = (img_dark[2 * i, :, :] + img_dark[2 * i + 1, :, :]) / 2
tmp = (float(out_hdr_dict["wavelength"][2 * i]) + float(out_hdr_dict["wavelength"][2 * i + 1])) / 2
wave.append(str(round(tmp, 3)))
out_hdr_dict["wavelength"] = wave
gain_name = os.path.join(self.out_file_path, "gain.bip")
offset_name = os.path.join(self.out_file_path, "offset.bip")
self.write_img(gain_name, gain)
self.process_hdr(gain_name, out_hdr_dict)
self.write_img(offset_name, dark)
self.process_hdr(offset_name, out_hdr_dict)
if self.spatialbin == 2 and self.spectralbin == 2:
samples = int(in_hdr_dict["samples"])
if int(in_hdr_dict["bands"]) % 2 == 0:
bands = int(int(in_hdr_dict["bands"]) / 2)
else:
print("Bands is not divisible by 2.")
return
# # 空间bin
# gain = np.empty((300, 1, 688))
# for i in range(gain.shape[2]):
# if i <= 683:
# gain[:, :, i] = img_data[:, :, i*2] # 丢弃
# else:
# gain[:, :, i] = img_data[:, :, 683] # 重复
if __name__ == '__main__': if __name__ == '__main__':
app = QApplication(sys.argv) app = QApplication(sys.argv)

View File

@ -1,55 +0,0 @@
#!/usr/bin/env python
# coding: utf-8
import os
import glob
import sys, traceback, re
from osgeo import gdal
import numpy as np
import matplotlib.pyplot as plt
from library.image_reader_writer import ImageReaderWriter
import spectral
def write_img(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_Float64,
options=["INTERLEAVE=BIP"])
for i in range(band):
dst_ds.GetRasterBand(i + 1).WriteArray(data[i, :, :]) # gdal的band从1开始所以dst_ds.GetRasterBand(i+1)
dst_ds = None
gainfilepath = r'D:\delete\254_11\offset.bip'
gainfilepathhdr = r'D:\delete\254_11\offset.bip.hdr'
gainfilepath_out = r'D:\delete\254_11\convert\offset.bip'
img_proj, img_geotrans, img_data = ImageReaderWriter.read_img(gainfilepath)
# # 空间bin
# gain = np.empty((300, 1, 688))
# for i in range(gain.shape[2]):
# if i <= 683:
# gain[:, :, i] = img_data[:, :, i*2] # 丢弃
# else:
# gain[:, :, i] = img_data[:, :, 683] # 重复
# 光谱bin
gain = np.empty((150, 1, 1368))
for i in range(gain.shape[0]):
gain[i, :, :] = (img_data[2 * i, :, :] + img_data[2 * i + 1, :, :]) / 2
header_tmp = spectral.envi.read_envi_header(gainfilepathhdr)
wavetmp = []
for i in range(150): # len(header_tmp["wavelength"])
x = (float(header_tmp["wavelength"][2 * i]) + float(header_tmp["wavelength"][2 * i + 1])) / 2
wavetmp.append(x)
print("%.4f, " % x, end='')
write_img(gainfilepath_out, gain)

View File

@ -14,12 +14,18 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow") MainWindow.setObjectName("MainWindow")
MainWindow.resize(964, 621) MainWindow.resize(1153, 696)
self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_2.setObjectName("gridLayout_2") self.gridLayout_2.setObjectName("gridLayout_2")
self.frame = QtWidgets.QFrame(self.centralwidget) self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.gridLayout_3 = QtWidgets.QGridLayout(self.tab)
self.gridLayout_3.setObjectName("gridLayout_3")
self.frame = QtWidgets.QFrame(self.tab)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised) self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame") self.frame.setObjectName("frame")
@ -74,6 +80,11 @@ class Ui_MainWindow(object):
self.dn_bt.setObjectName("dn_bt") self.dn_bt.setObjectName("dn_bt")
self.gridLayout.addWidget(self.dn_bt, 1, 2, 1, 1) self.gridLayout.addWidget(self.dn_bt, 1, 2, 1, 1)
self.dark_checkBox = QtWidgets.QCheckBox(self.frame) self.dark_checkBox = QtWidgets.QCheckBox(self.frame)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.dark_checkBox.sizePolicy().hasHeightForWidth())
self.dark_checkBox.setSizePolicy(sizePolicy)
self.dark_checkBox.setChecked(True) self.dark_checkBox.setChecked(True)
self.dark_checkBox.setObjectName("dark_checkBox") self.dark_checkBox.setObjectName("dark_checkBox")
self.gridLayout.addWidget(self.dark_checkBox, 2, 0, 1, 1) self.gridLayout.addWidget(self.dark_checkBox, 2, 0, 1, 1)
@ -122,14 +133,100 @@ class Ui_MainWindow(object):
self.out_file_bt.setSizePolicy(sizePolicy) self.out_file_bt.setSizePolicy(sizePolicy)
self.out_file_bt.setObjectName("out_file_bt") self.out_file_bt.setObjectName("out_file_bt")
self.gridLayout.addWidget(self.out_file_bt, 3, 2, 1, 1) self.gridLayout.addWidget(self.out_file_bt, 3, 2, 1, 1)
self.gridLayout_2.addWidget(self.frame, 0, 0, 1, 1) self.gridLayout_3.addWidget(self.frame, 0, 0, 1, 1)
self.operate_bt = QtWidgets.QPushButton(self.centralwidget) self.operate_bt = QtWidgets.QPushButton(self.tab)
self.operate_bt.setMaximumSize(QtCore.QSize(16777215, 60)) self.operate_bt.setMaximumSize(QtCore.QSize(16777215, 60))
self.operate_bt.setObjectName("operate_bt") self.operate_bt.setObjectName("operate_bt")
self.gridLayout_2.addWidget(self.operate_bt, 1, 0, 1, 1) self.gridLayout_3.addWidget(self.operate_bt, 1, 0, 1, 1)
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.gridLayout_4 = QtWidgets.QGridLayout(self.tab_2)
self.gridLayout_4.setObjectName("gridLayout_4")
self.label_2 = QtWidgets.QLabel(self.tab_2)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_4.addWidget(self.label_2, 0, 0, 1, 1)
self.calfile_bin1_le = QtWidgets.QLineEdit(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.calfile_bin1_le.sizePolicy().hasHeightForWidth())
self.calfile_bin1_le.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(18)
self.calfile_bin1_le.setFont(font)
self.calfile_bin1_le.setReadOnly(True)
self.calfile_bin1_le.setObjectName("calfile_bin1_le")
self.gridLayout_4.addWidget(self.calfile_bin1_le, 0, 1, 1, 1)
self.calfile_bin1_bt = QtWidgets.QPushButton(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.calfile_bin1_bt.sizePolicy().hasHeightForWidth())
self.calfile_bin1_bt.setSizePolicy(sizePolicy)
self.calfile_bin1_bt.setObjectName("calfile_bin1_bt")
self.gridLayout_4.addWidget(self.calfile_bin1_bt, 0, 2, 1, 1)
self.label_5 = QtWidgets.QLabel(self.tab_2)
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.gridLayout_4.addWidget(self.label_5, 1, 0, 1, 1)
self.spatialbin_comboBox = QtWidgets.QComboBox(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spatialbin_comboBox.sizePolicy().hasHeightForWidth())
self.spatialbin_comboBox.setSizePolicy(sizePolicy)
self.spatialbin_comboBox.setStyleSheet("")
self.spatialbin_comboBox.setEditable(False)
self.spatialbin_comboBox.setCurrentText("")
self.spatialbin_comboBox.setObjectName("spatialbin_comboBox")
self.gridLayout_4.addWidget(self.spatialbin_comboBox, 1, 1, 1, 1)
self.label_6 = QtWidgets.QLabel(self.tab_2)
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
self.label_6.setObjectName("label_6")
self.gridLayout_4.addWidget(self.label_6, 2, 0, 1, 1)
self.spectral_comboBox = QtWidgets.QComboBox(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spectral_comboBox.sizePolicy().hasHeightForWidth())
self.spectral_comboBox.setSizePolicy(sizePolicy)
self.spectral_comboBox.setObjectName("spectral_comboBox")
self.gridLayout_4.addWidget(self.spectral_comboBox, 2, 1, 1, 1)
self.label_7 = QtWidgets.QLabel(self.tab_2)
self.label_7.setAlignment(QtCore.Qt.AlignCenter)
self.label_7.setObjectName("label_7")
self.gridLayout_4.addWidget(self.label_7, 3, 0, 1, 1)
self.out_calfile_changebin_le = QtWidgets.QLineEdit(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.out_calfile_changebin_le.sizePolicy().hasHeightForWidth())
self.out_calfile_changebin_le.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(18)
self.out_calfile_changebin_le.setFont(font)
self.out_calfile_changebin_le.setReadOnly(True)
self.out_calfile_changebin_le.setObjectName("out_calfile_changebin_le")
self.gridLayout_4.addWidget(self.out_calfile_changebin_le, 3, 1, 1, 1)
self.out_calfile_bt = QtWidgets.QPushButton(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.out_calfile_bt.sizePolicy().hasHeightForWidth())
self.out_calfile_bt.setSizePolicy(sizePolicy)
self.out_calfile_bt.setObjectName("out_calfile_bt")
self.gridLayout_4.addWidget(self.out_calfile_bt, 3, 2, 1, 1)
self.change_bin_operate_bt = QtWidgets.QPushButton(self.tab_2)
self.change_bin_operate_bt.setMaximumSize(QtCore.QSize(16777215, 60))
self.change_bin_operate_bt.setObjectName("change_bin_operate_bt")
self.gridLayout_4.addWidget(self.change_bin_operate_bt, 4, 0, 1, 3)
self.tabWidget.addTab(self.tab_2, "")
self.gridLayout_2.addWidget(self.tabWidget, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 964, 26)) self.menubar.setGeometry(QtCore.QRect(0, 0, 1153, 23))
self.menubar.setObjectName("menubar") self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar) MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar = QtWidgets.QStatusBar(MainWindow)
@ -137,12 +234,13 @@ class Ui_MainWindow(object):
MainWindow.setStatusBar(self.statusbar) MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow): def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Corning Calibration v2.1")) MainWindow.setWindowTitle(_translate("MainWindow", "Corning Calibration v2.2.1"))
self.label.setText(_translate("MainWindow", "ASD辐亮度")) self.label.setText(_translate("MainWindow", "能量"))
self.rad_bt.setText(_translate("MainWindow", "浏览...")) self.rad_bt.setText(_translate("MainWindow", "浏览..."))
self.label_3.setText(_translate("MainWindow", "DN")) self.label_3.setText(_translate("MainWindow", "DN"))
self.dn_bt.setText(_translate("MainWindow", "浏览...")) self.dn_bt.setText(_translate("MainWindow", "浏览..."))
@ -151,6 +249,15 @@ class Ui_MainWindow(object):
self.label_4.setText(_translate("MainWindow", "输出路径")) self.label_4.setText(_translate("MainWindow", "输出路径"))
self.out_file_bt.setText(_translate("MainWindow", "浏览...")) self.out_file_bt.setText(_translate("MainWindow", "浏览..."))
self.operate_bt.setText(_translate("MainWindow", "执行")) self.operate_bt.setText(_translate("MainWindow", "执行"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "rad cal"))
self.label_2.setText(_translate("MainWindow", "bin1 cal file"))
self.calfile_bin1_bt.setText(_translate("MainWindow", "浏览..."))
self.label_5.setText(_translate("MainWindow", "spatial bin"))
self.label_6.setText(_translate("MainWindow", "spectral bin"))
self.label_7.setText(_translate("MainWindow", "out"))
self.out_calfile_bt.setText(_translate("MainWindow", "浏览..."))
self.change_bin_operate_bt.setText(_translate("MainWindow", "执行"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "change bin"))
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -6,15 +6,25 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>964</width> <width>1153</width>
<height>621</height> <height>696</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Corning Calibration v2.1</string> <string>Corning Calibration v2.2.1</string>
</property> </property>
<widget class="QWidget" name="centralwidget"> <widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>rad cal</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QFrame" name="frame"> <widget class="QFrame" name="frame">
<property name="frameShape"> <property name="frameShape">
@ -27,7 +37,7 @@
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label"> <widget class="QLabel" name="label">
<property name="text"> <property name="text">
<string>ASD辐亮度</string> <string>能量</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -108,6 +118,12 @@
</item> </item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QCheckBox" name="dark_checkBox"> <widget class="QCheckBox" name="dark_checkBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text"> <property name="text">
<string>dark_300tc</string> <string>dark_300tc</string>
</property> </property>
@ -209,13 +225,168 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>change bin</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>bin1 cal file</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="calfile_bin1_le">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>18</pointsize>
</font>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="calfile_bin1_bt">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>浏览...</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>spatial bin</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="spatialbin_comboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="editable">
<bool>false</bool>
</property>
<property name="currentText">
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>spectral bin</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="spectral_comboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>out</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="out_calfile_changebin_le">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>18</pointsize>
</font>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="out_calfile_bt">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>浏览...</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="3">
<widget class="QPushButton" name="change_bin_operate_bt">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>60</height>
</size>
</property>
<property name="text">
<string>执行</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar"> <widget class="QMenuBar" name="menubar">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>964</width> <width>1153</width>
<height>26</height> <height>23</height>
</rect> </rect>
</property> </property>
</widget> </widget>