OpencvSharp快速入门 | 1.基础图像操作

发布时间 2023-11-23 21:45:00作者: 阿遇而已

OpencvSharp基础图像操作

一、读取图像

  • 基础函数: Cv2.ImRead(string path, ImreadModes flags)
  • 功能描述: 从文件中读取图像。
  • 参数类型:
    • path (string): 图像文件的路径。
    • flags (ImreadModes): 读取图像的标志,例如ImreadModes.Color表示以彩色模式读取图像。
  • 返回对象: Mat (图像矩阵)
  • 操作实例:
    Mat image = Cv2.ImRead("path_to_image.jpg", ImreadModes.Color);
    Cv2.ImShow("Loaded Image", image);
    Cv2.WaitKey(0);
    

二、保存图像

  • 基础函数: Cv2.ImWrite(string filename, Mat img, params int[] parameters)
  • 功能描述: 将图像保存到文件中。
  • 参数类型:
    • filename (string): 保存图像的文件路径。
    • img (Mat): 要保存的图像。
    • parameters (int[]): 保存参数,可选。
  • 返回对象: 无
  • 操作实例:
    Cv2.ImWrite("saved_image.jpg", image);
    

三、显示图像

  • 基础函数: Cv2.ImShow(string winname, Mat mat)
  • 功能描述: 在窗口中显示图像。
  • 参数类型:
    • winname (string): 窗口的名称。
    • mat (Mat): 要显示的图像。
  • 返回对象: 无
  • 操作实例:
    Cv2.ImShow("Displayed Image", image);
    Cv2.WaitKey(0);
    

四、获取图像属性

  • 基础函数: 无
  • 功能描述: 可以通过Mat对象的属性来获取图像的属性,如宽度、高度、通道数等。
  • 参数类型: 无
  • 返回对象: 无
  • 操作实例:
    int width = image.Width;
    int height = image.Height;
    int channels = image.Channels();
    

五、创建图像

  • 基础函数: Mat ones = Mat.Ones(Size size, MatType type)
  • 功能描述: 创建指定尺寸和类型的新图像。
  • 参数类型:
    • size (Size): 图像的尺寸。
    • type (MatType): 图像的类型。
  • 返回对象: Mat (新创建的图像)
  • 操作实例:
    Mat newImage = Mat.Ones(new Size(100, 100), MatType.CV_8UC3);
    

六、裁剪图像

  • 基础函数: Mat cropped = new Mat(source, new OpenCvSharp.Rect(x, y, width, height))
  • 功能描述: 从原图像中裁剪出指定区域的图像。
  • 参数类型:
    • source (Mat): 原图像。
    • x, y (int): 裁剪区域的左上角坐标。
    • width, height (int): 裁剪区域的宽度和高度。
  • 返回对象: Mat (裁剪得到的图像)
  • 操作实例:
    Mat croppedImage = new Mat(image, new OpenCvSharp.Rect(100, 100, 200, 200));
    

七、拼接图像

  • 基础函数: Cv2.HConcat(IEnumerable<Mat> src, Mat dst)
  • 功能描述: 将多个图像水平拼接成一张图像。
  • 参数类型:
    • src (IEnumerable): 要拼接的源图像列表。
    • dst (Mat): 拼接后的目标图像。
  • 返回对象: 无
  • 操作实例:
    Mat[] imagesToConcat = { image1, image2, image3 };
    Mat concatenatedImage = new Mat();
    Cv2.HConcat(imagesToConcat, concatenatedImage);
    

八、通道拆分

  • 基础函数: Cv2.Split(Mat src, out Mat[] mv)
  • 功能描述: 将多通道图像拆分成单通道图像。
  • 参数类型:
    • src (Mat): 原图像。
    • mv (out Mat[]): 拆分后的单通道图像数组。
  • 返回对象: 无
  • 操作实例:
    Mat[] channels;
    Cv2.Split(image, out channels);
    

九、通道合并

  • 基础函数: Cv2.Merge(IEnumerable<Mat> mv, Mat dst)
  • 功能描述: 将多个单通道图像合并成多通道图像。
  • 参数类型:
    • mv (IEnumerable): 要合并的单通道图像列表。
    • dst (Mat): 合并后的目标多通道图像。
  • 返回对象: 无
  • 操作实例:
    Mat[] channelsToMerge = { channel1, channel2, channel3 };
    Mat mergedImage = new Mat();
    Cv2.Merge(channelsToMerge, mergedImage);
    

这些基础操作可以帮助您开始使用OpencvSharp库进行图像处理。