Open CV 图像处理基础:(五)Java 使用 Open CV 的绘图函数

news2024/11/24 13:05:10

Java 使用 Open CV 的绘图函数

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

Java 使用 Open CV 的绘图函数

  • Java 使用 Open CV 的绘图函数
    • 函数
      • 绘制矩形
      • 绘制线
      • 绘制圆形
      • 绘制椭圆
      • 添加文本
    • 代码
    • 示例

函数

绘制矩形

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);
    }
}

示例

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1373966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创新工具:2024年开发者必备的一款表格控件

前言 在现代工作环境中,信息的处理和管理是至关重要的。表格是一种常见的数据呈现和整理工具,被广泛应用于各行各业。然而,随着技术的不断发展,市场对表格控件的需求也越来越高。随着工作效率的重要性日益凸显,一款高…

卢森堡市场开发攻略,带你走进全球最富有的国家

卢森堡位于西欧,位于欧洲的十字路口,地理位置非常重要。卢森堡是高度发达的资本主义国家,人均gdp全球最高,是当之无愧的全球最富国家。卢森堡对外开放度高,很多产品依赖进口,也是一个非常不错的市场&#x…

Qt/Qt Creator窗体界面集成自定义类Ribbon工具栏-代码自定义实现-非第三方工具插件

程序示例精选 Qt/Qt Creator窗体界面集成自定义类Ribbon工具栏-完全代码自定义实现-非第三方工具插件 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Qt/Qt Creator窗体界面集成自定义类Ri…

小红书复盘思路总结,达人笔记投放规划

完成了一次小红书投放,是否任务就结束了?事实并非如此,投放的过程很重要的,但投放结束之后的复盘更重要。今天,我们针对小红书复盘思路总结,达人笔记投放规划!和大家来分享下。 小红书复盘思路主要可以分为…

计算数学表达式的程序(Java课程设计)

1. 课设团队介绍 团队名称 团队成 员介绍 任务分配 团队成员博客 XQ Warriors 徐维辉 负责计算器数据的算法操作,如平方数、加减乘除,显示历史计算记录 无 邱良厦(组长) 负责计算器的图形设计,把输入和结果显…

Python - Bert-VITS2 语音推理服务部署

目录 一.引言 二.服务搭建 1.服务配置 2.服务代码 3.服务踩坑 三.服务使用 1.服务启动 2.服务调用 3.服务结果 四.总结 一.引言 上一篇文章我们介绍了如果使用 conda 搭建 Bert-VITS2 最新版本的环境并训练自定义语音,通过 1000 个 epoch 的训练&#xf…

pandas笔记:找出在一个dataframe但不在另一个中的index

1 问题描述 假设我们有两个dataframe(这一段代码)来自transbigdata 笔记:官方文档案例1(出租车GPS数据处理)-CSDN博客 data tbd.clean_outofshape(data, sz, col[Lng, Lat], accuracy500) data data2 tbd.clean_ta…

Python爬虫之Scrapy框架系列(24)——分布式爬虫scrapy_redis完整实战【XXTop250完整爬取】

目录: 1.使用分布式爬取XX电影信息(1)settings.py文件中的配置:(2)spider文件的更改:(3)items.py文件(两个项目一致!):&am…

回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CPO-BP回归基于冠豪猪优化算法[24年新…

产品使用说明书也能进行SEO?要怎么制作才能使其易于搜索?

产品使用说明书也能进行SEO?是的,你没有听错,不过是在线化的产品使用说明书。产品使用说明书能通过特定的策略和技巧进行搜索引擎优化(SEO)。这不只是为了让产品信息更易被找到,更是为了提升品牌知名度和用…

【Linux】应用与驱动交互及应用间数据交换

一、应用程序与 Linux 驱动交互主要通过以下几种方式: 1. 系统调用接口(System Calls): 应用程序可以通过系统调用,如 open(), read(), write(), ioctl(), 等来与设备驱动进行交互。这些调用最终会通过内核转发到相应的驱动函数…

【分布式微服务专题】从单体到分布式(四、SpringCloud整合Sentinel)

目录 前言阅读对象阅读导航前置知识一、什么是服务雪崩1.1 基本介绍1.2 解决方案 二、什么是Sentinel2.1 基本介绍2.2 设计目的2.3 基本概念 三、Sentinel 功能和设计理念3.1 流量控制3.2 熔断降级3.3 系统负载保护 四、Sentinel 是如何工作的 笔记正文一、简单整合Sentinel1.1…

uniapp日期加减切换,点击切换

先上完成后的页面&#xff1a;当前年年份不显示&#xff0c;不然完整显示。 可以切换和自定义选择。 html:样式和图片自定义。 <view class"image-text_30"><image click"delMonth" :src"require(/static/home/zuo.png)" class"…

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!

原文链接 https://openaigptguide.com/gpt-store-and-chatgpt-team/ OpenAI推出的两款新产品和服务&#xff1a;GPT Store和ChatGPT Team&#xff0c;提供了许多全新的解决方案和功能&#xff0c;旨在帮助用户更轻松地使用和构建GPT工具&#xff0c;同时也增加了公司的收入来源…

VINS-MONO拓展2----更快地makeHessian矩阵(p_thread, OpenMP, CUDA, tbb)

1. 目标 完成大作业T2 作业提示&#xff1a; 多线程方法主要包括以下几种(参考博客)&#xff1a; MPI(多主机多线程开发),OpenMP(为单主机多线程开发而设计)SSE(主要增强CPU浮点运算的能力)CUDAStream processing, 之前已经了解过std::thread和pthread&#xff0c;拓展1…

Unity中URP下实现能量罩(交接处高亮)

文章目录 前言一、交接处高亮 原理1、 我们先用一个球作为能量罩、一个Cube 和 一个 椭球 作为与能量罩交接的物体2、 这是我们目前场景的深度图3、使能量罩为 半透明渲染队列 且 关闭深度写入 不渲染深度图 二、交接处高亮 实现1、得到深度图2、在片元着色器中&#xff0c;对深…

【Qt之Quick模块】8. Quick基础、布局管理、布局管理器

1. 前言 Qt Quick编程&#xff0c;提供了多种布局方式。 如&#xff0c;静态布局&#xff0c;可以使用组件的x、y属性进行设置&#xff0c;或者进行绑定。 还可以使用锚anchors进行布局。 此外&#xff0c;还可以使用定位器以及定位管理器为多组件进行布局。 但使用布局管理器…

OpenCV-20卷积操作

一、什么是图像卷积 图像卷积就是卷积在图像上按照滑动遍历像素时不断的相乘求和的过程。 绿色为图片&#xff0c; 黄色为卷积核&#xff0c; 粉色为最终得到的卷积特征。 二、步长 步长就是卷积核在图像上移动的步幅&#xff0c;每次移动一个方格则步幅为1。且一般为1。 若…

【hyperledger-fabric】搭建多机网络二进制安装部署Orderer节点

简介 根据b站教学视频去学习搭建多机网络二进制安装部署Orderer节点时遇到了一些问题&#xff0c;在这里对这些小问题进行处理。 问题描述以及解决方案 问题描述&#xff1a;日志报错信息Failed pulling the last config block: retry attempts exhausted channelfabric-cha…

计算机组成原理之计算机硬件发展和计算机系统的组成

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…