|
@@ -140,7 +140,6 @@ except:pass
|
|
|
#import json
|
|
|
#import pickle
|
|
|
|
|
|
-
|
|
|
class Vopen():
|
|
|
|
|
|
def __init__(self,dmx=None,_id=None):
|
|
@@ -159,6 +158,7 @@ class Vopen():
|
|
|
self.restart_t = time.time()
|
|
|
self.fps = 0
|
|
|
self.scale = 50 #%
|
|
|
+ self.angle = 0 #%
|
|
|
self.dmx=dmx
|
|
|
self.dim = 0
|
|
|
self.x = 0
|
|
@@ -299,6 +299,7 @@ class Vopen():
|
|
|
|
|
|
img = self.cv2.cvtColor(img, self.cv2.COLOR_BGR2RGB)
|
|
|
img = self.rescale_frame2(img, 200)
|
|
|
+
|
|
|
#ret, img = self.cv2.threshold(img, 100, 130, self.cv2.THRESH_BINARY) # treshold
|
|
|
#self.img = self.cv2.Canny(self.img, 100, 200) # kanten
|
|
|
|
|
@@ -330,6 +331,37 @@ class Vopen():
|
|
|
self.pos = len(self.buffer)-1
|
|
|
self.im = self.buffer[int(self.pos)]
|
|
|
|
|
|
+ def rotateImage(self,image, angle):
|
|
|
+ try:
|
|
|
+ print("EE",image.shape)
|
|
|
+ shape = list(image.shape[1::-1])
|
|
|
+ center = ((shape[0])/2,(shape[1])/2)
|
|
|
+ #center = [(shape[0])/2,(shape[1])/2+35]
|
|
|
+
|
|
|
+ rot_mat = self.cv2.getRotationMatrix2D(center,angle,1.0)
|
|
|
+
|
|
|
+ if angle in [0,90,180,360]:
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ if shape[0] > shape[1]:
|
|
|
+ shape = (shape[0],shape[0])
|
|
|
+ else:
|
|
|
+ shape = (shape[1],shape[1])
|
|
|
+
|
|
|
+ frame = self.cv2.warpAffine(image, rot_mat, shape) #,flags=self.cv2.INTER_LINEAR)
|
|
|
+ return frame
|
|
|
+ except Exception as e:
|
|
|
+ raise(e)
|
|
|
+ def moveImage(self,img,x=0,y=0):
|
|
|
+ # Creating a translation matrix
|
|
|
+ np = numpy
|
|
|
+ translation_matrix = np.float32([ [1,0,x], [0,1,y] ])
|
|
|
+
|
|
|
+ num_cols,num_rows = img.shape[1::-1]
|
|
|
+ # Image translation
|
|
|
+ frame = self.cv2.warpAffine(img, translation_matrix, (num_cols,num_rows))
|
|
|
+ return frame
|
|
|
+
|
|
|
def rescale_frame2(self,frame, width):
|
|
|
height = int(frame.shape[0]/frame.shape[1] * width )
|
|
|
dim = (width, height)
|
|
@@ -379,6 +411,9 @@ class Vopen():
|
|
|
|
|
|
#self.img = self.cv2.cvtColor(self.img, self.cv2.COLOR_BGR2RGB)
|
|
|
self.img = self.rescale_frame(self.img, percent=self.scale)
|
|
|
+
|
|
|
+ # rotate frame BUG: x,y offset ??? !!!
|
|
|
+ self.img = self.rotateImage(self.img, self.angle)
|
|
|
|
|
|
self.shape = self.img.shape[1::-1]
|
|
|
|
|
@@ -1673,6 +1708,7 @@ def draw_video(VIDEO):
|
|
|
cg=255
|
|
|
cb=255
|
|
|
csize=10
|
|
|
+ cang=0
|
|
|
cdim=0
|
|
|
|
|
|
|
|
@@ -1702,6 +1738,10 @@ def draw_video(VIDEO):
|
|
|
#if i == 0:
|
|
|
# print(i,cdim)
|
|
|
|
|
|
+ k = "ANG"
|
|
|
+ if k in count:
|
|
|
+ cang = int(count[k])
|
|
|
+
|
|
|
k = "SIZE"
|
|
|
if k in count:
|
|
|
csize = int(count[k]/16*p)
|
|
@@ -1739,6 +1779,7 @@ def draw_video(VIDEO):
|
|
|
video1.x=40+0+cpan
|
|
|
video1.y=60+0+pm_wy+ctilt
|
|
|
video1.scale = int((csize))
|
|
|
+ video1.angle = int(360-(cang))
|
|
|
|
|
|
if cdim:
|
|
|
video1.next()
|
|
@@ -1834,9 +1875,10 @@ def video_dmx(VIDEO,dataA):
|
|
|
count["SIZE"] = dataA[cDMX+4]#*2
|
|
|
count["SEC"] = dataA[cDMX+5]
|
|
|
|
|
|
- count["VIDEO"] = dataA[cDMX+6]
|
|
|
#count["RED"] = dataA[cDMX+6]
|
|
|
+ count["VIDEO"] = dataA[cDMX+6]
|
|
|
#count["GREEN"] = dataA[cDMX+7]
|
|
|
+ count["ANG"] = (int(dataA[cDMX+7])/255*360)
|
|
|
#count["BLUE"] = dataA[cDMX+8]
|
|
|
except Exception as e:
|
|
|
print("VIDEOPLAYER EXCEPT FUNC",e,count)
|