以文本方式查看主题

-  机器视觉技术论坛|工业图像处理技术论坛  (http://www.jqsj.com/forum/index.asp)
--  【大恒摄像机】  (http://www.jqsj.com/forum/list.asp?boardid=8)
----  能否将m_pRawBuffer直接显示?  (http://www.jqsj.com/forum/dispbbs.asp?boardid=8&id=1294)

--  作者:pinsan
--  发布时间:2007-7-16 15:18:33
--  能否将m_pRawBuffer直接显示?

图像处理时要求256色,能否直接将m_pRawBuffer显示或经过简单的转换后以256色显示?不想转换为24位后再转为8位,也就是不用ConvertBayer2RGB()转换,能否实现?谢谢!


--  作者:xyc79323
--  发布时间:2007-7-19 19:20:13
--  

可以

我用opencv 可实现


--  作者:菜鸟
--  发布时间:2007-7-24 17:20:34
--  
如果你是灰度图像,直接显示就可以了,不需要任何转换。但是如果是彩色的,直接显示m_pRawBuffer,会是格状的明暗交替的图像,是不能用的。不过我没有试过用opencv转换,是用的那个函数?
--  作者:pinsan
--  发布时间:2007-7-25 18:54:24
--  

如何采集灰度图像啊?!有设置参数吗?我只要灰度图就可以,摄像头是HV1302的


--  作者:菜鸟
--  发布时间:2007-7-31 17:55:24
--  
HV1302的m_pRawBuffer就是灰度数据,每个像素占一个字节。
--  作者:指间沙
--  发布时间:2007-8-3 20:44:07
--  
你的问题解决了吗?我和你有相同的问题,我的QQ为187214098,有问题可以一起探讨.
--  作者:veilking
--  发布时间:2007-8-8 18:24:44
--  
不通过 ConvertBayer2RGB 用 CDC 绘图函数 直接采用 m_pRawBuffer 就可以显示灰度图像,主要代码如下:

不知对你是否有用,^_^


1.初始化BITMAPINFO
{
    //m_pBmpInfo即指向m_chBmpBuf缓冲区,用户可以自己分配BTIMAPINFO缓冲区   
    m_pBmpInfo                                = (BITMAPINFO *)m_chBmpBuf;
    //    初始化BITMAPINFO 结构,此结构在保存bmp文件、显示采集图像时使用
    m_pBmpInfo->bmiHeader.biSize            = sizeof(BITMAPINFOHEADER);
    //    图像宽度,一般为输出窗口宽度
    m_pBmpInfo->bmiHeader.biWidth            = m_OutSizeX;
    //    图像宽度,一般为输出窗口高度
    m_pBmpInfo->bmiHeader.biHeight            = m_OutSizeY;
   
    /*
    *    以下设置一般相同,
    *    对于低于8位的位图,还应设置相应的位图调色板
    */
    m_pBmpInfo->bmiHeader.biPlanes            = 1;
    m_pBmpInfo->bmiHeader.biBitCount        = 8;//8位灰度图像
    m_pBmpInfo->bmiHeader.biCompression        = BI_RGB;
    m_pBmpInfo->bmiHeader.biSizeImage        = 0;
    m_pBmpInfo->bmiHeader.biXPelsPerMeter    = 0;
    m_pBmpInfo->bmiHeader.biYPelsPerMeter    = 0;
    m_pBmpInfo->bmiHeader.biClrUsed            = 0;
    m_pBmpInfo->bmiHeader.biClrImportant    = 0;
   
    //以下内容一定要有,否则显示图像不正常
    for(i=0; i<256; i++)
    {
        m_pBmpInfo->bmiColors[i].rgbBlue = i;
        m_pBmpInfo->bmiColors[i].rgbGreen = i;
        m_pBmpInfo->bmiColors[i].rgbRed = i;
        m_pBmpInfo->bmiColors[i].rgbReserved = 0;
    }
    /*
    *    分配原始图像缓冲区,一般用来存储采集图像原始数据
    *  一般图像缓冲区大小由输出窗口大小和视频格式确定。
    */
    m_pRawBuffer = new BYTE[m_nMaxWidth * m_nMaxHeight];
    if(m_pRawBuffer == NULL)
        return FALSE;

    return TRUE;
}

2.直接用m_pRawBuffer显示图像
::StretchDIBits(dc, 0,0,m_OutSizeX, m_OutSizeY, 0,0,m_OutSizeX, m_OutSizeY,
            m_pRawBuffer,m_pBmpInfo, DIB_RGB_COLORS,SRCCOPY);


注:m_OutSizeX, m_OutSizeY 为输出显示图像大小。
[此贴子已经被作者于2007-8-8 18:29:11编辑过]