// Constructor public ArucoCameraSeparateThread(IArucoCamera arucoCamera, Action imagesUpdated, Action threadWork, Action threadException) { this.arucoCamera = arucoCamera; this.imagesUpdated = imagesUpdated; this.threadWork = threadWork; this.threadException = threadException; Images = new Cv.Mat[arucoCamera.CameraNumber]; ImagesData = new byte[arucoCamera.CameraNumber][]; arucoCameraImageCopyData = new byte[arucoCamera.CameraNumber][]; for (int cameraId = 0; cameraId < arucoCamera.CameraNumber; cameraId++) { ImagesData[cameraId] = new byte[arucoCamera.ImageDataSizes[cameraId]]; arucoCameraImageCopyData[cameraId] = new byte[arucoCamera.ImageDataSizes[cameraId]]; Images[cameraId] = new Cv.Mat(arucoCamera.ImageTextures[cameraId].height, arucoCamera.ImageTextures[cameraId].width, CvMatExtensions.ImageType(arucoCamera.ImageTextures[cameraId].format)); Images[cameraId].DataByte = ImagesData[cameraId]; } }
// Constructor public ArucoCameraSeparateThread(IArucoCamera arucoCamera, Action <Cv.Mat[]> threadWork) { this.arucoCamera = arucoCamera; this.threadWork = threadWork; CopyBackImages = false; for (int bufferId = 0; bufferId < buffersCount; bufferId++) { imageBuffers[bufferId] = new Cv.Mat[arucoCamera.CameraNumber]; imageDataBuffers[bufferId] = new byte[arucoCamera.CameraNumber][]; for (int cameraId = 0; cameraId < arucoCamera.CameraNumber; cameraId++) { imageBuffers[bufferId][cameraId] = new Cv.Mat(arucoCamera.Textures[cameraId].height, arucoCamera.Textures[cameraId].width, CvMatExtensions.ImageType(arucoCamera.Textures[cameraId].format)); imageDataBuffers[bufferId][cameraId] = new byte[arucoCamera.ImageDataSizes[cameraId]]; imageBuffers[bufferId][cameraId].DataByte = imageDataBuffers[bufferId][cameraId]; } } }