最专业的网站开发公司哪家最专业,php网站怎么做301跳转,网站怎么建立视频,python 网站开发 环境目录
1、创建图像
1.1实例1-创建黑色图像
1.2实例2-创建白色图像
1.3实例3-创建随机像素的雪花点图像
2、图像拼接
2.1水平拼接图像
2.2垂直拼接图像
2.3实例4-垂直和水平两种方式拼接两张图像 在OpenCV中#xff0c;黑白图像其实就是一个二维数组#xff0c;彩色图像…目录
1、创建图像
1.1实例1-创建黑色图像
1.2实例2-创建白色图像
1.3实例3-创建随机像素的雪花点图像
2、图像拼接
2.1水平拼接图像
2.2垂直拼接图像
2.3实例4-垂直和水平两种方式拼接两张图像 在OpenCV中黑白图像其实就是一个二维数组彩色图像就是一个三位数组。数组中的每个元素就是图像中对应位置的像素值。
1、创建图像
在黑白图像中像素值为0表示纯黑色像素值为255表示纯白色
1.1实例1-创建黑色图像
创建一个100行、200列即宽200、高100的黑色图像代码如下 int width 200; int height 100; Mat img Mat.Zeros(height, width, MatType.CV_8UC1); Cv2.ImShow(img, img); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 效果 方式二效果同上代码如下 int width 200; int height 100; int[] array new int[200 * 100]; Mat img new Mat(height, width, MatType.CV_8UC1, array); Cv2.ImShow(img, img); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 1.2实例2-创建白色图像
创建白色图像有多种方式
第一种利用Mat构造函数直接创建
第二种利用Mat.Ones方法创建一个像素值为1的图像然后将图像中所有像素值乘以255
第三种创建一个所有值都为255的数组利用数组创建图像
第四种利用SetTo方法
第一种代码如下 int width 200; int height 100; Mat img new Mat(new Size(width, height), MatType.CV_8UC1, Scalar.White); Cv2.ImShow(img, img); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 第二种代码如下 int width 200; int height 100; Mat img Mat.Ones(height, width, MatType.CV_8UC1) * 255; Cv2.ImShow(img, img); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 第三种代码如下 int width 200; int height 100; byte[] array new byte[width* height]; // 定义了长度为width* height的数组 for (int i 0; i array.Length; i) { array[i] 255; // 将每个元素赋值为255 } Mat img new Mat(height, width, MatType.CV_8UC1, array); Cv2.ImShow(img, img); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 第四种代码如下 int width 200; int height 100; Mat img new Mat(new Size(width, height), MatType.CV_8UC1); img.SetTo(new Scalar(255, 255, 255)); // 将背景设置为白色 Cv2.ImShow(img, img); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 效果 1.3实例3-创建随机像素的雪花点图像
代码如下 int width 200; int height 100; Mat img new Mat(height, width, MatType.CV_8UC1); Random random new Random(); for (int i 0; i height; i) { for (int j 0; j width; j) { byte blue (byte)(random.NextDouble() * 256); byte green (byte)(random.NextDouble() * 256); byte red (byte)(random.NextDouble() * 256); Vec3b color new Vec3b((byte)blue, (byte)green, (byte)red); img.AtVec3b(i, j) color; } } Cv2.ImShow(img, img); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 效果 改变一行代码创建彩色的随机图像代码如下 int width 200; int height 100; Mat img new Mat(height, width, MatType.CV_8UC3); Random random new Random(); for (int i 0; i height; i) { for (int j 0; j width; j) { byte blue (byte)(random.NextDouble() * 256); byte green (byte)(random.NextDouble() * 256); byte red (byte)(random.NextDouble() * 256); Vec3b color new Vec3b((byte)blue, (byte)green, (byte)red); img.AtVec3b(i, j) color; } } Cv2.ImShow(img, img); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 效果 2、图像拼接
OpenCvSharp中提供Cv2.HConcat、Cv2.VConcat方法实现图像拼接。
2.1水平拼接图像
Cv2.HConcat方法可以对图像进行水平拼接或者叫横向拼接其函数如下 public static void HConcat(IEnumerableMat src, OutputArray dst) 说明
摘要: Applies horizontal concatenation to given matrices.
参数: src: input array or vector of matrices. all of the matrices must have the same number of rows and the same depth. dst: output array. It has the same number of rows and depth as the src, and the sum of cols of the src.
2.2垂直拼接图像
Cv2.VConcat可以对图像进行垂直拼接或者叫纵向拼接其函数如下 public static void VConcat(IEnumerableMat src, OutputArray dst) 说明
摘要: Applies vertical concatenation to given matrices.
参数: src: input array or vector of matrices. all of the matrices must have the same number of cols and the same depth. dst: output array. It has the same number of cols and depth as the src, and the sum of rows of the src.
2.3实例4-垂直和水平两种方式拼接两张图像
代码如下 Mat mat Cv2.ImRead(test01.jpg); Cv2.ImShow(src, mat); Mat dst new Mat(); Cv2.VConcat(new Mat[] { mat, mat }, dst); Cv2.ImShow(img_v, dst); Cv2.HConcat(new Mat[] { mat, mat }, dst); Cv2.ImShow(img_h, dst); Cv2.WaitKey(); Cv2.DestroyAllWindows(); 效果