别人没那么重要,我也没那么重要,好好活着,把能做的小事做好,够不到的东西就放弃,承认就好。做一个心情好能睡着的人,你所有事情都会在正轨上。

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日

------------------------------------------------------------------------------------------------------------*/

posted @ 2023-03-12 20:21  一路狂奔的乌龟  阅读(200)  评论(0)    收藏  举报
返回顶部