在opencv中从Mat转换为位图

时间:2016-03-09 22:59:19

标签: c++ opencv image-processing bitmap mat

我正在制作一个执行以下操作的图像处理项目: 从我的电脑上加载图片 - 将位图转换为mat - 在垫子上做一些工作 - 将新垫转换为位图以显示在图片框中

现在的问题是当我看到加载图片的宽度和高度时。它显示宽度与高度相反,例如,如果我的图片是500宽度600高度,那么当我从图片显示这些变量 - >宽度和图片 - >高度显示宽度为600和高度是500

当我从位图更改为mat时,它适用于任何宽度和高度 但它没有相反的作用

所以此转换仅适用于具有相同宽度和高度的图像 任何其他宽度和高度不同的图像都会使代码崩溃

public:void convertmattobitmap(Mat mat){

FromMatToBitmap = gcnew Bitmap(mat.rows, mat.cols);
int red;
int green;
int blue;
Color c;
for (int x = 0; x < width; x++)
{
    for (int y = 0; y < height; y++)
    {
        try{
            red = mat.at<cv::Vec3b>(y, x)[2];
            green = mat.at<cv::Vec3b>(y, x)[1];
            blue = mat.at<cv::Vec3b>(y, x)[0];
            FromMatToBitmap->SetPixel(x, y, c.FromArgb(red, green, blue));
        }
        catch (exception e){
        }
    }

}

}

0 个答案:

没有答案