def start_image_acquisition(self):
if not self._create_ds_at_connection:<EOL><INDENT>self._setup_data_streams()<EOL><DEDENT>num_required_buffers = self._num_buffers<EOL>for data_stream in self._data_streams:<EOL><INDENT>try:<EOL><INDENT>num_buffers = data_stream.buffer_announce_min<EOL>if num_buffers < num_required_buffers:<EOL><INDENT>num_buffers = num_required_buffers<EOL><DEDENT><DEDENT>except InvalidParameterException as e:<EOL><INDENT>num_buffers = num_required_buffers<EOL>self._logger.debug(e, exc_info=True)<EOL><DEDENT>if data_stream.defines_payload_size():<EOL><INDENT>buffer_size = data_stream.payload_size<EOL><DEDENT>else:<EOL><INDENT>buffer_size = self.device.node_map.PayloadSize.value<EOL><DEDENT>raw_buffers = self._create_raw_buffers(<EOL>num_buffers, buffer_size<EOL>)<EOL>buffer_tokens = self._create_buffer_tokens(<EOL>raw_buffers<EOL>)<EOL>self._announced_buffers = self._announce_buffers(<EOL>data_stream=data_stream, _buffer_tokens=buffer_tokens<EOL>)<EOL>self._queue_announced_buffers(<EOL>data_stream=data_stream, buffers=self._announced_buffers<EOL>)<EOL><DEDENT>try:<EOL><INDENT>acq_mode = self.device.node_map.AcquisitionMode.value<EOL>if acq_mode == '<STR_LIT>':<EOL><INDENT>num_images_to_acquire = -<NUM_LIT:1><EOL><DEDENT>elif acq_mode == '<STR_LIT>':<EOL><INDENT>num_images_to_acquire = <NUM_LIT:1><EOL><DEDENT>elif acq_mode == '<STR_LIT>':<EOL><INDENT>num_images_to_acquire = self.device.node_map.AcquisitionFrameCount.value<EOL><DEDENT>else:<EOL><INDENT>num_images_to_acquire = -<NUM_LIT:1><EOL><DEDENT><DEDENT>except LogicalErrorException as e:<EOL><INDENT>num_images_to_acquire = -<NUM_LIT:1><EOL>self._logger.debug(e, exc_info=True)<EOL><DEDENT>self._num_images_to_acquire = num_images_to_acquire<EOL>try:<EOL><INDENT>self.device.node_map.TLParamsLocked.value = <NUM_LIT:1><EOL><DEDENT>except LogicalErrorException:<EOL><INDENT>pass<EOL><DEDENT>self._is_acquiring_images = True<EOL>for data_stream in self._data_streams:<EOL><INDENT>data_stream.start_acquisition(<EOL>ACQ_START_FLAGS_LIST.ACQ_START_FLAGS_DEFAULT,<EOL>self._num_images_to_acquire<EOL>)<EOL><DEDENT>if self.thread_image_acquisition:<EOL><INDENT>self.thread_image_acquisition.start()<EOL><DEDENT>self.device.node_map.AcquisitionStart.execute()<EOL>self._logger.info(<EOL>'<STR_LIT>'.format(self._device.id_)<EOL>)<EOL>if self._profiler:<EOL><INDENT>self._profiler.print_diff()<EOL><DEDENT>
Starts image acquisition.

:return: None.