作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试将 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/
我知道有一个rawpy python库可以打开raw文件,但是为了修改像素数据,需要对raw中的原始数据进行去马赛克。谁能提供一种解决方案来交换编码为 BGGR 的 raw 文件的颜色 channel
目前我正在尝试将 Bayer RGGB 数据转换为 iplimage。我认为 cvtColor 可能有效,但它需要“mat”而不是 iplimage。 cvtColor(img->imageData,
我目前正在尝试将 8 位 Raw 彩色图像转换为 8 位 RGB。我收到一个 channel 错误,它希望拜耳成为 1 个 channel 。 我正在使用以下代码。 if (convertBayerC
我是一名优秀的程序员,十分优秀!