C#OpenCV算子-Mat函数成员
1.1 掩码操作
函数原型:
void CopyTo(InputArray src, OutputArray dst, InputArray? mask = null) /* 参数: src1,输入图像。 dst,输出图片。 alpha,乘数因子。 beta,偏移量。 功能: 带掩码的图片复制操作 */
例子:
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Mat mask = new Mat(@"C:\Users\Administrator\Desktop\2.jpg"); Mat dst = new Mat(); src1.CopyTo(dst,mask); Cv2.ImShow("test",dst); Cv2.WaitKey(); }
实验样例:
|
Src1 |
mask |
dst |
|
|
|
1.2 图片克隆
函数原型:
Mat Clone(Rect roi); /* 参数: roi:需要克隆的感兴趣区域。 输出Mat类型矩阵 功能: 将原图像中,感兴趣区部分的图像克隆出来。 */
例子:
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Mat dst = new Mat(); dst= src1.Clone(new Rect(50, 50, 200, 200)); Cv2.ImShow("test", dst); Cv2.WaitKey(); }
实验样例:
|
Src1 |
dst |
|
|
|
1.3 获取像素值
函数原型:
T Get<T>(int i0, int i1) where T : struct /* 参数: i0,沿着空间维度0索引。(可理解为行索引) i1,沿着空间维度1索引。(可理解为列索引) 功能: 安索引获取像素值 */
例子:
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Console.Write(src1.Get<byte>(0, 0)); Console.ReadKey(); }
实验样例:
|
Src1 |
结果 |
|
|
|
1.4 设置像素值
函数原型:
T Set<T>(int i0, int i1) where T : struct /* 参数: i0,沿着空间维度0索引。(可理解为行索引) i1,沿着空间维度1索引。(可理解为列索引) byte,设置值。 功能: 将图片中,索引(i0,i1)处的像素值改写为value值。 */
例子:
static void Main(string[] args) { byte[] b = new byte[6] {0, 1, 2, 3, 4, 5}; Mat src2 = new Mat(2, 3, MatType.CV_8UC1, b); src2.Set<byte>(0, 0, 6); for(int i = 0; i < src2.Rows; i++) { for(int j = 0; j < src2.Cols; j++) { Console.Write(src2.Get<byte>(i, j) + " " ); } Console.WriteLine(" "); } Console.ReadKey(); }
实验样例:
|
结果 |
|
|
1.5 颜射转换
函数原型:
void CvtColor(InputArray src, OutputArray dst, ColorConversionCodes code, int dstCn = 0) /* 参数: src: 输入图像即要进行颜色空间变换的原图像,可以是Mat类 . dst: 输出图像即进行颜色空间变换后存储图像,也可以Mat类 . code: 转换的代码或标识,即在此确定将什么制式的图片转换成什么制式的图片. dstCn = 0: 目标图像通道数,如果取值为0,则由src和code决定 功能: 转换图片的颜色空间 */
例子:
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Mat dst = new Mat(); Cv2.CvtColor(src1, dst, ColorConversionCodes.RGB2GRAY); Cv2.ImShow("test", dst); Cv2.WaitKey(); }
实验样例:
|
Src1 |
dst |
|
|
|
1.6 找最值
函数原型:
void MinMaxLoc(InputArray src, out double minVal, out double maxVal, out Point minLoc, out Point maxLoc, InputArray? mask = null) /* 参数: Src:输入图像 minVal:最小值 maxVal:最大值 minLoc:最小值位置 maxLock:最大值位置 mask:用于选择子阵列的可选掩膜 功能: 获得最大、最小值及其所在位置。 */
例子:
static void Main(string[] args) { byte[] b = new byte[6] {0, 1, 2, 3, 4, 5}; Mat src1 = new Mat(2, 3, MatType.CV_8UC1, b); Cv2.MinMaxLoc(src1, out double minVal, out double maxVal, out Point minLoc, out Point maxLoc); Console.WriteLine("minVal:" + minVal.ToString() + "\n"+ "maxVal:" + maxVal.ToString() + "\n"+ "minLoc:" + minLoc.ToString() + "\n" + "maxLoc:" + maxLoc.ToString() ); Console.ReadKey(); }
实验样例:
|
结果 |
|
|
1.7 归一化
函数原型:
void Normalize(InputArray src, InputOutputArray dst, double alpha = 1, double beta = 0, NormTypes normType = NormTypes.L2, int dtype = -1, InputArray? mask = null) /* 参数: src:输入图像 dst:输出结果图像 alpha:归一化后的最大值 normtype:归一化类型 dtype:有默认值-1,当此参数为负值时,输出矩阵和src有同样的类型,否则它和src有同样的通道数,且此时图像深度为cv_mat_depth. mask:可选的操作掩膜 功能: 进行矩阵的归一化。 */
/*-------------------------------------------------------------------------------------------------------
笔者说明:
该笔记来源于本人学习OpenCvSharp时的资料,
分享出来只是为了供大家学习,并且为了自己以后想要用的时候方便寻找。
时间:2023年3月12日
------------------------------------------------------------------------------------------------------------*/

OpenSharp算子-Mat函数成员










浙公网安备 33010602011771号