首页 > 其他分享 >OpenCV Mat和Bitmap的转换

OpenCV Mat和Bitmap的转换

时间:2023-11-29 17:01:03浏览次数:25  
标签:Mat opencv Cv2 jpg Bitmap OpenCV images

最常用的方式是:

Cv2.ImRead() 可以将位图文件转成Mat数据格式
Cv2.ImWrite() 可以将Mat数据格式保存到位图文件.

不通过读写文件作为转换介质的方法:

private void testMatToPicture()
{
    var mat = Cv2.ImRead("D:\\my_workspace\\opencv\\images\\lena.jpg", ImreadModes.Color);

    //方法1: Mat -> Bitmap class
    Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat);
    bitmap.Save("D:\\my_workspace\\opencv\\images\\1lena3.jpg", ImageFormat.Jpeg);

    //方法2: Mat -> byte[]
    byte[] bytes = mat.ToBytes(".jpg");            
    System.IO.File.WriteAllBytes("D:\\my_workspace\\opencv\\images\\1lena4.jpg", bytes);
}

private void testPictureToMat()
{
    // byte[] -> Mat
    var bytes = System.IO.File.ReadAllBytes("D:\\my_workspace\\opencv\\images\\lena.jpg");
    var colorMat = Mat.FromImageData(bytes, ImreadModes.Color);
    var grayMat = Mat.FromImageData(bytes, ImreadModes.Grayscale);

    // Bitmap class -> Mat
    Bitmap bitmap = new Bitmap("D:\\my_workspace\\opencv\\images\\lena.jpg");
    var mat2 = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap);

    Cv2.ImShow("colorMat", colorMat);
    Cv2.ImShow("grayMat", grayMat);
    Cv2.ImShow("mat2", mat2);
    Cv2.WaitKey();
    Cv2.DestroyAllWindows();
    )
}

标签:Mat,opencv,Cv2,jpg,Bitmap,OpenCV,images
From: https://www.cnblogs.com/harrychinese/p/17865302.html

相关文章

  • linux安装MAT(MemoryAnalyzerTool)工具
    下载地址:EclipseMemoryAnalyzerOpenSourceProject|TheEclipseFoundation注意:1.12.0Release需要JDK11参数配置在配置的部分,我们主要配置的是ParseHeapDump.sh脚本中的内存参数。在脚本的最后一行的最后面,加上如下的参数-vmargs-Xmx30g-XX:-UseGCOverhea......
  • Windows10+Qt+OpenCV出现“ACCESS_MASK”: 不明确的符号
    一、概述背景:Qt+OpenCV一模一样的代码在Mac上运行是正常的,在Windows10上运行就会报一下错误。“ACCESS_MASK”:不明确的符号二、原因及解决方案原因:OpenCV4.5.3的命名空间usingnamespacecv;和windows中的ACCESS_MASK定义冲突,在windows.h头文件中。......
  • Opencv学习笔记(2)
    图像处理是图像识别过程中重要一环,一张图像可能包括海量的不明确的信息,图像处理的目的是消除图像中无关的信息,恢复有用的真实信息,增强有效信息的可检测性,最大限度地简化数据。参考知乎文章链接:https://zhuanlan.zhihu.com/p/547096645主要学习图像处理的一些手段和方法1、图像......
  • 学习笔记434—【Matlab】Matlab读取dcm图像的函数
    【Matlab】Matlab读取dcm图像的函数Matlab版本:2020a一、dicomread函数Matlab读取dcm图像的函数是dicomread,根据dicomread的帮助文档,该函数有四种参数输入方式:X=dicomread(filename);%根据文件名直接读取X=dicomread(info);%根据构造的info结构体读取X=dicomrea......
  • linux安装opencv
    安装步骤:1、去官方网站下载使用的压缩包: https://opencv.org/releases.html2、上传到服务器并解压文件cd/usr/local/unzipopencv-2.4.13.zip3、创建编译目录,用于存放编译文件在/usr/local/下mkdiropencv4、安装和配置依赖支持如果没有cmake,去cmake的官网http://cmake......
  • MATLAB Bessel函数的零点计算
    0~9阶的贝塞尔函数零点的计算公式,其中理论上计算零点个数N在50以内时较为精确:Airy光束,基模高斯光束Bessel光束经过大气湍流相位屏的传输特性functionrootBessel=besal_pi0(n,N)%求解n阶贝塞尔函数的零点(0-9)%n为贝塞尔函数阶数%N为要求的零点数量j=zeros......
  • matplotlib之rcParams字典
    在Matplotlib库中,mpl.rcParams是一个字典,用于配置Matplotlib的默认参数。通过修改这些参数,你可以自定义图形的外观和行为。1.字体相关设置:font.family:字体系列,默认为"sans-serif"。font.sans-serif:无衬线字体,用于显示文本,默认为"DejaVuSans"。font.serif:衬线字体,......
  • 基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览   将FPGA的仿真结果导入到matlab显示图像效果   2.算法运行软件版本MATLAB2022a,vivado2019.2 3.算法理论概述       基于FPGA的图像Sobel锐化实现,是一种通过使用Sobel算子对图像进行边缘检测,从而提高图像清晰度的方法。Sobel......
  • 正则表达式match函数的使用
    #正则表达式的作用,例如:判断登录名是否几位数,是都由数字字母组成等等#元字符:具有特殊意义的专用字符,例如:‘^'和'$',分别表示匹配开始和结束。#限定符:用于限定匹配的次数#其他符#re模块在Python中使用正则表达式操作#re函数的几种格式#re.match(pattern,string,flags=0):用于......
  • 【Python】【OpenCV】傅里叶变换
    之前的随笔中使用了C++来编写算法底层逻辑,这次我们直接使用OpenCV和Numpy和Scipy所提供的方法直接调用实现1importcv22importnumpy3fromscipyimportndimage45kernel_3=numpy.array([6[-1,-1,-1],7[-1,8,-1],8[-1,-1,-1]9])......