智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4021|回复: 8
打印 上一主题 下一主题

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

[复制链接]

5

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
威望
225
贡献
118
兑换币
142
注册时间
2018-12-5
在线时间
4 小时
跳转到指定楼层
1#
发表于 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);
        }
        
    }

回复

使用道具 举报

5

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

3

主题

346

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7307

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

威望
3760
贡献
2651
兑换币
2477
注册时间
2016-5-3
在线时间
448 小时
3#
发表于 2020-2-19 12:52:57 | 只看该作者
你为啥不直接用总钻风呢
回复

使用道具 举报

5

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
威望
225
贡献
118
兑换币
142
注册时间
2018-12-5
在线时间
4 小时
4#
 楼主| 发表于 2020-2-19 19:54:03 | 只看该作者
cs538138 发表于 2020-2-19 12:52
你为啥不直接用总钻风呢

现在手头上只有凌瞳
回复

使用道具 举报

51

主题

2229

帖子

4

精华

元老在此

成都逐飞科技有限公司

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
66191

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

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

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
78
威望
48
贡献
30
兑换币
29
注册时间
2019-8-27
在线时间
0 小时
6#
发表于 2020-2-22 11:03:25 | 只看该作者
hello  有问题请教 很急  在吗 麻烦了 谢谢
回复

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
78
威望
48
贡献
30
兑换币
29
注册时间
2019-8-27
在线时间
0 小时
7#
发表于 2020-2-22 11:03:33 | 只看该作者
hello  有问题请教 很急  在吗 麻烦了 谢谢

回复

使用道具 举报

5

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

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

使用道具 举报

0

主题

7

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1732
威望
1188
贡献
544
兑换币
480
注册时间
2019-11-1
在线时间
0 小时
9#
发表于 2020-3-13 00:22:35 | 只看该作者
同问?
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-4-24 20:24 , Processed in 0.040470 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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