新手入门
- 积分
- 10
- 金钱
- 10
- 注册时间
- 2023-6-28
- 在线时间
- 11 小时
|

楼主 |
发表于 2023-7-4 16:11:36
|
显示全部楼层
还有想请教一下您,想对摄像头输出的像素进行处理的话是暂存后再处理好还是传到lcd上我再读屏比较好,我现在在尝试读屏,但是我用历程中的lcd_read_point遍历读取例如200*300范围内数据就会出问题直接没图像了,读取几十个则没有问题,我是在摄像头历程中的rgb565_test函数下的while循环里先停dcmi再做处理的。
void rgb565_test(void)
{
uint8_t key;
uint8_t effect = 0, saturation = 3, contrast = 2;
uint8_t scale = 1; /* 默认是全尺寸缩放 */
uint8_t msgbuf[15]; /* 消息缓存区 */
lcd_clear(WHITE);
lcd_show_string(30, 50, 200, 16, 16, "STM32", RED);
lcd_show_string(30, 70, 200, 16, 16, "OV2640 RGB565 Mode", RED);
lcd_show_string(30, 100, 200, 16, 16, "KEY0:Contrast", RED); /* 对比度 */
lcd_show_string(30, 120, 200, 16, 16, "KEY1:Saturation", RED); /* 执行自动对焦 */
lcd_show_string(30, 140, 200, 16, 16, "KEY2:Effects", RED); /* 特效 */
lcd_show_string(30, 160, 200, 16, 16, "KEY_UP:FullSize/Scale", RED); /* 1:1尺寸(显示真实尺寸)/全尺寸缩放 */
ov2640_rgb565_mode(); /* RGB565模式 */
dcmi_init(); /* DCMI配置 */
dcmi_dma_init((uint32_t)&LCD->LCD_RAM, 0, 1, DMA_MDATAALIGN_HALFWORD, DMA_MINC_DISABLE); /* DCMI DMA配置,MCU屏,竖屏 */
ov2640_outsize_set(lcddev.width, lcddev.height); /* 满屏缩放显示 */
dcmi_start(); /* 启动传输 */
while (1)
{
key = 1;
if (key)
{
dcmi_stop(); /* 停止显示 */
hsv_detect();
dcmi_start(); /* 重新开始传输 */
}
delay_ms(10);
}
}
void hsv_detect(void)
{
uint32_t i,j,k;
uint32_t color[20];
lcd_draw_line(91,150,91,155,0x1F);
lcd_draw_line(90,150,90,155,0x1F);
lcd_draw_line(91,180,91,175,0x1F);
lcd_draw_line(90,180,90,175,0x1F);
for(i = 0;i < 20; i++)
{
color = lcd_read_point(90,155+i);
}
red_detect(color);
return;
}
如我把color的大小改到比较大的情况就会直接卡住没有反应,这种情况可能是什么原因呢 |
|