def captureImage():
    global handle,Width,Height,cfg,color_mode
    global COLOR_BayerGB2BGR,COLOR_BayerRG2BGR,COLOR_BayerGR2BGR,COLOR_BayerBG2BGR

    rtn_val = ArducamSDK.Py_ArduCam_captureImage(handle)
    if rtn_val > 255:
        print "Error capture image, rtn_val = ",rtn_val
        if rtn_val == ArducamSDK.USB_CAMERA_USB_TASK_ERROR:
            exit()
    if ArducamSDK.Py_ArduCam_availableImage(handle) > 0:		
        rtn_val,data,rtn_cfg = ArducamSDK.Py_ArduCam_readImage(handle)
        datasize = rtn_cfg['u32Size']
        if rtn_val != 0 or datasize == 0:
            print "read data fail!"
            ArducamSDK.Py_ArduCam_del(handle)
            return

        image = convert_image(data,rtn_cfg,color_mode)
        if h_flip:
            image = cv2.flip(image, 1)
        if v_flip:
            image = cv2.flip(image, 0)

        try:    
            img_msg = bridge.cv2_to_imgmsg(image, "bgr8")
            img_msg.header.stamp = rospy.Time.now()
            img_msg.header.frame_id = id_frame
            pub.publish(img_msg)
            cv2.waitKey(10)
        except CvBridgeError as e:
            pass
        ArducamSDK.Py_ArduCam_del(handle)
    else:
        time.sleep(0.001)
Beispiel #2
0
    def captureImage_thread(self):
        rtn_val = ArducamSDK.Py_ArduCam_beginCaptureImage(self.handle)
        if rtn_val != 0:
            print("Error beginning capture, rtn_val = ", rtn_val)
            self.running = False
            return
        else:
            print("Capture began, rtn_val = ", rtn_val)
        while self.running:
            if self.loading:
                rtn_val = ArducamSDK.Py_ArduCam_captureImage(self.handle)
                if rtn_val > 255:
                    #                    print("Error capture image, rtn_val = ",rtn_val)
                    if rtn_val == ArducamSDK.USB_CAMERA_USB_TASK_ERROR:
                        break
            else:
                print("restarting camera...")
                #                time.sleep(1)
                ArducamSDK.Py_ArduCam_endCaptureImage(self.handle)
                self.camera_initFromFile(self.fileName, self.expconf)
                ArducamSDK.Py_ArduCam_beginCaptureImage(self.handle)
                self.loading = True

        self.running = False
        ArducamSDK.Py_ArduCam_endCaptureImage(self.handle)
Beispiel #3
0
def captureImage_thread():
    global handle, running, ct_lock, count1

    rtn_val = ArducamSDK.Py_ArduCam_beginCaptureImage(handle)
    if rtn_val != 0:
        print "Error beginning capture, rtn_val = ", rtn_val
        running = False
        return
    else:
        print "Capture began, rtn_val = ", rtn_val

    while (running and (not rospy.is_shutdown())):
        #print "capture"
        if count1 == 0:
            if ct_lock.acquire(False):
                print "capture image", count1
                rtn_val = ArducamSDK.Py_ArduCam_captureImage(handle)
                count1 = count1 + 1
                if rtn_val != 0:
                    print "Error capture image, rtn_val = ", rtn_val
                    break
                else:
                    time.sleep(0.005)

                ct_lock.release()

            else:
                time.sleep(0.005)
        else:
            time.sleep(0.005)

    running = False
    ArducamSDK.Py_ArduCam_endCaptureImage(handle)
    def capture_thread(self):
        global handle, running

        rtn_val = ArducamSDK.Py_ArduCam_beginCaptureImage(handle)
        if rtn_val != 0:
            print("Error beginning capture, rtn_val = ", rtn_val)
        else:
            logging.info("Capture began, rtn_val = ", rtn_val)

        while running:
            rtn_val = ArducamSDK.Py_ArduCam_captureImage(handle)
            if rtn_val > 255:
                #print("Error capture image, rtn_val = ", rtn_val)
                if rtn_val == ArducamSDK.USB_CAMERA_USB_TASK_ERROR:
                    print("ardu cam USB_CAMERA_USB_TASK_ERROR!!")
            time.sleep(0.01)
Beispiel #5
0
 def read_next_frame(self):
     code = ArducamSDK.Py_ArduCam_captureImage(self.handle)
     if code > 255:
         raise ArducamException("Error capturing image", code=code)
     if ArducamSDK.Py_ArduCam_availableImage(self.handle):
         try:
             rtn_val, data, rtn_cfg = ArducamSDK.Py_ArduCam_readImage(
                 self.handle)
             if rtn_val != 0 or rtn_cfg['u32Size'] == 0:
                 raise ArducamException(
                     "Bad image read! Datasize was {}".format(
                         rtn_cfg['u32Size']),
                     code=rtn_val)
             return convert_image(data, rtn_cfg, self.color_mode)
         finally:
             ArducamSDK.Py_ArduCam_del(self.handle)
Beispiel #6
0
def captureImage_thread():
    global handle,running

    rtn_val = ArducamSDK.Py_ArduCam_beginCaptureImage(handle)
    if rtn_val != 0:
        print "Error beginning capture, rtn_val = ",rtn_val
        running = False
        return
    else:
        print "Capture began, rtn_val = ",rtn_val
    
    while running:
        #print "capture"
        rtn_val = ArducamSDK.Py_ArduCam_captureImage(handle)
        if rtn_val != 0:
            print "Error capture image, rtn_val = ",rtn_val
            break
        time.sleep(0.005)
        
    running = False
    ArducamSDK.Py_ArduCam_endCaptureImage(handle)
Beispiel #7
0
def captureImage_thread():
    global handle, running

    rtn_val = ArducamSDK.Py_ArduCam_beginCaptureImage(handle)
    if rtn_val != 0:
        print("Error beginning capture, rtn_val = ", rtn_val)
        running = False
        return
    else:
        print("Capture began, rtn_val = ", rtn_val)

    while running:
        #print "capture"
        rtn_val = ArducamSDK.Py_ArduCam_captureImage(handle)
        if rtn_val > 255:
            print("Error capture image, rtn_val = ", rtn_val)
            if rtn_val == ArducamSDK.USB_CAMERA_USB_TASK_ERROR:
                break
        time.sleep(0.005)

    running = False
    ArducamSDK.Py_ArduCam_endCaptureImage(handle)
Beispiel #8
0
def captureImage_thread():
    global handle, running

    rtn_val = ArducamSDK.Py_ArduCam_beginCaptureImage(handle)
    if rtn_val != 0:
        print("Failed to begin capture, return value: %s." % (rtn_val))
        running = False
        return
    else:
        print("Capture began: %s." % (rtn_val))

    while running:
        # print "capture"
        rtn_val = ArducamSDK.Py_ArduCam_captureImage(handle)
        if rtn_val > 255:
            print("Error while capturing image: %s." % (rtn_val))
            if rtn_val == ArducamSDK.USB_CAMERA_USB_TASK_ERROR:
                break
        time.sleep(0.005)

    running = False
    ArducamSDK.Py_ArduCam_endCaptureImage(handle)
Beispiel #9
0
def captureImage_thread():
    global handle, running

    rtn_val = ArducamSDK.Py_ArduCam_beginCaptureImage(handle)
    if rtn_val != 0:
        print "Error beginning capture, rtn_val = ", rtn_val
        running = False
        return
    else:
        print "Capture began, rtn_val = ", rtn_val

    while (running and (not rospy.is_shutdown())):
        #print "capture"
        time0 = time.time()
        rtn_val = ArducamSDK.Py_ArduCam_captureImage(handle)
        time1 = time.time()
        print str(time1 - time0)
        if rtn_val != 0:
            print "Error capture image, rtn_val = ", rtn_val
            break
        time.sleep(0.005)

    running = False
    ArducamSDK.Py_ArduCam_endCaptureImage(handle)