# -*- coding: UTF-8 -*-from VideoCapture import Deviceimport ImageDraw, sys, pygame, timefrom pygame.locals import *import socketimport timefrom PIL import ImageEnhancefrom threading import Threadimport tracebackimport threading# 全局变量is_sending = Falsecli_address = ('', 0)# 主机地址和端口host = 'localhost'port = 10218# 初始化UDP socketser_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)ser_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)ser_socket.bind((host, port))# 接收线程类,用于接收客户端发送的消息class UdpReceiver(threading.Thread):def __init__(self):threading.Thread.__init__(self)self.thread_stop = Falsedef run(self):while not self.thread_stop:# 声明全局变量,接收消息后更改global cli_addressglobal is_sendingtry:message, address = ser_socket.recvfrom(2048)except:traceback.print_exc()continueprint message,cli_addresscli_address = addressif message == 'startCam':print 'start camera',is_sending = Trueser_socket.sendto('startRcv', cli_address)if message == 'quitCam':is_sending = Falseprint 'quit camera',def stop(self):self.thread_stop = True# 创建接收线程def disp(phrase,loc):s = font.render(phrase, True, (200,200,200))sh = font.render(phrase, True, (50,50,50))screen.blit(sh, (loc[0]+1,loc[1]+1))screen.blit(s, loc)if __name__=='__main__':res = (640,480)cam = Device()cam.setResolution(res[0],res[1])brightness = 1.0contrast = 1.0shots = 0receiveThread = UdpReceiver()receiveThread.setDaemon(True) # 该选项设置后使得主线程退出后子线程同时退出receiveThread.start()while 1:if is_sending:camshot = ImageEnhance.Brightness(cam.getImage()).enhance(brightness)camshot = ImageEnhance.Contrast(camshot).enhance(contrast)clock = pygame.time.Clock()img = cam.getImage().resize((160,120))data = img.tostring()ser_socket.sendto(data, cli_address)time.sleep(0.05)else:time.sleep(1)receiveThread.stop()ser_socket.close()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。