Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
ed5fdc0
Modify to connect functions of QSettings
Oh-JongJin Feb 10, 2022
3a8d25d
Replace plot module to QChartView
Oh-JongJin Feb 11, 2022
295d275
Apply sprint requirements
Oh-JongJin Feb 14, 2022
ace006f
Fix a part of save csv file in save_target function
Oh-JongJin Feb 14, 2022
734ef93
Modify target paintEvent when camera direction flip
Oh-JongJin Feb 15, 2022
072d170
Rearrange image capture path
Oh-JongJin Feb 15, 2022
9836e88
Merge pull request #1 from Oh-JongJin/update_ui
Oh-JongJin Feb 15, 2022
00f55b5
Update docstring
Oh-JongJin Feb 17, 2022
51cc145
Remove unused modules
Oh-JongJin Feb 17, 2022
964fc79
Apply file deletion function completely
Oh-JongJin Feb 18, 2022
52d7974
Modify data for save image file name
Oh-JongJin Feb 18, 2022
6098491
Apply file delete through QCalender widget
Oh-JongJin Feb 23, 2022
9351225
Simplified file delete UI
Oh-JongJin Feb 23, 2022
0c6ec66
Delete useless code
Oh-JongJin Feb 23, 2022
407931b
Add login view
Oh-JongJin Feb 28, 2022
0450857
Simplified codes
Oh-JongJin Mar 2, 2022
6e16e4c
Add Target table, Value chart in setting window
Oh-JongJin Mar 4, 2022
0827135
Version 0.1
Oh-JongJin Mar 8, 2022
62e1edd
Add azimuth angle image line in setting view
Oh-JongJin Mar 15, 2022
bba3dd7
Modify image storage path and store front and rear images simultaneou…
Oh-JongJin Mar 16, 2022
95149f8
Arrange code
Oh-JongJin Mar 17, 2022
dd64766
Merge pull request #2 from Oh-JongJin/update_ui
Oh-JongJin Mar 17, 2022
e3a9586
Update JS08 program
Oh-JongJin Aug 30, 2022
7c31f9f
Fix night visibility graph
Oh-JongJin Aug 31, 2022
22aaf25
Add discernment plot QCategoryAxis label
Oh-JongJin Sep 23, 2022
d4f7aaf
Add visibility value QCategoryAxis in Discernment view
Oh-JongJin Sep 30, 2022
04fb4c4
Debug camera disconnect
Oh-JongJin Oct 5, 2022
3429815
Add first_step syntax
Oh-JongJin Oct 6, 2022
ae4dbdf
JS08 Program update
Oh-JongJin Jan 27, 2023
57edf14
Update JS08
Oh-JongJin Feb 1, 2023
26494be
Add Login, crypto Func
Oh-JongJin Feb 13, 2023
8ad9e32
Update JS08
Oh-JongJin Feb 19, 2023
adc93ff
Update latest version
Oh-JongJin Feb 19, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/convert_pyside.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

66 changes: 66 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added logo.ico
Binary file not shown.
15 changes: 9 additions & 6 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
PyQt5 >= 5.13
PySide6~=6.3.0
python-vlc
PyQtGraph
pyechart
influxdb
opencv-python
pandas
opencv-contrib-python
pandas~=1.3.4
scipy~=1.7.2
psutil~=5.9.0
pyinstaller
opencv-python~=4.6.0.66
numpy~=1.21.3
cryptography~=37.0.2
42 changes: 40 additions & 2 deletions run.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,44 @@
# [email protected] (Seong Min Chae)
# [email protected] (Jongjin Oh)

from src.__main__ import main
import os
import sys
import time
import multiprocessing as mp
from multiprocessing import Queue, Process

main()
from PySide6.QtWidgets import QApplication, QMessageBox
from PySide6.QtGui import QGuiApplication

from src.video_thread_mp import producer
from src.clock import clockclock
from src.js08 import JS08MainWindow
from src.model import JS08Settings


if __name__ == '__main__':
print(f'Start time: {time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}')

mp.freeze_support()
q = Queue()
_q = Queue()

_producer = producer

p = Process(name='clock', target=clockclock, args=(q,), daemon=True)
_p = Process(name='producer', target=_producer, args=(_q,), daemon=True)

p.start()
_p.start()

os.makedirs(f'{JS08Settings.get("data_csv_path")}', exist_ok=True)
os.makedirs(f'{JS08Settings.get("target_csv_path")}', exist_ok=True)
os.makedirs(f'{JS08Settings.get("image_save_path")}', exist_ok=True)

app = QApplication(sys.argv)
screen_size = QGuiApplication.screens()[0].geometry()
width, height = screen_size.width(), screen_size.height()
if width > 1920 or height > 1080:
QMessageBox.warning(None, 'Warning', 'JS08 is based on FHD screen.')
window = JS08MainWindow(q, _q)
sys.exit(app.exec())
Binary file added src/JS08_Logo.ico
Binary file not shown.
9 changes: 0 additions & 9 deletions src/__main__.py

This file was deleted.

76 changes: 76 additions & 0 deletions src/auto_file_delete.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#!/usr/bin/env python3
#
# Copyright 2021-2022 9th grade 5th class.
#
# Authors:
# [email protected]

import os
import psutil
import shutil

from PySide6.QtWidgets import (QDialog, QApplication, QMessageBox)

from model import JS08Settings
from resources.auto_file_delete import Ui_Form


def byte_transform(bytes, to, bsize=1024):
"""
Unit conversion of byte received from shutil

:return: Capacity of the selected unit (int)
"""
unit = {'KB': 1, 'MB': 2, 'GB': 3, 'TB': 4}
r = float(bytes)
for i in range(unit[to]):
r = r / bsize
return int(r)


def delete_select_date(path: str, folder: list):
"""
Delete the list containing the folder name

:param path: Path to proceed with a auto-delete
:param folder: Data older than the date selected as the calendarWidget
"""

# for i in range(len(folder)):
# a = os.path.join(path, str(folder[i]))
# shutil.rmtree(a)
# print(f'{a} delete complete.')
a = os.path.join(path, str(folder[0]))
print(f'{a} delete complete.')


def check_file_date(path: str):
is_old = []

for f in os.listdir(path):
is_old.append(int(f))
delete_select_date(path, is_old)


def FileAutoDelete():
save_disk = JS08Settings.get('image_save_path')[:2]

total, used, free = shutil.disk_usage(save_disk)
if JS08Settings.get('afd'):
if byte_transform(free, 'GB') <= 20:
check_disk()


def check_disk():
check_file_date(os.path.join(JS08Settings.get('image_save_path'), 'vista',
JS08Settings.get('front_camera_name')))
print('-' * 10)
check_file_date(os.path.join(JS08Settings.get('image_save_path'), 'vista',
JS08Settings.get('rear_camera_name')))


if __name__ == "__main__":
import sys

FileAutoDelete()
# sys.exit(app.exec())
99 changes: 99 additions & 0 deletions src/cal_ext_coef.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
#!/usr/bin/env python3
#
# Copyright 2021-2022 Sijung Co., Ltd.
#
# Authors:
# [email protected] (Seong Min Chae)
# [email protected] (Jongjin Oh)

import itertools
import os

import time
import numpy as np
import pandas as pd
import traceback

from scipy.optimize import curve_fit
from model import JS08Settings
from save_log import log


class Coef:

def __init__(self):
self.hanhwa_dist = []
self.hanhwa_x = []
self.hanhwa_r = []
self.hanhwa_g = []
self.hanhwa_b = []

def select_max_rgb(self, r, g, b):
c_list = [r, g, b]
c_index = c_list.index(max(c_list))

if c_index == 0:
select_color = 'red'
elif c_index == 1:
select_color = 'green'
else:
select_color = 'blue'

return select_color

def cal_curve(self, hanhwa: pd.DataFrame):
hanhwa = hanhwa.sort_values(by=['distance'])
self.hanhwa_dist = hanhwa[['distance']].squeeze().to_numpy()
self.hanhwa_x = np.linspace(self.hanhwa_dist[0], self.hanhwa_dist[-1], 100, endpoint=True)
self.hanhwa_x.sort()
self.hanhwa_r = hanhwa[['r']].squeeze().to_numpy()
self.hanhwa_g = hanhwa[['g']].squeeze().to_numpy()
self.hanhwa_b = hanhwa[['b']].squeeze().to_numpy()

r1_init = self.hanhwa_r[0] * 0.7
g1_init = self.hanhwa_g[0] * 0.7

b1_init = self.hanhwa_b[0] * 0.7
r2_init = self.hanhwa_r[-1] * 1.3
g2_init = self.hanhwa_g[-1] * 1.3
b2_init = self.hanhwa_b[-1] * 1.3

select_color = self.select_max_rgb(r2_init, g2_init, b2_init)

r_ext_init = [r1_init, r2_init, 1]
g_ext_init = [g1_init, g2_init, 1]
b_ext_init = [b1_init, b2_init, 1]

try:
hanhwa_opt_r, hanhwa_cov_r = curve_fit(self.func, self.hanhwa_dist, self.hanhwa_r, p0=r_ext_init, maxfev=5000)
hanhwa_opt_g, hanhwa_cov_g = curve_fit(self.func, self.hanhwa_dist, self.hanhwa_g, p0=g_ext_init, maxfev=5000)
hanhwa_opt_b, hanhwa_cov_b = curve_fit(self.func, self.hanhwa_dist, self.hanhwa_b, p0=b_ext_init, maxfev=5000)
JS08Settings.set('maxfev_flag', False)

except RuntimeError as e:
# print(f'[{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}] - {e}')
# JS08Settings.set('maxfev_flag', True)
# JS08Settings.set('maxfev_count', JS08Settings.get('maxfev_count') + 1)
log(JS08Settings.get('current_id'), 'maxfev Error')
return

list1 = []
list2 = []
list3 = []

list1.append(hanhwa_opt_r[0])
list1.append(hanhwa_opt_g[0])
list1.append(hanhwa_opt_b[0])

list2.append(hanhwa_opt_r[1])
list2.append(hanhwa_opt_g[1])
list2.append(hanhwa_opt_b[1])

list3.append(hanhwa_opt_r[2])
list3.append(hanhwa_opt_g[2])
list3.append(hanhwa_opt_b[2])

return list1, list2, list3, select_color

def func(self, x, c1, c2, a):
return c2 + (c1 - c2) * np.exp(-a * x)
Loading