zoukankan      html  css  js  c++  java
  • 定位,标记,Socket通信传输位置

    # -*- coding: utf-8 -*-
    """
    Editor : X-POWER
    
    Date : 2017-03-20
    
    Motto : talk is cheap,show me your code !
    
    This is a temporary script file.
    """
    
    
    import numpy as np
    import pyscreenshot as ImageGrab
    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg
    import cv2
    import time        
    import socket   # Network communication 
    
    
    def client(num):
        mysocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        mysocket.connect(('192.168.1.101',1234))
        mysocket.send(str(num))
        print("+++++++++++++++++++++++++++++++++++++++")
        mysocket.close()
        
    
    def draw_rectangle(img,location): 
        cv2.rectangle(img,(640 - location[0],480 - location[1]),(640 - location[2],480 - location[3]),(55,255,155),2) # Belongs to the picture , location , color , thickness 
    
    def get_location():
        a = [[],[],[],[],[],[],[],[],[],[],[],[]]
        rectangle = [(130,180,170,255),(200,185,235,255),(405,205,430,270),(475,210,505,265),(170,115, 200,155),(230,120, 255,165),(385,130, 410,170),(440,130, 470,175),(190,60, 215,100),(245,65, 267,111),(370,75, 393,118),(420,75, 443,118)]
        for num in range(12):
            for i in range(rectangle[num][0],rectangle[num][2]):
                for j in range(rectangle[num][1],rectangle[num][3]):
                    a[num].append((i,j))
        return a,rectangle        
    
    def identify_method_one(im,draw_location,rectangle):  # image , 
        student_location = []
        for i in range(12):
            sum = 0
            
            for j in draw_location[i]:
                tem = im[j[1]][j[0]].sum()/3
                tem = abs(im[j[1]][j[0]][0]-tem) + abs(im[j[1]][j[0]][1]-tem) + abs(im[j[1]][j[0]][2]-tem)
                sum += tem
            sum /= ((rectangle[i][2]-rectangle[i][0]) * (rectangle[i][3] - rectangle[i][1]))
            
            student_location.append(sum)
      
        return student_location
                
    
    draw_location,rectangle = get_location()
    
    cap = cv2.VideoCapture("http://192.168.1.101:8080/?action=stream")
    
    statue = 0
    while True:
        
        
        ret, frame = cap.read()
        im = frame[::-1,::-1,]
    
        student_location = identify_method_one(im,draw_location,rectangle)
        count = 0
        location = []
        for i in student_location:
            if i >= 20:
                location.append(count)
            count += 1
        print(student_location)
        im = im[::-1,::-1,]
        for i in location:    #x mark all of the student location
            draw_rectangle(frame,rectangle[i]) 
        im = im[::-1,::-1,]
        #-------deal-------
        num = 0
        num1 = 0
        num2 = 0
        num3 = 0
        for i in location:
            if i>=0 and i<=3:
                num1 = 1
            if i>=4 and i<=7:
                num2 = 1
            if i>=8 and i<=11:
                num3 = 1
        if num1 == 1:
            num += 1
            
        if num2 == 1:
            num += 2
            
        if num3 == 1:
            num += 4
        #-------deal-------
        #print(num,statue)
        #------Socket-------
        if statue != num:
            print("---")
            statue = num
            client(num)
        #------Socket-------
    
        cv2.imshow("capture", im)
        if cv2.waitKey(1) and 0xFF == ord('q'):
            break
    
    
    cap.release()
    cv2.destroyAllWindows() 
  • 相关阅读:
    传统神经网络ANN训练算法总结 参考 。 以后研究
    delphi 按钮 2 行
    用BP人工神经网络识别手写数字
    神经网络 fann 教程 英文 以及 翻译 参考
    【黑科技】花几分钟和孩子动手DIY,即可用手机完成全息影像!
    delphi 神经网络 学习
    "如何用70行Java代码实现深度神经网络算法" 的delphi版本
    cvAddWeighted 进行图片融合
    SetWindowsHookEx 其他进程的 记录
    DELPHI 通過窗口句柄或窗口标题得到进程句柄
  • 原文地址:https://www.cnblogs.com/A-FM/p/6592540.html
Copyright © 2011-2022 走看看