gpt4 book ai didi

c++ - 机器视觉 8 位 Bayer RGGB 到 Opencv 中的 RGB

转载 作者:行者123 更新时间:2023-11-28 00:09:48 29 4
gpt4 key购买 nike

我目前正在尝试将 8 位 Raw 彩色图像转换为 8 位 RGB。我收到一个 channel 错误,它希望拜耳成为 1 个 channel 。

我正在使用以下代码。

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;
}
}

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

我不确定如何从 Bayer 转换为 RGB

最佳答案

您需要将输入垫的数据指针设置为目标指针。这是将拜耳图像转换为 RGB 的示例程序。在这里,我使用了文件中的缓冲区。您可以使用相机帧缓冲区。希望这对您有所帮助!

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);

关于c++ - 机器视觉 8 位 Bayer RGGB 到 Opencv 中的 RGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33756723/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com