Foo.
This commit is contained in:
parent
38de96de6d
commit
989a175fa5
5 changed files with 173 additions and 2 deletions
50
pxf.py
Normal file
50
pxf.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import numpy as np
|
||||
import ctypes
|
||||
import time
|
||||
|
||||
from misc import resize_image
|
||||
|
||||
class Pixelflut:
|
||||
def __init__(self, host, port, x, y, w, h, reps):
|
||||
self.host, self.port = host.encode(), port
|
||||
self.x, self.y = x, y
|
||||
self.w, self.h = w, h
|
||||
self.reps = reps
|
||||
self.dbuf = np.zeros(w*h*4, dtype=np.uint8)
|
||||
self.so = ctypes.CDLL('./pixelflut.so')
|
||||
self.sock = None
|
||||
|
||||
def reset_images(self):
|
||||
self.so.reset_images()
|
||||
|
||||
def sendframe(self, idx):
|
||||
for _ in range(self.reps):
|
||||
if self.sock is None:
|
||||
while self.sock is None or self.sock < 0:
|
||||
time.sleep(1)
|
||||
self.sock = self.so.cct(self.host, self.port)
|
||||
if self.so.sendframe(self.sock, idx, self.w, self.h, self.x, self.y):
|
||||
self.so.discct(self.sock)
|
||||
self.sock = None
|
||||
|
||||
def encode_image(self, img, idx=None):
|
||||
frame = np.array(resize_image(img, (self.w, self.h), blackbg=False)).reshape(self.w*self.h*4)
|
||||
np.copyto(self.dbuf, frame)
|
||||
cptr = self.dbuf.ctypes.data_as(ctypes.POINTER(ctypes.c_uint8))
|
||||
if idx is None:
|
||||
return self.so.store_image(cptr, self.w, self.h)
|
||||
else:
|
||||
self.so.store_image_idx(cptr, self.w, self.h, idx)
|
||||
return None
|
||||
|
||||
class Getch:
|
||||
def __call__(self):
|
||||
fd = sys.stdin.fileno()
|
||||
old_settings = termios.tcgetattr(fd)
|
||||
try:
|
||||
tty.setraw(sys.stdin.fileno())
|
||||
ch = sys.stdin.read(1)
|
||||
finally:
|
||||
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
||||
return ch
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue