mirror of
http://git.xinwangdao.com/cnnc-embedded-parts-detect/detect-gui.git
synced 2025-06-24 13:14:11 +08:00
114 lines
4.3 KiB
Python
114 lines
4.3 KiB
Python
# -- coding: utf-8 --
|
|
import os
|
|
import threading
|
|
from ctypes import *
|
|
import numpy as np
|
|
from PyQt5.QtCore import QObject, pyqtSignal
|
|
from dynaconf.base import Settings
|
|
from numpy.ctypeslib import as_array
|
|
import platform
|
|
import time
|
|
import cv2
|
|
|
|
TO_CLIENT_NOTIFY_BASE = 1000
|
|
|
|
def process(msg):
|
|
record = msg.record
|
|
if record.code == (6 + TO_CLIENT_NOTIFY_BASE):
|
|
return doLocationProcessing(msg)
|
|
elif record.code == (2 + TO_CLIENT_NOTIFY_BASE) or record.code == (12 + TO_CLIENT_NOTIFY_BASE):
|
|
return doDetectionProcessing(msg)
|
|
else : pass
|
|
return msg
|
|
|
|
# 处理图像
|
|
def doLocationProcessing(msg):
|
|
if msg is None:
|
|
return msg
|
|
|
|
im = msg.im2D
|
|
record = msg.record
|
|
print("-------------------- record.roi_size" + str(record.roi_size))
|
|
ptsRoiPoints = None
|
|
ptsInnerConners = None
|
|
ptsInnerConners3D = None
|
|
for i in range(record.roi_size):
|
|
roi = record.subRois[i]
|
|
roiPoints = roi.mRoiPoints
|
|
innerConners = roi.mInnerConners
|
|
innerConners3D = roi.mInnerConners3D
|
|
ptsRoiPoints = np.array([
|
|
[roiPoints[0],roiPoints[1]],
|
|
[roiPoints[2],roiPoints[3]],
|
|
[roiPoints[4],roiPoints[5]],
|
|
[roiPoints[6],roiPoints[7]]], dtype=np.int32)
|
|
|
|
ptsInnerConners = np.array([
|
|
[innerConners[0],innerConners[1]],
|
|
[innerConners[2],innerConners[3]],
|
|
[innerConners[4],innerConners[5]],
|
|
[innerConners[6],innerConners[7]]], dtype=np.int32)
|
|
|
|
ptsInnerConners3D = np.array([
|
|
[innerConners3D[0],innerConners3D[1],innerConners3D[2]],
|
|
[innerConners3D[3],innerConners3D[4],innerConners3D[5]],
|
|
[innerConners3D[6],innerConners3D[7],innerConners3D[8]],
|
|
[innerConners3D[9],innerConners3D[10],innerConners3D[11]]])
|
|
|
|
cv2.polylines(im, [ptsRoiPoints], True, (0,255,0) , 2)
|
|
cv2.polylines(im, [ptsInnerConners], True, (0,255,0) , 2)
|
|
# for i in range(4):
|
|
# ptsRoiPoints[i][0] = int(ptsRoiPoints[i][0] / 16)
|
|
# ptsRoiPoints[i][1] = int(ptsRoiPoints[i][1] / 16)
|
|
# ptsInnerConners[i][0]= int(ptsInnerConners[i][0] / 16)
|
|
# ptsInnerConners[i][1] = int(ptsInnerConners[i][1] / 16)
|
|
|
|
# cv2.polylines(im, [ptsRoiPoints], True, (0,255,0) , 2)
|
|
# cv2.polylines(im, [ptsInnerConners], True, (0,255,0) , 2)
|
|
# cv2.imshow("HQImage", msg.im2D)
|
|
# cv2.waitKey(1)
|
|
return msg
|
|
|
|
def doDetectionProcessing(msg):
|
|
if msg is None:
|
|
return msg
|
|
if msg.im2D is not None:
|
|
im = cv2.resize(msg.im2D, (int(msg.im2D.shape[1]/16), int(msg.im2D.shape[0]/16)))
|
|
record = msg.record
|
|
ptsRoiPoints = None
|
|
ptsInnerConners = None
|
|
ptsInnerConners3D = None
|
|
for i in range(record.roi_size):
|
|
roi = record.subRois[i]
|
|
roiPoints = roi.mRoiPoints
|
|
innerConners = roi.mInnerConners
|
|
innerConners3D = roi.mInnerConners3D
|
|
ptsRoiPoints = np.array([
|
|
[roiPoints[0],roiPoints[1]],
|
|
[roiPoints[2],roiPoints[3]],
|
|
[roiPoints[4],roiPoints[5]],
|
|
[roiPoints[6],roiPoints[7]]], dtype=np.int32)
|
|
|
|
ptsInnerConners = np.array([
|
|
[innerConners[0],innerConners[1]],
|
|
[innerConners[2],innerConners[3]],
|
|
[innerConners[4],innerConners[5]],
|
|
[innerConners[6],innerConners[7]]], dtype=np.int32)
|
|
|
|
ptsInnerConners3D = np.array([
|
|
[innerConners3D[0],innerConners3D[1],innerConners3D[2]],
|
|
[innerConners3D[3],innerConners3D[4],innerConners3D[5]],
|
|
[innerConners3D[6],innerConners3D[7],innerConners3D[8]],
|
|
[innerConners3D[9],innerConners3D[10],innerConners3D[11]]])
|
|
|
|
for i in range(4):
|
|
ptsRoiPoints[i][0] = int(ptsRoiPoints[i][0] / 16)
|
|
ptsRoiPoints[i][1] = int(ptsRoiPoints[i][1] / 16)
|
|
ptsInnerConners[i][0]= int(ptsInnerConners[i][0] / 16)
|
|
ptsInnerConners[i][1] = int(ptsInnerConners[i][1] / 16)
|
|
|
|
cv2.polylines(im, [ptsRoiPoints], True, (0,255,0) , 2)
|
|
cv2.polylines(im, [ptsInnerConners], True, (0,255,0) , 2)
|
|
# cv2.imshow("HQImage", im)
|
|
# cv2.waitKey(1)
|
|
return msg |