image-manip.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import cv2
  2. import depthai as dai
  3. # Create pipeline
  4. pipeline = dai.Pipeline()
  5. # Rotate color frames
  6. camRgb = pipeline.create(dai.node.ColorCamera)
  7. camRgb.setPreviewSize(640, 400)
  8. camRgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)
  9. camRgb.setInterleaved(False)
  10. manipRgb = pipeline.create(dai.node.ImageManip)
  11. rgbRr = dai.RotatedRect()
  12. rgbRr.center.x, rgbRr.center.y = camRgb.getPreviewWidth() // 2, camRgb.getPreviewHeight() // 2
  13. rgbRr.size.width, rgbRr.size.height = camRgb.getPreviewHeight(), camRgb.getPreviewWidth()
  14. rgbRr.angle = 90
  15. manipRgb.initialConfig.setCropRotatedRect(rgbRr, False)
  16. camRgb.preview.link(manipRgb.inputImage)
  17. manipRgbOut = pipeline.create(dai.node.XLinkOut)
  18. manipRgbOut.setStreamName("manip_rgb")
  19. manipRgb.out.link(manipRgbOut.input)
  20. # Rotate mono frames
  21. monoLeft = pipeline.create(dai.node.MonoCamera)
  22. monoLeft.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P)
  23. monoLeft.setBoardSocket(dai.CameraBoardSocket.LEFT)
  24. manipLeft = pipeline.create(dai.node.ImageManip)
  25. rr = dai.RotatedRect()
  26. rr.center.x, rr.center.y = monoLeft.getResolutionWidth() // 2, monoLeft.getResolutionHeight() // 2
  27. rr.size.width, rr.size.height = monoLeft.getResolutionHeight(), monoLeft.getResolutionWidth()
  28. rr.angle = 90
  29. manipLeft.initialConfig.setCropRotatedRect(rr, False)
  30. monoLeft.out.link(manipLeft.inputImage)
  31. manipLeftOut = pipeline.create(dai.node.XLinkOut)
  32. manipLeftOut.setStreamName("manip_left")
  33. manipLeft.out.link(manipLeftOut.input)
  34. with dai.Device(pipeline) as device:
  35. qLeft = device.getOutputQueue(name="manip_left", maxSize=8, blocking=False)
  36. qRgb = device.getOutputQueue(name="manip_rgb", maxSize=8, blocking=False)
  37. while True:
  38. inLeft = qLeft.tryGet()
  39. if inLeft is not None:
  40. cv2.imshow('Left rotated', inLeft.getCvFrame())
  41. inRgb = qRgb.tryGet()
  42. if inRgb is not None:
  43. cv2.imshow('Color rotated', inRgb.getCvFrame())
  44. if cv2.waitKey(1) == 27:
  45. break