608_demo例子开红外及ir_cut是怎么做的呢

608_demo例子开红外及ir_cut是怎么做的呢

// 中间增加关闭红外灯判断逻辑,不关闭 ir_cut,获取画面曝光值

int opreation_led(){ if(en_red_led_flag == 1) { if(en_white_led == 0) { // 打开红外灯 open_red_led(); image_dark(); } if(en_ir_cut != 1) { en_ir_cut = 1; // 开启ir_cut ptz_ir_cut_control(1); } } else if(en_red_led_flag == 0) { image_bright(); if(en_red_led == 1) { // 关闭红外灯 close_red_led(); } if(en_ir_cut != 0) { en_ir_cut = 0; // 关闭 ir_cut ptz_ir_cut_control(0); } // 智能关闭白光灯 if(en_white_led == 2) { sleep(2); enabledPWM(&pwm_white_led, 0); } } return 0;}////////////////////////////////////////////////////////////////////////////////////////////////////////////黑白夜视切换逻辑_V3//////////////////////////////////////////////////////////////////////int iso_control_white_red_led(){ int ret; ot_isp_exp_info exp_info; ret = ss_mpi_isp_query_exposure_info(1, &exp_info); if(ret != TD_SUCCESS) { printf("======zs_ss_mpi_isp_query_exposure_info is fail 0x%X\n\n", ret); } printf("======exp_info.iso is %d\n", exp_info.iso); fprintf(fp_led, "exp_info.iso=%d\n", exp_info.iso); // 画面越暗值越大 printf("======exp_info.exposure is %u\n", exp_info.exposure); // 当前曝光量,等于曝光时间与曝光增益的乘积,其中曝光时间的单位为微秒us 取值范围 [0x0, 0xFFFFFFFF] fprintf(fp_led, "exp_info.exposure=%d\n", exp_info.exposure); // 彩色画面 // exp_info.iso值越大画面,越暗 if(g_image_grey == 0) { grey_image_red_led = 1; if(exp_info.iso > 2000) { // 画面暗 dark_count++; bright_count = 0; // 重置亮计数 if (dark_count >= 10) { time_t current_time = time(NULL); if (current_time - red_led_last_minute_time >= MINUTE_INTERVAL) // 检查是否到达分钟间隔 { red_led_last_minute_time = current_time; // 更新时间戳 dark_count = 0; // 清零等待下一轮判断 printf("======open red led and ir_cut\n"); en_red_led_flag = 1; first_control_red_led++; fprintf(fp_led, "en_red_led_flag=%d\n", en_red_led_flag); } else { dark_count = 0; } if(first_control_red_led == 1) { open_red_led(); image_dark(); en_ir_cut = 1; ptz_ir_cut_control(1); } } } else { // 画面亮 bright_count++; dark_count = 0; // 重置暗计数 } } // 灰白画面 if(g_image_grey == 1) { if(grey_image_red_led == 1) { if (exp_info.exposure < 33000) { // 画面亮 bright_count++; dark_count = 0; // 重置暗计数 printf("g_image_grey=1 bright_count is %d\n", bright_count); if(bright_count >= 60) { time_t current_time = time(NULL); if (current_time - red_led_last_minute_time >= MINUTE_INTERVAL) { en_red_led_flag = 0; } else { // 画面暗 bright_count = 0; // 重置亮计数 } } } else { // 画面暗 bright_count = 0; // 重置亮计数 } } } opreation_led(); usleep(100000); return 1;}

相关推荐
smartpi_ai13 小时前
玩具产品从按键控制升级为语音控制:语音模块与MCU串口通信实战
单片机·嵌入式硬件
BreezeJuvenile14 小时前
【STM32】时钟摘取法
stm32·单片机·嵌入式硬件
崇山峻岭之间15 小时前
单片机GPIO配置
单片机·嵌入式硬件
lllllllccccc16 小时前
FReeRtos中断管理、临界段保护和任务调度器挂起和恢复学习
单片机·嵌入式硬件
踏着七彩祥云的小丑17 小时前
嵌入式测试学习第 15 天:逻辑门基础:与或非、简单逻辑电路
单片机·嵌入式硬件
Ligocious18 小时前
stm32---2.按键触发外部中断
stm32·单片机
rit843249918 小时前
STM32F4 USB Host 功能实现
stm32·单片机·嵌入式硬件
金戈鐡馬18 小时前
定时器+中断优化单总线通信
stm32·单片机·嵌入式硬件
cici1587419 小时前
STM32 + VS1003/VS1053 MP3播放器SD卡读取程序
stm32·单片机·嵌入式硬件
xiangw@GZ19 小时前
DDR3 颗粒信号定义解析
单片机·嵌入式硬件