Open CV 图像处理基础:(五)使用 Open CV 在 Java 中对图片使用绘图函数,分别绘制矩形、斜线、圆形、椭圆形以及添加文本

发布时间:2024年01月11日

使用 Open CV 在 Java 中对图片使用绘图函数,分别绘制矩形、斜线、圆形、椭圆形以及添加文本

函数

绘制矩形

Imgproc.rectangle(image, rectStart, rectEnd, rectColor, 3);

绘制线

Imgproc.line(image, lineStart, lineEnd, lineColor, 3);

绘制圆形

Imgproc.circle(image, circleCenter, radius, circleColor, -1);

绘制椭圆

Imgproc.ellipse(image, ellipseCenter, axes, 45, 0, 360, ellipseColor, 2);

添加文本

Imgproc.putText(image, text, textOrg, fontFace, fontScale, textColor, 2);

代码

这段代码首先加载了OpenCV的本地库,然后创建了一个400x400像素的黑色图像。之后,在图像上绘制了一个绿色的矩形、一个蓝色的斜线、一个红色的圆形、一个黄色的椭圆形,并添加了白色的文本“OpenCV”。


import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

import static org.opencv.imgproc.Imgproc.FONT_HERSHEY_COMPLEX;

public class ImageDrawing {
    static {
        // 加载 OpenCV 的本地库
        System.load("D:/dll/x64/opencv_java440.dll");
    }
    public static void main(String[] args) {
        String outPut = "D:/to/image_draw.jpg";
        // 创建一个空的Mat对象(图像)
        Mat image = Mat.zeros(new Size(400, 400), CvType.CV_8UC3);
        // 绘制矩形
        // 参数:目标图像,左上角点,右下角点,颜色(BGR格式),线条粗细
        Point rectStart = new Point(50, 50);
        Point rectEnd = new Point(150, 150);
        Scalar rectColor = new Scalar(0, 255, 0); // 绿色
        Imgproc.rectangle(image, rectStart, rectEnd, rectColor, 3);

        // 绘制斜线
        // 参数:目标图像,起点,终点,颜色,线条粗细
        Point lineStart = new Point(200, 50);
        Point lineEnd = new Point(300, 150);
        Scalar lineColor = new Scalar(255, 0, 0); // 蓝色
        Imgproc.line(image, lineStart, lineEnd, lineColor, 3);

        // 绘制圆形
        // 参数:目标图像,圆心,半径,颜色,线条粗细(负值代表填充)
        Point circleCenter = new Point(100, 300);
        int radius = 40;
        Scalar circleColor = new Scalar(0, 0, 255); // 红色
        Imgproc.circle(image, circleCenter, radius, circleColor, -1);

        // 绘制椭圆形
        // 参数:目标图像,椭圆中心,半轴长度,旋转角度,开始角度,结束角度,颜色,线条粗细
        Point ellipseCenter = new Point(300, 300);
        Size axes = new Size(50, 80);
        Scalar ellipseColor = new Scalar(255, 255, 0); // 黄色
        Imgproc.ellipse(image, ellipseCenter, axes, 45, 0, 360, ellipseColor, 2);

        // 添加文本
        // 参数:目标图像,文本内容,文本位置,字体类型,字体大小,颜色,线条粗细
        String text = "OpenCV";
        int fontFace = FONT_HERSHEY_COMPLEX;
        Point textOrg = new Point(50, 200);
        double fontScale = 1.0;
        Scalar textColor = new Scalar(255, 255, 255); // 白色
        Imgproc.putText(image, text, textOrg, fontFace, fontScale, textColor, 2);

        // 保存图像
        Imgcodecs.imwrite(outPut, image);

        // 注意:如果需要在窗口中直接显示图像,Java版OpenCV可能不包括HighGui模块。
        // 如果你的环境支持HighGui,你可以取消注释以下代码来显示图像:
         HighGui.imshow("Drawing Example", image);
         HighGui.waitKey(0);
    }
}

示例

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_35606010/article/details/135519285
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。