首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机器视觉8位Bayer RGGB到Open CV中的RGB

机器视觉8位Bayer RGGB到Open CV中的RGB
EN

Stack Overflow用户
提问于 2015-11-17 20:17:45
回答 2查看 3.7K关注 0票数 0

我目前正在尝试将一个8位原始彩色图像转换为8位RGB。我得到了一个通道错误,它期望Bayer是1个通道。

我正在使用下面的代码。

代码语言:javascript
复制
if (convertBayerChckBox->Checked)
        {
            try{
                cv::Mat temp(imgOriginal.rows, imgOriginal.cols, CV_8UC3);
                imgOriginal.copyTo(temp);
                cv::cvtColor(temp, imgOriginal, CV_BayerRG2BGR);
            }
            catch (const cv::Exception& ex)
            {
                std::cout << "EXCEPTION: " << ex.what() << std::endl;
                errLog << "EXCEPTION: " << ex.what() << std::endl;
            }
        }

然后我在函数cv::cvtColor中得到以下异常: exception:......\modules\imgproc\src\color.cpp:4194: error:(-215) scn == 1 && dcn == 3

我不知道如何从拜耳转换到RGB

EN

回答 2

Stack Overflow用户

发布于 2015-11-17 22:19:48

您需要将input Mat的数据指针设置为目标指针。以下是将您的拜耳图像转换为RGB的示例程序。这里我使用了一个文件中的buffer。您可以使用摄影机帧缓冲区。希望这能有所帮助!

代码语言:javascript
复制
Mat mSource_Bayer(Size(m_IWidth,m_IHeight),CV_8UC1);
Mat mSource_Bgr(Size(m_IWidth,m_IHeight),CV_8UC3);

FILE *fp = NULL;
uchar *imagedata = NULL;
int framesize = m_IWidth * m_IHeight;

//Open raw Bayer image.
fp = fopen(FileName_S.c_str(), "rb");

//Memory allocation for bayer image data buffer.
imagedata = (uchar*) malloc (sizeof(uchar ) * framesize);

//Read image data and store in buffer.
fread(imagedata, sizeof(uchar ), framesize, fp);

mSource_Bayer.data= imagedata;

fclose(fp);

int Selection= m_BayerFormat.GetCurSel();

if(Selection==0)
    cvtColor(mSource_Bayer, mSource_Bgr, CV_BayerBG2BGR);//Perform demosaicing process
else if(Selection==1)
    cvtColor(mSource_Bayer, mSource_Bgr, CV_BayerGB2BGR);//Perform demosaicing process
else if(Selection==2)
    cvtColor(mSource_Bayer, mSource_Bgr, CV_BayerRG2BGR);//Perform demosaicing process
else if(Selection==3)
    cvtColor(mSource_Bayer, mSource_Bgr, CV_BayerGR2BGR);//Perform demosaicing process

imshow("mSource_Bgr",mSource_Bgr);
票数 3
EN

Stack Overflow用户

发布于 2018-06-28 14:07:02

此外,为了执行拜耳到RGB的转换,我建议使用Simd Library中的函数SimdBayerToBgr。它的功能似乎比它的模拟从OpenCV (它使用AVX2和AVX512)更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33756723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档