add camera control.

This commit is contained in:
amass 2025-05-02 17:49:44 +08:00
parent 65ed23b900
commit 737f6a8fab
12 changed files with 70 additions and 12 deletions

View File

@ -4,9 +4,8 @@
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/opt/aarch64-v01c01-linux-gnu-gcc/lib/libdatachannel-0.22.5/include",
"/opt/aarch64-v01c01-linux-gnu-gcc/lib/boost_1_87_0/include",
"/opt/aarch64-v01c01-linux-gnu-gcc/lib/libdatachannel-0.22.5",
"/opt/aarch64-v01c01-linux-gnu-gcc/lib/libdatachannel-0.22.6/include",
"/opt/aarch64-v01c01-linux-gnu-gcc/lib/boost_1_88_0/include",
"/opt/aarch64-v01c01-linux-gnu-gcc/lib/ZLMediaKit/include",
"/opt/aarch64-v01c01-linux-gnu-gcc/lib/LeakTracer/include",
"/opt/aarch64-v01c01-linux-gnu-gcc/lib/opencv-4.11.0/include/opencv4",

View File

@ -2,9 +2,9 @@
#include "Core/IoContext.h"
#include "Core/Logger.h"
#include "Core/Singleton.h"
#include "HttpSession.h"
#include "HttpServer/HttpSession.h"
#include "HttpServer/ServiceLogic.h"
#include "Router/router.hpp"
#include "ServiceLogic.h"
#include "Settings.h"
#include "WebRTC/SignalServer.h"
#include <boost/asio/strand.hpp>

View File

@ -6,14 +6,15 @@ find_package(Boost COMPONENTS json REQUIRED)
add_executable(PassengerStatistics main.cpp
Application.h Application.cpp
Camera.h Camera.cpp
HttpSession.h HttpSession.cpp
ImageUtilities.h ImageUtilities.cpp
RtspServer.h RtspServer.cpp
ResponseUtility.h ResponseUtility.cpp
ServiceLogic.h ServiceLogic.cpp
Settings.h Settings.cpp
VideoInput.h VideoInput.cpp
HttpServer/HttpSession.h HttpServer/HttpSession.cpp
HttpServer/ResponseUtility.h HttpServer/ResponseUtility.cpp
HttpServer/ServiceLogic.h HttpServer/ServiceLogic.cpp
WebRTC/Streamer.h WebRTC/Streamer.cpp
WebRTC/Helpers.h WebRTC/Helpers.cpp
WebRTC/SignalServer.h WebRTC/SignalServer.cpp
@ -24,6 +25,7 @@ target_include_directories(PassengerStatistics
PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/rw_mpp/include
PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/fsan_sensorsdk/include
PRIVATE ${ZLMediaKit_INCLUDE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_directories(PassengerStatistics

View File

@ -48,3 +48,45 @@ void Camera::initIrCutGpio() {
)";
system(dayCommand);
}
bool Camera::zeroCheck() {
SENSOR_SDK_AUTOLENS_PARAM_T param = {0};
int status = SensorSdk_AutoLens_SetParam(0, SensorSDK_AutoLens_Type_ZeroCheck, &param);
LOG(info) << "zero check " << (status == SENSOR_SDK_SUCC ? "success" : "failed");
return status == SENSOR_SDK_SUCC;
}
bool Camera::focus(Focus type) {
using namespace std::chrono_literals;
int focusType = (type == Focus::Far) ? SensorSDK_AutoLens_Type_FocusFar : SensorSDK_AutoLens_Type_FocusNear;
SENSOR_SDK_AUTOLENS_PARAM_T autolens_param = {0};
autolens_param.Params.Param_Base.nStop = 0;
autolens_param.Params.Param_Base.nSpeed = 10;
int status = SensorSdk_AutoLens_SetParam(0, focusType, &autolens_param);
std::this_thread::sleep_for(10ms);
autolens_param.Params.Param_Base.nStop = 1;
autolens_param.Params.Param_Base.nSpeed = 0;
status = SensorSdk_AutoLens_SetParam(0, focusType, &autolens_param);
return status == SENSOR_SDK_SUCC;
}
bool Camera::zoom(Zoom type) {
using namespace std::chrono_literals;
int zoomType = (type == Zoom::In) ? SensorSDK_AutoLens_Type_ZoomIn : SensorSDK_AutoLens_Type_ZoomOut;
SENSOR_SDK_AUTOLENS_PARAM_T autolens_param = {0};
autolens_param.Params.Param_Base.nStop = 0;
autolens_param.Params.Param_Base.nSpeed = 10;
int status = SensorSdk_AutoLens_SetParam(0, zoomType, &autolens_param);
std::this_thread::sleep_for(10ms);
autolens_param.Params.Param_Base.nStop = 1;
autolens_param.Params.Param_Base.nSpeed = 0;
status = SensorSdk_AutoLens_SetParam(0, zoomType, &autolens_param);
return status == SENSOR_SDK_SUCC;
}

View File

@ -1,11 +1,26 @@
#ifndef __CAMERA_H__
#define __CAMERA_H__
#include "Core/Singleton.h"
class Camera {
friend class Core::Singleton<Camera>;
public:
Camera();
enum Focus {
Near,
Far,
};
enum Zoom {
Out,
In,
};
bool zeroCheck();
bool focus(Focus type);
bool zoom(Zoom type);
protected:
Camera();
void initIrCutGpio();
};

View File

@ -1,8 +1,8 @@
#include "ServiceLogic.h"
#include "../Settings.h"
#include "Core/Logger.h"
#include "Core/Singleton.h"
#include "HttpSession.h"
#include "Settings.h"
#include <boost/beast/http/file_body.hpp>
#include <boost/url/url_view.hpp>
#include <filesystem>

View File

@ -1,7 +1,7 @@
#ifndef SERVICELOGIC_H
#define SERVICELOGIC_H
#include "Application.h"
#include "../Application.h"
#include "ResponseUtility.h"
#include <boost/beast/http/message.hpp>
#include <boost/beast/http/string_body.hpp>

View File

@ -1,7 +1,7 @@
#include "SignalServer.h"
#include "../Application.h"
#include "../HttpSession.h"
#include "Core/Logger.h"
#include "HttpServer/HttpSession.h"
#include "WebSocketSignalSession.h"
#include <boost/beast/websocket/rfc6455.hpp>