|  |  |  | #!/usr/bin/env python3
 | 
					
						
							|  |  |  | import numpy as np
 | 
					
						
							|  |  |  | import cereal.messaging as messaging
 | 
					
						
							|  |  |  | from PIL import ImageFont, ImageDraw, Image
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | font = ImageFont.truetype("arial", size=72)
 | 
					
						
							|  |  |  | def get_frame(idx):
 | 
					
						
							|  |  |  |   img = np.zeros((874, 1164, 3), np.uint8)
 | 
					
						
							|  |  |  |   img[100:400, 100:100+(idx % 10) * 100] = 255
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # big number
 | 
					
						
							|  |  |  |   im2 = Image.new("RGB", (200, 200))
 | 
					
						
							|  |  |  |   draw = ImageDraw.Draw(im2)
 | 
					
						
							|  |  |  |   draw.text((10, 100), "%02d" % idx, font=font)
 | 
					
						
							|  |  |  |   img[400:600, 400:600] = np.array(im2.getdata()).reshape((200, 200, 3))
 | 
					
						
							|  |  |  |   return img.tostring()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__":
 | 
					
						
							|  |  |  |   from common.realtime import Ratekeeper
 | 
					
						
							|  |  |  |   rk = Ratekeeper(20)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   pm = messaging.PubMaster(['frame'])
 | 
					
						
							|  |  |  |   frm = [get_frame(x) for x in range(30)]
 | 
					
						
							|  |  |  |   idx = 0
 | 
					
						
							|  |  |  |   while 1:
 | 
					
						
							|  |  |  |     print("send %d" % idx)
 | 
					
						
							|  |  |  |     dat = messaging.new_message('frame')
 | 
					
						
							|  |  |  |     dat.valid = True
 | 
					
						
							|  |  |  |     dat.frame = {
 | 
					
						
							|  |  |  |       "frameId": idx,
 | 
					
						
							|  |  |  |       "image": frm[idx % len(frm)],
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  |     pm.send('frame', dat)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     idx += 1
 | 
					
						
							|  |  |  |     rk.keep_time()
 | 
					
						
							|  |  |  |     #time.sleep(1.0)
 |