From e3182cfaf59150d044753b923f9346f10b3098bf Mon Sep 17 00:00:00 2001 From: copper Date: Thu, 12 May 2022 21:06:50 +0800 Subject: [PATCH] fix some bugs --- log.txt | 5 +++++ plugins/basic_change/main.py | 26 +++++++++++++++++++------- plugins/export_to/main.py | 2 +- rscder/gui/mainwindow.py | 2 +- rscder/gui/project.py | 2 +- rscder/gui/result.py | 2 +- rscder/plugins/loader.py | 2 +- 使用手册.txt | 7 ++++++- 8 files changed, 35 insertions(+), 13 deletions(-) diff --git a/log.txt b/log.txt index e69de29..d4015f1 100644 --- a/log.txt +++ b/log.txt @@ -0,0 +1,5 @@ +2022-05-12 21:03:53,901 - root - INFO - lic data:2022-12-01 00:00:00 +2022-05-12 21:03:53,905 - root - INFO - remain_days: 202 +2022-05-12 21:03:55,251 - root - INFO - lic data:2022-12-01 00:00:00 +2022-05-12 21:03:55,251 - root - INFO - remain_days: 202 +2022-05-12 21:04:11,685 - root - INFO - AAA.tif-BBB.tif diff --git a/plugins/basic_change/main.py b/plugins/basic_change/main.py index f111d0a..e049520 100644 --- a/plugins/basic_change/main.py +++ b/plugins/basic_change/main.py @@ -17,7 +17,7 @@ class MyDialog(QDialog): super().__init__(parent) self.setWindowTitle('BasicChange') - self.setWindowIcon(QIcon(":/icons/logo.svg")) + self.setWindowIcon(QIcon(":/icons/logo.png")) self.setFixedWidth(500) @@ -124,9 +124,12 @@ class BasicMethod(BasicPlugin): out_ds.SetProjection(ds1.GetProjection()) max_diff = 0 min_diff = math.inf - for j in range(yblocks): + for j in range(yblocks + 1): + self.message_send.emit(f'计算{j}/{yblocks}') block_xy = (0, j * cell_size[1]) + if block_xy[1] > ysize: + break block_size = (xsize, cell_size[1]) if block_xy[1] + block_size[1] > ysize: block_size = (xsize, ysize - block_xy[1]) @@ -141,7 +144,7 @@ class BasicMethod(BasicPlugin): block_diff = block_diff.astype(np.float32) block_diff = np.abs(block_diff) - min_diff = min(min_diff, block_diff.min()) + min_diff = min(min_diff, block_diff[block_diff > 0].min()) max_diff = max(max_diff, block_diff.max()) out_ds.GetRasterBand(1).WriteArray(block_diff, *block_xy) @@ -152,11 +155,15 @@ class BasicMethod(BasicPlugin): self.message_send.emit('归一化概率中...') temp_in_ds = gdal.Open(out_tif) - out_normal_tif = os.path.join(out, 'diff_0_255.tif') + out_normal_tif = os.path.join(out, '{}.tif'.format(int(np.random.rand() * 100000))) out_normal_ds = driver.Create(out_normal_tif, xsize, ysize, 1, gdal.GDT_Byte) + out_normal_ds.SetGeoTransform(ds1.GetGeoTransform()) + out_normal_ds.SetProjection(ds1.GetProjection()) hist = np.zeros(256, dtype=np.int32) - for j in range(yblocks): + for j in range(yblocks+1): block_xy = (0, j * cell_size[1]) + if block_xy[1] > ysize: + break block_size = (xsize, cell_size[1]) if block_xy[1] + block_size[1] > ysize: block_size = (xsize, ysize - block_xy[1]) @@ -164,9 +171,14 @@ class BasicMethod(BasicPlugin): block_data = (block_data - min_diff) / (max_diff - min_diff) * 255 block_data = block_data.astype(np.uint8) out_normal_ds.GetRasterBand(1).WriteArray(block_data, *block_xy) - hist_t, _ = np.histogram(block_data, bins=256) + hist_t, _ = np.histogram(block_data, bins=256, range=(0, 256)) hist += hist_t - + print(hist) + del temp_in_ds + try: + os.remove(out_tif) + except: + pass self.gap = OTSU(hist) self.message_send.emit('OTSU:' + str(self.gap)) diff --git a/plugins/export_to/main.py b/plugins/export_to/main.py index 90f7558..4dd979c 100644 --- a/plugins/export_to/main.py +++ b/plugins/export_to/main.py @@ -22,7 +22,7 @@ class ExportDialog(QDialog): for layer in Project().layers.values(): for result_layer in layer.results: if result_layer.layer_type == ResultLayer.POINT: - result_layer_select.addItem( layer.name[5:] + '-' + result_layer.name, result_layer) + result_layer_select.addItem( layer.name[:5] + '-' + result_layer.name, result_layer) for i in range(result_layer_select.count() - 1): result_layer_select.setItemIcon(i + 1, QIcon(":/icons/layer.png")) diff --git a/rscder/gui/mainwindow.py b/rscder/gui/mainwindow.py index 620c516..79fa90f 100644 --- a/rscder/gui/mainwindow.py +++ b/rscder/gui/mainwindow.py @@ -12,7 +12,7 @@ from rscder.gui.result import ResultTable from rscder.plugins.loader import PluginLoader from rscder.utils import Settings from rscder.utils.project import Project - +from rscder.gui.layercombox import LayerCombox class MainWindow(QMainWindow): def __init__(self, parent=None, **kargs): diff --git a/rscder/gui/project.py b/rscder/gui/project.py index a51ad14..38a557c 100644 --- a/rscder/gui/project.py +++ b/rscder/gui/project.py @@ -9,7 +9,7 @@ class Create(QDialog): def __init__(self, parent=None) -> None: super().__init__(parent) self.setWindowTitle('Create Project') - self.setWindowIcon(QIcon(":/icons/logo.svg")) + self.setWindowIcon(QIcon(":/icons/logo.png")) self.file = str(Path(Settings.General().root)/'default') self.name = '未命名' diff --git a/rscder/gui/result.py b/rscder/gui/result.py index 097ac65..ebd02a4 100644 --- a/rscder/gui/result.py +++ b/rscder/gui/result.py @@ -49,7 +49,7 @@ class ResultTable(QtWidgets.QWidget): else: self.tablewidget.item(row, col).setBackground(Qt.green) # logging - logging.info(item_idx, item_status) + # logging.info() self.result.update({'row':item_idx, 'value':item_status}) self.no_change = False diff --git a/rscder/plugins/loader.py b/rscder/plugins/loader.py index 985da81..87ceffe 100644 --- a/rscder/plugins/loader.py +++ b/rscder/plugins/loader.py @@ -36,7 +36,7 @@ class PluginLoader(QObject): mes = inspect.getmembers(module) for name, obj in mes: # logging - logging.info(name, obj) + logging.info(f'{name}:{obj}') if inspect.isclass(obj) and issubclass(obj, BasicPlugin): info = obj.info() break diff --git a/使用手册.txt b/使用手册.txt index 6bc28e8..1aeb405 100644 --- a/使用手册.txt +++ b/使用手册.txt @@ -16,4 +16,9 @@ 点击载入数据 选择两幅不同时相的影像 -4. 基本变化检测 \ No newline at end of file +4. 差分法检测 + +点击基本变化检测 +点击差分法 +选择图层 +点击确定 \ No newline at end of file