def capture_image(cam, gripper_height): camera_height = gripper_height + 70 # Camera is placed 70mm above gripper # TODO: Find a curve that correlates distance from subject and focus value if camera_height > 300: nRet = ueye.is_Focus(cam.handle(), ueye.FOC_CMD_SET_MANUAL_FOCUS, config.focus_overview, ueye.sizeof(config.focus_overview)) else: nRet = ueye.is_Focus(cam.handle(), ueye.FOC_CMD_SET_MANUAL_FOCUS, config.focus_closeup, ueye.sizeof(config.focus_closeup)) #nRet = ueye.is_Focus(cam.handle(), ueye.FOC_CMD_SET_ENABLE_AUTOFOCUS_ONCE, None, 0) # autofocus_status = ueye.INT(0) # ueye.is_Focus(cam.handle(), ueye.FOC_CMD_GET_AUTOFOCUS_STATUS, autofocus_status, ueye.sizeof(autofocus_status)) img_buffer = ImageBuffer() # Create image buffer #ueye.is_Focus(cam.handle(), ueye.FOC_CMD_SET_ENABLE_AUTOFOCUS_ONCE, None, 0) time.sleep(0.5) # cam.freeze_video(True) # Freeze video captures a single image nRet = ueye.is_WaitForNextImage(cam.handle(), 1000, img_buffer.mem_ptr, img_buffer.mem_id) img_data = ImageData(cam.handle(), img_buffer) array = img_data.as_1d_image() img_data.unlock() return array
def run(self): while self.running: img_buffer = ImageBuffer() ret = ueye.is_WaitForNextImage(self.cam.handle(), self.timeout, img_buffer.mem_ptr, img_buffer.mem_id) if ret == ueye.IS_SUCCESS: self.notify(ImageData(self.cam.handle(), img_buffer)) cv2.waitKey(100) time.sleep(0.01)
def showVideo(cam): nRet = ueye.is_CaptureVideo(cam.handle(), ueye.IS_DONT_WAIT) img_buffer = ImageBuffer() img_data = ImageData(cam.handle(), img_buffer) while True: nRet = ueye.is_WaitForNextImage(cam.handle(), 1000, img_buffer.mem_ptr, img_buffer.mem_id) array = img_data.as_1d_image() #scanned_img = QR_Scanner_visualized(array) cv2.imshow("hei", array) img_data.unlock() if cv2.waitKey(10) & 0xFF == ord('q'): break
def __init__(self, camhand=1, AOIwidth=1280, AOIheight=1024, buffer_count=100): self.camhandle = camhand self.cam = Camera(self.camhandle) self.cam.init() self.cam.set_colormode(ueye.IS_CM_BGR8_PACKED) # ret = self.cam.set_exposure(30.0) #ret = cam.set_LUT() # ret = self.cam.set_aoi(0, 0, AOIwidth, AOIheight) self.cam.alloc(buffer_count) ret = self.cam.capture_video(True) # start to capture; self.img_buffer = ImageBuffer() self.DATA = ImageData(self.camhandle, self.img_buffer)
def alloc(self, buffer_count=3): rect = self.get_aoi() bpp = get_bits_per_pixel(self.get_colormode()) for buff in self.img_buffers: check(ueye.is_FreeImageMem(self.h_cam, buff.mem_ptr, buff.mem_id)) for i in range(buffer_count): buff = ImageBuffer() ueye.is_AllocImageMem(self.h_cam, rect.width, rect.height, bpp, buff.mem_ptr, buff.mem_id) check(ueye.is_AddToSequence(self.h_cam, buff.mem_ptr, buff.mem_id)) self.img_buffers.append(buff) ueye.is_InitImageQueue(self.h_cam, 0)
def main(): # we need a QApplication, that runs our QT Gui Framework ##app = PyuEyeQtApp() # a basic qt window #view = PyuEyeQtView() #view.show() #view.user_callback = process_image # camera class to simplify uEye API access cam = Camera(1) cam.init() cam.set_colormode(ueye.IS_CM_BGR8_PACKED) #ret = cam.set_exposure(30.0) #ret = cam.set_LUT() # width, height = cam.get_size() x = 0 y = 0 ret = cam.set_aoi(x, y, width, height) cam.alloc(buffer_count=100) ret = cam.capture_video(True) # start to capture; fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('_output.avi', fourcc, 20.0, (width, height)) # a thread that waits for new images and processes all connected views #thread = FrameThread(cam) #thread.start() running = True img_buffer = ImageBuffer() DATA = ImageData(cam.handle(), img_buffer) while (ret == 0) and running: #img_buffer = ImageBuffer() ret = ueye.is_WaitForNextImage(cam.handle(), 1000, img_buffer.mem_ptr, img_buffer.mem_id) #print(img_buffer.mem_id) if ret == ueye.IS_SUCCESS: #DATA = ImageData(cam.handle(), img_buffer) DATA.getdata(img_buffer) #print(DATA.array.shape) image = DATA.as_1d_image() DATA.unlock() # make a gray image #imag = cv2.cvtColor(image, cv2.COLOR_BGR) cv2.imshow("Simple_black", image) out.write(image) if cv2.waitKey(1) == 27: break #cv2.Mat(ImageData.array) # cleanup #app.exit_connect(thread.stop) #app.exec_() #thread.stop() #thread.join() cam.stop_video() cam.exit() cv2.destroyAllWindows() out.release()