智能车制作

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1495|回复: 8

关于逐飞凌瞳摄像头将彩色图像转换为灰度图像的问题

[复制链接]

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
威望
142
贡献
79
兑换币
90
注册时间
2018-12-5
在线时间
4 小时
发表于 2020-2-17 20:48:49 | 显示全部楼层 |阅读模式
5贡献
请问各位大佬知道怎么把凌瞳摄像头反应到逐飞凌瞳上位机的彩色图像转换为灰度图像吗?我用的是RT1064核心板+凌瞳,我的思路是等单片机采集完图像后利用循环和公式(r_value * 300 + g_value * 590 + b_value * 110) / 1000,把每一个像素点转换成灰度的,再创建一个很普通的二维数组,用来存取转换之后的像素点,然后再将转换后数组发送到上位机上;但是我的结果是这样处理之后上位机总是显示黑色,求各位车友帮忙解答
下面附上代码:
void scc8660_csi_isr(CSI_Type *base, csi_handle_t *handle, status_t status, void *userData)//中断函数
{
   
    int i1,j1;
    if(csi_get_full_buffer(&csi_handle,&fullCameraBufferAddr))
    {
        csi_add_empty_buffer(&csi_handle,(uint8 *)fullCameraBufferAddr);
        if(fullCameraBufferAddr == (uint32)scc8660_csi1_image[0])
        {
            scc8660_csi_image = scc8660_csi1_image;//采集完成
            L1CACHE_CleanInvalidateDCacheByRange((uint32)scc8660_csi1_image[0],SCC8660_CSI_W*SCC8660_CSI_H);
        }
        else if(fullCameraBufferAddr == (uint32)scc8660_csi2_image[0])
        {
            scc8660_csi_image = scc8660_csi2_image;//采集完成
            L1CACHE_CleanInvalidateDCacheByRange((uint32)scc8660_csi2_image[0],SCC8660_CSI_W*SCC8660_CSI_H);
        }
        for(i1 = 0;i1 < SCC8660_CSI_PIC_H;i1++)
            {
                for(j1 = 0;j1 < SCC8660_CSI_PIC_W;j1++)  
                {
                //提取R G B值
                color_camera_take_point(scc8660_csi_image[0], j1, i1, SCC8660_CSI_PIC_W, &r_value,&g_value,&b_value);
                //彩色图像转灰度公式
                gray[i1][j1] = (r_value * 300 + g_value * 590 + b_value * 110) / 1000;
                //简单二值化
                if(gray[i1][j1] < 128)
                {
                 gray[i1][j1] = 255;
                }
                else
                {
                 gray[i1][j1] = 0;
                }
            }
          }//以上是例程之外的程序
        scc8660_csi_finish_flag = 1;//采集完成标志位置一
    }
}
//主函数

int main(void)
{
   
    DisableGlobalIRQ();
    board_init();   //务必保留,本函数用于初始化MPU 时钟 调试串口
   
    systick_delay_ms(100);    //延时100ms,等待主板其他外设上电成功
   
    usb_cdc_init();
    scc8660_csi_init();//初始化摄像头 使用CSI接口
   
    EnableGlobalIRQ(0);
    while(1)
    {
        if(scc8660_csi_finish_flag)
        {
            scc8660_csi_finish_flag = 0;
            
           //csi_seekfree_sendimg_scc8660(USART_1,(uint8*)scc8660_csi_image[0],SCC8660_CSI_PIC_W,SCC8660_CSI_PIC_H);//串口初始化 由于默认开启了printf功能,因此在board_init已经初始化了串口1 因此本例程不在初始化
            seekfree_sendimg_scc8660_usb_cdc((uint8*)gray[0],SCC8660_CSI_PIC_W,SCC8660_CSI_PIC_H);
        }
        
    }

回复

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
威望
142
贡献
79
兑换币
90
注册时间
2018-12-5
在线时间
4 小时
 楼主| 发表于 2020-2-18 17:41:49 | 显示全部楼层
已解决,可以通过把灰度值算出来然后再把灰度值放在RGB三个通道内,再进行RGB888转化成RGB565,就能在逐飞凌瞳彩色上位机上形成灰色图像了,车友们可以看看这个http://www.360doc.com/content/18/0410/09/7551_744364416.shtml
回复

使用道具 举报

3

主题

332

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6295

活跃会员奖章优秀会员奖章论坛元老奖章在线王奖章

威望
3160
贡献
2239
兑换币
2073
注册时间
2016-5-3
在线时间
448 小时
发表于 2020-2-19 12:52:57 | 显示全部楼层
你为啥不直接用总钻风呢
回复

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
威望
142
贡献
79
兑换币
90
注册时间
2018-12-5
在线时间
4 小时
 楼主| 发表于 2020-2-19 19:54:03 | 显示全部楼层
cs538138 发表于 2020-2-19 12:52
你为啥不直接用总钻风呢

现在手头上只有凌瞳
回复

使用道具 举报

52

主题

2222

帖子

3

精华

知名人物

成都逐飞科技有限公司

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
35687

论坛元老奖章资源大师奖章在线王奖章活跃会员奖章优秀会员奖章论坛骨干奖章

QQ
威望
19451
贡献
11038
兑换币
4525
注册时间
2010-2-24
在线时间
2599 小时
毕业学校
乐山师院
发表于 2020-2-21 19:52:23 | 显示全部楼层
公式乘的数据可以除10  这样可以降低数据范围。转换之后直接发送到总钻风的上位机。基本上方法没有多大问题,估计是你的程序哪里有小问题没有注意到,怎么不直接用彩色处理呢。
回复

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
78
威望
48
贡献
30
兑换币
29
注册时间
2019-8-27
在线时间
0 小时
发表于 2020-2-22 11:03:25 | 显示全部楼层
hello  有问题请教 很急  在吗 麻烦了 谢谢
回复

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
78
威望
48
贡献
30
兑换币
29
注册时间
2019-8-27
在线时间
0 小时
发表于 2020-2-22 11:03:33 | 显示全部楼层
hello  有问题请教 很急  在吗 麻烦了 谢谢

回复

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
威望
142
贡献
79
兑换币
90
注册时间
2018-12-5
在线时间
4 小时
 楼主| 发表于 2020-2-25 23:38:06 | 显示全部楼层
fbhsy 发表于 2020-2-21 19:52
公式乘的数据可以除10  这样可以降低数据范围。转换之后直接发送到总钻风的上位机。基本上方法没有多大问题 ...

直接用彩色处理是指?是说不用灰度,二值化,直接对彩色图像进行校正,寻线,,等其他操作吗
回复

使用道具 举报

0

主题

1

帖子

0

精华

高级会员

Rank: 4

积分
810
威望
630
贡献
180
兑换币
109
注册时间
2019-11-1
在线时间
0 小时
发表于 2020-3-13 00:22:35 | 显示全部楼层
同问?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 京ICP备14023231号-8

GMT+8, 2020-4-9 14:27 , Processed in 0.072929 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表