C#OpenCV算子-矩阵操作
2.1 图像相加
函数原型:
void Add(InputArray src1, InputArray src2, OutputArray dst, InputArray? mask = null, int dtype = -1) /* 参数: src1:第一个输入图像。 src2:第二个输入图像。 dst:输出图片。 功能: 将两图像直接进行相加融合。 */
例子:
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Mat src2 = new Mat(@"C:\Users\Administrator\Desktop\2.jpg"); Mat dst = new Mat(); Cv2.Add(src1, src2, dst); Cv2.ImShow("test", dst); Cv2.WaitKey(); }
实验样例:
|
src1 |
src2 |
dst |
|
|
|
|
2.2 图像的均值及方差
函数原型:
void MeanStdDev(InputArray src, OutputArray mean, OutputArray stddev, InputArray? mask = null); /* 参数: src:输入图像 mean:每个通道的像素值均值 stddev:每个通道的像素值方差 mask:可选掩膜 功能: 计算图像中每个通道的均值及方差 */
例子
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Mat mean = new Mat(); Mat stdDev = new Mat(); Cv2.MeanStdDev(src1, mean, stddev); Console.WriteLine("mean:"); for(int i =0; i < mean.Rows; i++) { for(int j =0; j < mean.Cols; j++) { Console.Write(mean.Get<byte>(i, j)+" "); } } Console.WriteLine("\n" + "stddev:"; for(int i =0; i < stdDev.Rows; i++) { for(int j =0; j < stdDev.Cols; j++) { Console.Write(stdDev.Get<byte>(i, j)+" "); } } Console.ReadKey(); }
实验样例:
|
结果 |
|
|
2.3 图像融合
函数原型:
void AddWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1) /* 参数: src1,第一个输入图像。 alpha,第一个输入图像中元素权重。 src2第二个输入图像。 beta,第二个输入图像中元素权重。 gamma,图1与图2作和后添加的数值。 dst,输出图片。 功能: 将两图像按alpha和beta值进行线性融合。 */
例子:
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Mat src2 = new Mat(@"C:\Users\Administrator\Desktop\2.jpg"); Mat dst = new Mat(); Cv2.AddWeighted(src1, 0.4, src2, 0.6, 0, dst); Cv2.ImShow("test", dst); Cv2.WaitKey(); }
实验样例:
|
src1 |
src2 |
dst |
|
|
|
|
2.4 灰度拉伸
函数原型:
void ConvertScaleAbs(InputArray src, OutputArray dst, double alpha = 1, double beta = 0) /* 参数: src1,输入图像。 dst,输出图片。 alpha,乘数因子。 beta,偏移量。 功能: 将原图像中每个像素值按dst=alpha*src+bet进行计算输出。 */
例子:
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Mat dst = new Mat(); Cv2.ConvertScaleAbs(src1, dst, 1.5, 30); Cv2.ImShow("test", dst); Cv2.WaitKey(); }
实验样例:
|
Src1 |
dst |
|
|
|
2.5 颜色分割
函数原型:
void InRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst); /* 参数: src:输入图像。 lowerb:下阈值。 upperb:上阈值。 dst:输出图像 功能: 将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0)。 */
例子:
static void Main(string[] args) { Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg"); Mat dst = new Mat(); Cv2.InRange(src1, new Scalar(50, 50, 50), new Scalar(100, 150, 200), dst); Cv2.ImShow("test", dst); Cv2.WaitKey(); }
实验样例:
|
Src1 |
dst |
|
|
|
/*-------------------------------------------------------------------------------------------------------
笔者说明:
该笔记来源于本人学习OpenCvSharp时的资料,
分享出来只是为了供大家学习,并且为了自己以后想要用的时候方便寻找。
时间:2023年3月12日
------------------------------------------------------------------------------------------------------------*/

OpenSharp算子-矩阵操作











浙公网安备 33010602011771号