# -- 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