文章目录
- 前言
- 获得图像
- 一、使用Imgcodecs.imread()读取图片
- 二、关于imread()方法参数
- 三、关于cvtColor()方法
- 四、Utils.texture2DToMat()方法
- 保存图像
- 五、imwrite()保存图片:
前言
OpenCV工具主要是对于图像的处理,今天我们简单的来介绍一下如何获取一张图片,如何去储存一张图片。
介绍一些简单操作为后面的课程做准备,那么我们开始…
获得图像
一、使用Imgcodecs.imread()读取图片
Imgcodecs.imread()方法会读取制定地址上的图片文件,下面是一个读取并显示的例子:
string readPath = Application.dataPath + "/OpenCVForUnity/Examples/Resources/AA.png";
Mat A = Imgcodecs.imread(Utils.getFilePath(readPath), Imgcodecs.IMREAD_COLOR);
Imgproc.cvtColor(A, A, Imgproc.COLOR_RGB2BGR);
Texture2D textureA = new Texture2D(A.cols(), A.rows(), TextureFormat.RGBA32, false);
//将Mat的图片写入Texture2D中
Utils.matToTexture2D(A, textureA);
//显示出图片
objA.GetComponent<Renderer>().material.mainTexture = textureA;
输出效果:
二、关于imread()方法参数
第一个参数为路径
第二个参数为加载模式,如:
IMREAD_UNCHANGED 原样加载,四通道(如有第四通道)
IMREAD_GRAYSCALE 图片像强度加载(黑白图)
IMREAD_COLOR 图片以RGB模式加载
三、关于cvtColor()方法
由于openCV默认的储存方式是BGR.所以我们要把顺序调换过来
参数一:源Mat 参数二:目标Mat 参数三:转换模式
如果不使用这个方法,将输出效果如下:
OpenCV支持多种图像格式:
1.包括Windows位图(BMP)
2.便携式图像格式(PBM、PGM、PPM)
3.Sun光栅(SR、RAS)。
4.默认情况下加载JPEG(JPEG、JPG、JPE)、JPEG2000(JP2,使用CMake进行编码)
5.TIFF文件(TIFF、TIF)和便携式网络图形(PNG),并且还支持OpenEXR格式。
如果您建立自己的库,需要指定使用这些插件才能够支持它们。
四、Utils.texture2DToMat()方法
这个方法主要是把图片Texture2D写入Mat中
Texture2D imgTexture = Resources.Load("AA") as Texture2D;
Mat A = new Mat(imgTexture.height, imgTexture.width, CvType.CV_8UC4);
Utils.texture2DToMat(imgTexture, A);
//创建图片
Texture2D textureA = new Texture2D(A.cols(), A.rows(), TextureFormat.RGBA32, false);
//将Mat的图片写入Texture2D中
Utils.matToTexture2D(A, textureA);
//显示出图片
objA.GetComponent<Renderer>().material.mainTexture = textureA;
保存图像
五、imwrite()保存图片:
imwrite()可以用于保存图片,下面的例子是读取了图片时用的黑白模式,然后直接保存在制定地址
string readPath = Application.dataPath + "/OpenCVForUnity/Examples/Resources/AA.png";
string WritePath = Application.dataPath + "/OpenCVForUnity/Examples/Resources/AA1.png";
Mat A = Imgcodecs.imread(Utils.getFilePath(readPath), Imgcodecs.IMREAD_GRAYSCALE);
Texture2D textureA = new Texture2D(A.cols(), A.rows(), TextureFormat.RGBA32, false);
//写入图片
Imgcodecs.imwrite(WritePath, A);
关于imwrite方法
第一个参数为路径
第二个参数为要保存内容的Mat
运行结果输出的图片: