繁体   English   中英

图像格式转换opencv

[英]Image format conversion opencv

我正在做一个项目,它需要转换图像格式。 首先,我需要将图像从cv::Mat格式更改为Image<byte>格式,这是一种黑白框架。 以下代码显示了如何从cv::Mat更改为Image<byte>

void conversionNB(Mat frame, Image<byte> &imBW)
{ 
    Mat clone = frame.clone();
    Mat_<Vec3b>& frame_p = (Mat_<Vec3b>&)clone;
    for(int i = 0; i < 480; i++)
    {
        for(int j = 0; j < 640; j++)
        {
            imBW[i][j] = (frame_p(i,j)[0] + frame_p(i,j)[1] + frame_p(i,j)[2])/3;
        }
    }
} 

然后,在处理完图像后,我需要将图像更改回cv::Mat格式以显示它们。 有人知道如何根据代码从Image<byte>更改为cv::Mat吗?

PS Image<byte>是cvd库中的8位数据类型。

namespace CVD
{
   typedef unsigned char byte;
}
  1. Image<byte>更改为cv::Mat

    底图(rows,cols,CV_8UC1,(unsigned char *)imBW.data()); 用于灰度图像。

  2. 您的代码可能运行缓慢。 我们可以直接从未签名的char *数据创建cvd图像和opencv mat。

    void conversionNB(Mat&frame,Image&imBW){Mat cvd_image(frame.rows,frame.cols,CV_8UC1,(unsigned char *)imBW.data()); cvtColor(frame,frame,CV_BGR2GRAY); frame.copyTo(cvd_image); }

    void conversionRGB(Mat&frame,Image>&imRGB){Mat cvd_image(frame.rows,frame.cols,CV_8UC3,(unsigned char *)imRGB.data()); cvtColor(frame,frame,CV_BGR2RGB); frame.copyTo(cvd_image); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM