upload
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
# !/usr/bin/env python
|
||||
# -*- coding:utf-8 -*-
|
||||
#
|
||||
from ctypes import *
|
||||
import os
|
||||
import time
|
||||
import sys
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.append(BASE_DIR)
|
||||
|
||||
from lib.atlasutil_so import libatlas
|
||||
from constants import *
|
||||
from acl_image import AclImage
|
||||
|
||||
CAMERA_OK = 0
|
||||
CAMERA_ERROR = 1
|
||||
|
||||
CAMERA_CLOSED = 0
|
||||
CAMERA_OPENED = 1
|
||||
|
||||
INVALID_IMAGE_PTR = 0
|
||||
|
||||
class CameraOutputC(Structure):
|
||||
_fields_ = [
|
||||
('size', c_int),
|
||||
('data', POINTER(c_ubyte))
|
||||
]
|
||||
|
||||
|
||||
class Camera():
|
||||
def __init__(self, id, fps=20, size=(1280, 720)):
|
||||
self._id = id
|
||||
self._fps = fps
|
||||
self._width = size[0]
|
||||
self._height = size[1]
|
||||
self._size = int(self._width * self._height * 3 / 2)
|
||||
self._status = CAMERA_CLOSED
|
||||
if CAMERA_OK == self._open():
|
||||
self._status = CAMERA_OPENED
|
||||
else:
|
||||
print("Open camera %d failed"%(id))
|
||||
|
||||
def _open(self):
|
||||
ret = libatlas.OpenCameraEx(self._id, self._fps,
|
||||
self._width, self._height)
|
||||
print(ret)
|
||||
if (ret != CAMERA_OK):
|
||||
print("ERROR:Open camera %d failed ,ret = %d"%(self._id, ret))
|
||||
return CAMERA_ERROR
|
||||
self._status = CAMERA_OPENED
|
||||
return CAMERA_OK
|
||||
|
||||
def is_opened(self):
|
||||
return (self._status == CAMERA_OPENED)
|
||||
|
||||
def read(self):
|
||||
frame_data = CameraOutputC()
|
||||
ret = libatlas.ReadCameraFrame(self._id, byref(frame_data))
|
||||
if (ret != CAMERA_OK):
|
||||
print("ERROR:Read camera %d failed"%(self._id))
|
||||
return None
|
||||
|
||||
return AclImage(addressof(frame_data.data.contents),
|
||||
self._width, self._height, self._size, MEMORY_DVPP)
|
||||
|
||||
def close(self):
|
||||
print("Close camera ", self._id)
|
||||
libatlas.CloseCameraEx(self._id)
|
||||
|
||||
def __del__(self):
|
||||
self.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cap = Camera(id=0, fps=20, size=(1280, 720))
|
||||
|
||||
start = time.time()
|
||||
for i in range(0,100):
|
||||
image = cap.read()
|
||||
print("Read 100 frame exhaust ", time.time() - start)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user