def capture(self, initial_sleep=0.01, poll=0.01, buffer_=None,
filename=None):
"""Capture a still image. Type :class:`numpy.ndarray`."""
self.start_exposure()
if initial_sleep:
time.sleep(initial_sleep)
while self.get_exposure_status() == ASI_EXP_WORKING:
if poll:
time.sleep(poll)
pass
status = self.get_exposure_status()
if status != ASI_EXP_SUCCESS:
raise ZWO_CaptureError('Could not capture image', status)
data = self.get_data_after_exposure(buffer_)
whbi = self.get_roi_format()
shape = [whbi[1], whbi[0]]
if whbi[3] == ASI_IMG_RAW8 or whbi[3] == ASI_IMG_Y8:
img = np.frombuffer(data, dtype=np.uint8)
elif whbi[3] == ASI_IMG_RAW16:
img = np.frombuffer(data, dtype=np.uint16)
elif whbi[3] == ASI_IMG_RGB24:
img = np.frombuffer(data, dtype=np.uint8)
shape.append(3)
else:
raise ValueError('Unsupported image type')
img = img.reshape(shape)
if filename is not None:
from PIL import Image
mode = None
if len(img.shape) == 3:
img = img[:, :, ::-1] # Convert BGR to RGB
if whbi[3] == ASI_IMG_RAW16:
mode = 'I;16'
image = Image.fromarray(img, mode=mode)
image.save(filename)
logger.debug('wrote %s', filename)
return img
评论列表
文章目录