167 lines
4.8 KiB
C++
167 lines
4.8 KiB
C++
|
|
// ParametrizeCamera_LoadAndSave.cpp
|
|||
|
|
|
|||
|
|
/* @brief<65><66><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>μ<EFBFBD><CEBC>غͱ<D8BA><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ʾ<EFBFBD><CABE>ͨ<EFBFBD><CDA8>ItkDevSaveConfigurationToFile<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Features.ccf<63><66><EFBFBD>У<EFBFBD>ͨ<EFBFBD><CDA8>ItkDevLoadConfigurationFromFile<6C><65><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Features.ccf<63><66><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>
|
|||
|
|
* @note<EFBFBD><EFBFBD>
|
|||
|
|
*
|
|||
|
|
* @brief<EFBFBD><EFBFBD>This example demonstrates to the user how to load and save the camera configuration, demonstrating exporting the camera attributes to a file (e. g. Features.ccf) via ItkDevSaveConfigurationToFile; importing the camera attributes from a file (e. g. Features.ccf) via ItkDevLoadConfigurationFromFile.
|
|||
|
|
* @note<EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include <Windows.h>
|
|||
|
|
#include <malloc.h>
|
|||
|
|
#include <stdio.h>
|
|||
|
|
#include <stdlib.h>
|
|||
|
|
|
|||
|
|
#include "IKapC.h"
|
|||
|
|
#pragma comment(lib, "IKapC.lib")
|
|||
|
|
|
|||
|
|
/* @brief<65><66><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>á<EFBFBD>
|
|||
|
|
* @param[in] errc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
|
*
|
|||
|
|
* @brief<EFBFBD><EFBFBD>Determine whether the function is called successfully.
|
|||
|
|
* @param[in] errc<EFBFBD><EFBFBD>Function return value. */
|
|||
|
|
#define CHECK(errc) \
|
|||
|
|
if (ITKSTATUS_OK != errc) \
|
|||
|
|
printErrorAndExit(errc)
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// Camera device handle.
|
|||
|
|
ITKDEVICE g_hCamera;
|
|||
|
|
|
|||
|
|
/* @brief<65><66><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*
|
|||
|
|
*
|
|||
|
|
* @brief<EFBFBD><EFBFBD>Users enter Enter to exit the program. */
|
|||
|
|
void pressEnterToExit(void);
|
|||
|
|
|
|||
|
|
/* @brief<65><66><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param[in] errc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
|
*
|
|||
|
|
* @brief<EFBFBD><EFBFBD>Print error message and exit the program.
|
|||
|
|
* @param[in] errc<EFBFBD><EFBFBD>Function return value. */
|
|||
|
|
void printErrorAndExit(ITKSTATUS errc);
|
|||
|
|
|
|||
|
|
int main(void)
|
|||
|
|
{
|
|||
|
|
// IKapC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|||
|
|
//
|
|||
|
|
// Return value of IKapC functions.
|
|||
|
|
ITKSTATUS res;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// The number of available devices.
|
|||
|
|
uint32_t numDevices = 0;
|
|||
|
|
|
|||
|
|
// <20><>Ҫ<EFBFBD><EFBFBD><F2BFAAB5>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// The index of device to be opened.
|
|||
|
|
uint32_t devIndex = 0;
|
|||
|
|
|
|||
|
|
printf("Itek Console Camera Features Example(C version)\n");
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC> IKapC <20><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// Initialize IKapC runtime environment.
|
|||
|
|
res = ItkManInitialize();
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
// ö<>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>豸ǰ<E8B1B8><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ItkManGetDeviceCount() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// Enumerate the number of available devices. Before opening the device, ItkManGetDeviceCount() function must be called.
|
|||
|
|
res = ItkManGetDeviceCount(&numDevices);
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
// <20><>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>豸ʱ<E8B1B8><CAB1>
|
|||
|
|
//
|
|||
|
|
// When there is no connected devices.
|
|||
|
|
if (numDevices == 0) {
|
|||
|
|
fprintf(stderr, "No device.\n");
|
|||
|
|
ItkManTerminate();
|
|||
|
|
pressEnterToExit();
|
|||
|
|
exit(EXIT_FAILURE);
|
|||
|
|
}
|
|||
|
|
fprintf(stderr, "total device count: %d, the index of which you want to open is:", numDevices);
|
|||
|
|
fflush(stderr);
|
|||
|
|
int scanTmp = scanf_s("%u", &devIndex);
|
|||
|
|
if (scanTmp != 1) {
|
|||
|
|
fprintf(stderr, "Invalid input. Expect an integer.\n");
|
|||
|
|
ItkManTerminate();
|
|||
|
|
pressEnterToExit();
|
|||
|
|
exit(EXIT_FAILURE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (devIndex >= numDevices)
|
|||
|
|
{
|
|||
|
|
fprintf(stderr, "index: %d is more than %d.\n", devIndex, numDevices - 1);
|
|||
|
|
ItkManTerminate();
|
|||
|
|
pressEnterToExit();
|
|||
|
|
exit(EXIT_FAILURE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>ȡ<EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// Open the device and get the handle of the device.
|
|||
|
|
res = ItkDevOpen(devIndex, ITKDEV_VAL_ACCESS_MODE_CONTROL, &g_hCamera);
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
printf("Start save the camera features to the file\n");
|
|||
|
|
printf("Wait......\n");
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
//
|
|||
|
|
// save the camera configuration file
|
|||
|
|
res = ItkDevSaveConfigurationToFile(g_hCamera, (char *)"Features.ccf");
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
printf("Finish save the camera features to the file\n\n");
|
|||
|
|
|
|||
|
|
printf("Start load the camera features from the file\n");
|
|||
|
|
printf("Wait......\n");
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
//
|
|||
|
|
// load the camera configuration file
|
|||
|
|
res = ItkDevLoadConfigurationFromFile(g_hCamera, (char *)"Features.ccf");
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
printf("Finish load the camera features from the file\n");
|
|||
|
|
|
|||
|
|
{ int getCharTmp = getchar(); }
|
|||
|
|
|
|||
|
|
//<2F>ر<EFBFBD><D8B1>豸<EFBFBD><E8B1B8>
|
|||
|
|
//
|
|||
|
|
// Close the device.
|
|||
|
|
res = ItkDevClose(g_hCamera);
|
|||
|
|
CHECK(res);
|
|||
|
|
|
|||
|
|
// <20>ͷ<EFBFBD> IKapC <20><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// Release IKapC runtime environment.
|
|||
|
|
ItkManTerminate();
|
|||
|
|
|
|||
|
|
pressEnterToExit();
|
|||
|
|
return EXIT_SUCCESS;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// Print error message and exit the program.
|
|||
|
|
void printErrorAndExit(ITKSTATUS errc)
|
|||
|
|
{
|
|||
|
|
fprintf(stderr, "Error Code:%08X\n", errc);
|
|||
|
|
ItkManTerminate();
|
|||
|
|
pressEnterToExit();
|
|||
|
|
exit(EXIT_FAILURE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
// Users enter Enter to exit the program.
|
|||
|
|
void pressEnterToExit(void)
|
|||
|
|
{
|
|||
|
|
fprintf(stderr, "\nPress enter to exit.\n");
|
|||
|
|
while (getchar() != '\n')
|
|||
|
|
;
|
|||
|
|
}
|