mirror of
http://git.xinwangdao.com/cnnc-embedded-parts-detect/detect-gui.git
synced 2025-06-24 13:14:11 +08:00
fixed
This commit is contained in:
parent
12fb34fb77
commit
995b8f5390
@ -32,8 +32,10 @@ class _SubRoiData_(Structure):
|
||||
('H', c_float * 9),
|
||||
]
|
||||
|
||||
|
||||
SubRoiData = _SubRoiData_
|
||||
|
||||
|
||||
class _CallbackInfo_(Structure):
|
||||
_fields_ = [
|
||||
('code', c_int),
|
||||
@ -47,6 +49,7 @@ class _CallbackInfo_(Structure):
|
||||
('subRois', SubRoiData * 16),
|
||||
]
|
||||
|
||||
|
||||
CallbackInfo = _CallbackInfo_
|
||||
# 回调函数类型定义
|
||||
CallbackType = CFUNCTYPE(None, POINTER(CallbackInfo))
|
||||
@ -56,6 +59,7 @@ MSG_ONLY_RECORD = -1
|
||||
MSG_LOCATION_RECORD = 0
|
||||
MSG_DETECTION_RECORD = 1
|
||||
|
||||
|
||||
class Msg:
|
||||
def __init__(self, msg_type, record, im2D):
|
||||
self.msg_type = msg_type # 0:刷新广角图片, 1:刷新高清, -1:不刷新图片,纯消息
|
||||
@ -139,6 +143,7 @@ RUNNING_MODE_LOCATION = 0 # 广角相机运行模式
|
||||
RUNNING_MODE_DETECTION = 1 # 高清检测运行模式
|
||||
g_running_mode = RUNNING_MODE_NONE # 默认是广角相机运行模式
|
||||
|
||||
|
||||
####################################################################################
|
||||
# 内部接口定义
|
||||
####################################################################################
|
||||
@ -151,9 +156,12 @@ def _get_msg_info(code) -> str:
|
||||
return value.encode("utf-8")
|
||||
return "未知错误".encode("utf-8")
|
||||
|
||||
get_msg_info = _get_msg_info
|
||||
|
||||
# 加工检测图像
|
||||
def _update_location_image(frame):
|
||||
global needHandle, recordCache, ckinfoCache
|
||||
|
||||
def switch(choice):
|
||||
if ckinfoCache.code == 1006: # TO_CLIENT_NOTIFY_DETECTION_END: 1006
|
||||
for i in range(recordCache.roi_size):
|
||||
@ -164,6 +172,7 @@ def _update_location_image(frame):
|
||||
else:
|
||||
print("default Case")
|
||||
|
||||
|
||||
# 在回调函数中将 record 数据拷贝出来
|
||||
def _copy_record(record):
|
||||
new_record = CallbackInfo()
|
||||
@ -217,7 +226,8 @@ class ImageFramework(EdgeComponent):
|
||||
# 加载C++库
|
||||
current_file_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
(arch, suffix) = get_system_and_library_suffix()
|
||||
self.image_framework_sdk = CDLL(os.path.join(current_file_dir, f'../vendors/image-framework/{arch}/image_framework.{suffix}'))
|
||||
self.image_framework_sdk = CDLL(
|
||||
os.path.join(current_file_dir, f'../vendors/image-framework/{arch}/image_framework.{suffix}'))
|
||||
# 设置回调函数
|
||||
self.init_callback()
|
||||
except Exception as e:
|
||||
@ -257,6 +267,7 @@ class ImageFramework(EdgeComponent):
|
||||
ret = self.image_framework_sdk.LibapiGetHQImage(
|
||||
buffer_pointer, frame.shape[1], frame.shape[0], 3, c_char_p(b"PythonProcessing"))
|
||||
if ret != SYS_OK:
|
||||
print("ret != SYS_OK:" + str(ret))
|
||||
record = CallbackInfo(code=ret, errorInfo=_get_msg_info(ret), bGetData=False)
|
||||
msg = Msg(MSG_DETECTION_RECORD, record, None)
|
||||
g_msg_cache.append(msg)
|
||||
@ -322,6 +333,7 @@ class ImageFramework(EdgeComponent):
|
||||
record.code = -10001
|
||||
record.errorInfo = _get_msg_info(-10001)
|
||||
return record
|
||||
|
||||
ret = self.image_framework_sdk.LibapiStartDetection()
|
||||
if ret != SYS_OK:
|
||||
record = CallbackInfo()
|
||||
@ -353,12 +365,12 @@ class ImageFramework(EdgeComponent):
|
||||
record.code = -10002
|
||||
record.errorInfo = _get_msg_info(-10002)
|
||||
return record
|
||||
ret = self.image_framework_sdk.LibapiStopDetection()
|
||||
ret = self.image_framework_sdk.LibapStopDetection()
|
||||
if ret != SYS_OK:
|
||||
record.code = ret
|
||||
record.errorInfo = _get_msg_info(ret)
|
||||
return record
|
||||
g_running_mode = RUNNING_MODE_NONE # 切换为无模式
|
||||
g_running_mode = RUNNING_MODE_LOCATION # 切换为无模式
|
||||
return record
|
||||
|
||||
# 广角相机运行定位处理线程
|
||||
@ -371,7 +383,13 @@ class ImageFramework(EdgeComponent):
|
||||
# 如果当前不是定位模式,不处理任何事务
|
||||
if g_running_mode != RUNNING_MODE_LOCATION:
|
||||
time.sleep(0.5)
|
||||
g_frame_cache = []
|
||||
continue
|
||||
|
||||
# 上一帧还未处理完毕
|
||||
if len(g_frame_cache) > 0:
|
||||
continue
|
||||
|
||||
# 获取一帧图像
|
||||
_, frame = capture.read()
|
||||
# 如果图像为空,等待一秒,上报消息
|
||||
@ -380,6 +398,8 @@ class ImageFramework(EdgeComponent):
|
||||
self.logger.error("[ERROR] 广角相机未捕获到图像")
|
||||
continue
|
||||
|
||||
print("location run")
|
||||
|
||||
if self.times % 3 == 0:
|
||||
src_frame_ptr = c_char_p(frame.data.tobytes())
|
||||
ret = self.image_framework_sdk.LibapiCameraSendMsgWithImage(
|
||||
|
@ -285,3 +285,10 @@ QMessageBox QPushButton:pressed {
|
||||
QMessageBox QDialogButtonBox#qt_msgbox_buttonbox { /* buttonBox */
|
||||
button-layout: 0; /* 设置QPushButton布局好像没啥作用 */
|
||||
}
|
||||
|
||||
QPlainTextEdit#logText {
|
||||
border: none;
|
||||
background-color: #222222;
|
||||
font-size: 14px;
|
||||
color: #bbbbbb;
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
import cv2
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtGui import QPixmap, QImage
|
||||
from PyQt5.QtGui import QPixmap, QImage, QTextCursor
|
||||
from PyQt5.QtWidgets import QDialog, QWidget, QVBoxLayout, QHBoxLayout, QGridLayout, QScrollArea, QPushButton, \
|
||||
QSpacerItem, QSizePolicy, QLabel, QMessageBox
|
||||
QSpacerItem, QSizePolicy, QLabel, QMessageBox, QPlainTextEdit
|
||||
|
||||
from components.image_framework import MSG_LOCATION_RECORD, MSG_DETECTION_RECORD
|
||||
from components.image_framework import MSG_LOCATION_RECORD, MSG_DETECTION_RECORD, get_msg_info
|
||||
from core.context import AppContext
|
||||
from widget.embed_item import EmbedItem
|
||||
|
||||
@ -29,6 +29,7 @@ class TaskRunDialog(QDialog):
|
||||
self.view_widget = None
|
||||
self.view_label = None
|
||||
self.picture_label = None
|
||||
self.log_text = None
|
||||
|
||||
self.start_adjust_button = None
|
||||
self.start_check_button = None
|
||||
@ -62,6 +63,9 @@ class TaskRunDialog(QDialog):
|
||||
except Exception as e:
|
||||
dd = 0
|
||||
elif msg.msg_type == MSG_DETECTION_RECORD:
|
||||
# 显示日志
|
||||
self.log_text.appendPlainText(get_msg_info(msg.record.code).decode('utf-8'))
|
||||
|
||||
if msg.record.code < 0:
|
||||
QMessageBox.warning(self, '错误信息', msg.record.errorInfo.decode('utf-8'))
|
||||
self.set_button_default()
|
||||
@ -173,37 +177,30 @@ class TaskRunDialog(QDialog):
|
||||
|
||||
self.picture_label = QLabel()
|
||||
self.picture_label.setObjectName("pictureWidget")
|
||||
self.picture_label.setFixedWidth(450)
|
||||
self.picture_label.setFixedWidth(930 * 450 / 700)
|
||||
self.picture_label.setFixedHeight(450)
|
||||
self.picture_label.setScaledContents(True)
|
||||
# picture_pixmap = QPixmap("assets/img2.png")
|
||||
# self.picture_label.setPixmap(picture_pixmap)
|
||||
self.picture_label.setStyleSheet("background: #222222;")
|
||||
|
||||
self.view_widget = QWidget()
|
||||
self.view_widget.setObjectName("viewWidget")
|
||||
self.view_widget.setFixedWidth(1920 * 450 / 1080)
|
||||
self.view_widget.setFixedHeight(450)
|
||||
|
||||
self.view_label = QLabel(self.view_widget)
|
||||
self.view_label.setObjectName("viewLabel")
|
||||
self.view_label.setFixedHeight(450)
|
||||
self.view_label.setScaledContents(True)
|
||||
# view_pixmap = QPixmap("assets/img1.jpg")
|
||||
# sc = view_pixmap.height() / 450
|
||||
# self.view_label.setFixedWidth(view_pixmap.width() / sc)
|
||||
# self.view_label.setPixmap(view_pixmap)
|
||||
# self.view_label.setGeometry((view_widget.width() - self.view_label.width() / 2), 0, self.view_label.width(), self.view_label.height())
|
||||
self.view_label.setStyleSheet("background: #222222;")
|
||||
|
||||
view_check_widget = QWidget(self.view_widget)
|
||||
view_check_widget.setObjectName("viewCheckWidget")
|
||||
view_check_widget.setGeometry(self.view_label.geometry().x() + 145, 170, 240, 240)
|
||||
|
||||
# view_widget = QWidget()
|
||||
# view_widget.setObjectName("viewWidget")
|
||||
# view_widget.setFixedWidth(1000)
|
||||
# view_widget.setFixedHeight(450)
|
||||
# picture_widget = QWidget()
|
||||
# picture_widget.setObjectName("pictureWidget")
|
||||
# picture_widget.setFixedHeight(450)
|
||||
self.log_text = QPlainTextEdit()
|
||||
self.log_text.setObjectName("logText")
|
||||
self.log_text.setFixedHeight(450)
|
||||
self.log_text.setReadOnly(True)
|
||||
|
||||
tool_widget = QWidget()
|
||||
tool_widget.setObjectName("toolWidget")
|
||||
@ -258,6 +255,8 @@ class TaskRunDialog(QDialog):
|
||||
content_layout.setSpacing(0)
|
||||
content_layout.addWidget(self.view_widget)
|
||||
content_layout.addSpacing(20)
|
||||
content_layout.addWidget(self.log_text)
|
||||
content_layout.addSpacing(20)
|
||||
content_layout.addWidget(self.picture_label)
|
||||
content_layout.addSpacing(20)
|
||||
content_layout.addWidget(tool_widget)
|
||||
@ -293,6 +292,9 @@ class TaskRunDialog(QDialog):
|
||||
self.stop_check_button.setEnabled(False)
|
||||
self.stop_task_button.setEnabled(False)
|
||||
|
||||
self.log_text.setPlainText("")
|
||||
self.picture_label.setPixmap(QPixmap(""))
|
||||
|
||||
result = AppContext.get_edge_context().get_component('image-framework').start_adjust()
|
||||
if result.code < 0:
|
||||
self.set_button_default()
|
||||
@ -316,8 +318,8 @@ class TaskRunDialog(QDialog):
|
||||
self.stop_task_button.setEnabled(False)
|
||||
result = AppContext.get_edge_context().get_component('image-framework').stop_check()
|
||||
if result.code < 0:
|
||||
self.set_button_default()
|
||||
QMessageBox.warning(self, '检测停止失败', result.errorInfo)
|
||||
self.set_button_default()
|
||||
|
||||
def stop_task(self):
|
||||
AppContext.get_edge_context().get_component('image-framework').stop_all()
|
||||
|
Loading…
Reference in New Issue
Block a user