Java OpenCV图像处理之图形与文字绘制

目录
  • 前言
  • 核心代码
  • 效果图

前言

代码地址

序號 名稱 方法
1 圖像 添加文字 Imgproc.putText
2 圖像 畫直綫 Imgproc.line
3 圖像 畫橢圓 Imgproc.ellipse
4 圖像 畫矩形 Imgproc.rectangle
5 圖像 畫園 Imgproc.circle
6 圖像 填充 Imgproc.fillConvexPoly

核心代码

package com.xu.opencv.canva;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**
 * @version V-1.0
 * @Title: Canvas.java
 * @Package com.xu.opencv.canvas
 * @Description: TODO
 * @author: hyacinth
 * @date: 2019年1月26日 下午5:08:18
 * @Copyright: 2019 hyacinth
 */
public class Canvas {

    static {
        String os = System.getProperty("os.name");
        String type = System.getProperty("sun.arch.data.model");
        if (os.toUpperCase().contains("WINDOWS")) {
            File lib;
            if (type.endsWith("64")) {
                lib = new File("lib\\OpenCV-455\\x64\\" + System.mapLibraryName("opencv_java455"));
            } else {
                lib = new File("lib\\OpenCV-455\\x86\\" + System.mapLibraryName("opencv_java455"));
            }
            System.load(lib.getAbsolutePath());
        }
    }

    public static void main(String[] args) {
        fillPoly();
    }

    /**
     * OpenCV-4.0.0 图像文字
     *
     * @return: void
     * @date: 2019年1月26日 下午5:37:04
     */
    public static void putText() {
        Mat src = Imgcodecs.imread("D:\\OneDrive\\桌面\\5.jpeg");
        Imgproc.putText(src, "test text", new Point(60, 60), Imgproc.FONT_HERSHEY_SIMPLEX, 1.0, new Scalar(0, 255, 0), 1, Imgproc.LINE_AA, false);
        HighGui.imshow("putText", src);
        HighGui.waitKey(1);
    }

    /**
     * OpenCV-4.0.0 图像画线
     *
     * @return: void
     * @date: 2019年1月17日 下午8:32:41
     */
    public static void line() {
        Mat src = Imgcodecs.imread("D:\\OneDrive\\桌面\\5.jpeg");
        Imgproc.line(src, new Point(10, 50), new Point(100, 50), new Scalar(0, 0, 255), 1, Imgproc.LINE_AA);
        HighGui.imshow("图像画线", src);
        HighGui.waitKey(1);
    }

    /**
     * OpenCV-4.0.0 图像椭圆
     *
     * @return: void
     * @date: 2019年1月17日 下午8:32:56
     */
    public static void ellipse() {
        Mat src = Imgcodecs.imread("D:\\OneDrive\\桌面\\5.jpeg");
        Imgproc.ellipse(src, new Point(200, 200), new Size(90, 50), 0, 0, 360, new Scalar(0, 0, 255), 1, Imgproc.LINE_AA);
        HighGui.imshow("图像椭圆", src);
        HighGui.waitKey(1);
    }

    /**
     * OpenCV-4.0.0 图像矩形
     *
     * @return: void
     * @date: 2019年1月17日 下午8:33:08
     */
    public static void rectangle() {
        Mat src = Imgcodecs.imread("D:\\OneDrive\\桌面\\5.jpeg");
        Imgproc.rectangle(src, new Point(10, 10), new Point(200, 200), new Scalar(0, 255, 0));
        HighGui.imshow("图像矩形", src);
        HighGui.waitKey(1);
    }

    /**
     * OpenCV-4.0.0 图像画圆
     *
     * @return: void
     * @date: 2019年1月17日 下午8:33:27
     */
    public static void circle() {
        Mat src = Imgcodecs.imread("D:\\OneDrive\\桌面\\5.jpeg");
        Imgproc.circle(src, new Point(50, 50), 20, new Scalar(0, 255, 0), 2, Imgproc.LINE_8);
        HighGui.imshow("图像画圆", src);
        HighGui.waitKey(1);
    }

    /**
     * OpenCV-4.0.0 图像填充
     *
     * @return: void
     * @date: 2019年1月26日 下午6:25:55
     */
    public static void fillPoly() {
        Mat src = Imgcodecs.imread("D:\\OneDrive\\桌面\\5.jpeg");
        // 1
        List<Point> points1 = new ArrayList<>();
        points1.add(new Point(0, 100));
        points1.add(new Point(50, 50));
        points1.add(new Point(100, 100));
        points1.add(new Point(150, 50));
        points1.add(new Point(200, 100));
        points1.add(new Point(100, 250));
        Point[] array = points1.stream().toArray(Point[]::new);
        MatOfPoint point = new MatOfPoint(array);
        Imgproc.fillConvexPoly(src, point, new Scalar(0, 255, 0), Imgproc.LINE_AA);
        // 2
        List<Point> points2 = new ArrayList<>();
        points2.add(new Point(100, 100));
        points2.add(new Point(150, 50));
        points2.add(new Point(200, 100));
        Imgproc.fillConvexPoly(src, new MatOfPoint(points2.stream().toArray(Point[]::new)), new Scalar(0, 255, 0), Imgproc.LINE_AA);

        HighGui.imshow("图像填充", src);
        HighGui.waitKey(1);
    }

}

效果图

到此这篇关于Java OpenCV图像处理之图形与文字绘制的文章就介绍到这了,更多相关Java OpenCV绘制图形 文字内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java OpenCV实现图像镜像翻转效果

    本文实例为大家分享了Java OpenCV实现图像镜像翻转效果的具体代码,供大家参考,具体内容如下 主要使用OpenCV的flip()方法,可以实现图像的垂直.水平以及同时垂直镜像翻转. flip是Core的静态方法,用法为: public static void flip(Mat src, Mat dst, int flipCode) 参数说明: src:输入图像: dst:输出图像: flipCode: = 0 图像向下翻转 > 0 图像向右翻转 < 0 图像同时向下向右翻转 代码如下:

  • Java OpenCV图像处理之自定义图像滤波算子

    目录 示例代码 效果图 示例代码 package com.xu.image; import java.io.File; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.Point; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Img

  • Java OpenCV利用KNN算法实现图像背景移除

    目录 实现步骤 示例代码 结果图 实现步骤 1 获取视频 2 设置形态学结构 3 创建 Video.createBackgroundSubtractorKNN() 4 提取模型 BS 5 进行形态学变换 6 膨胀 7 二值化 8 展示结果 示例代码 package com.xu.opencv; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional

  • Java OpenCV图像处理之背景消除

    目录 实现步骤 主要代码 效果图 实现步骤 1.获取视频 2.设置形态学结构 3.创建Video.createBackgroundSubtractorMOG2() 4.提取模型 BS 5.进行形态学变换 6.展示结果 主要代码 package com.xu.opencv; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; import ja

  • Java OpenCV图像处理之背景切换

    目录 实现步骤 函数详解 示例代码 效果图 实现步骤 1 读取原图片 2 获取原图片的mask 3 获取原图片需要获取的ROI 4 获取新背景的mask 5 融合 3,5 函数详解 示例代码 package com.xu.opencv; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.Scalar; import org.opencv.highgui.HighGui; import o

  • Java OpenCV图像处理之SIFT角点检测详解

    目录 介绍 示例代码 效果图 补充 介绍 在某些情况下对图像进行缩放后,角点信息可能会丢失,这时候Harri便不能检测到所有的角点.SIFT(scale-invariant feature transform) 刚好克服了这个问题,对图像特征的检测,尽量不受图像尺寸变化的影响.SIFT并不直接检测关键点. 其中关键点的检测是由DOG(Difference of Gaussians)检测完成的(DOG是通过不同的高斯滤波器对同一张图像进行处理,来得到关键点的).SIFT仅通过特征向量来描述特征点周

  • Java OpenCV图像处理之图形与文字绘制

    目录 前言 核心代码 效果图 前言 代码地址 序號 名稱 方法 1 圖像 添加文字 Imgproc.putText 2 圖像 畫直綫 Imgproc.line 3 圖像 畫橢圓 Imgproc.ellipse 4 圖像 畫矩形 Imgproc.rectangle 5 圖像 畫園 Imgproc.circle 6 圖像 填充 Imgproc.fillConvexPoly 核心代码 package com.xu.opencv.canva; import java.io.File; import ja

  • Java OpenCV图像处理之仿射变换,透视变换,旋转详解

    目录 1 仿射变换 2 透视变换 3 图像旋转 1 仿射变换 仿射变换:一种二维坐标到二维坐标的线性变换,它保持二维图像的平直性与平行性,即变换后直线依然是直线,平行的线依然平行. package com.xu.opencv.image; import java.io.File; import java.util.ArrayList; import java.util.List; import org.opencv.core.Mat; import org.opencv.core.MatOfPo

  • Python OpenCV实现基本图形绘制

    1.导入模块 import cv2 as cv import numpy as np 2.OpenCV绘图大致步骤 OpenCV 图形绘制步骤 (1)先定义基础画布canvas = np.zeros((400,600,3),dtype=np.uint8)+255 (2)画布分界,(300,0)分别是宽.高cv.line(canvas,(300,0),(300,399),(0,0,0,),2) (3)在画布上绘制图形,如画圆cv.circle(canvas, (150, 300), 88, (0,

  • Python OpenCV学习之图形绘制总结

    目录 背景 一.画线 二.画矩形 三.画圆 四.画多边形 五.画文本 六.鼠标绘制 总结 背景 使用OpenCV进行图形绘制是一种必备的技能,在图像的任务中,不管是图像检测还是图像识别,我们都需要通过绘制图形和绘制文字对处理的结果进行说明,本篇就详细介绍下图形的绘制: 一.画线 line(图像,起始点,终点,颜色,线宽,线形):一般只需要前面四个参数即可: 代码案例: cv2.line(img, (20, 100), (20, 500), (0,0,255)) 画出了一条Y方向上的红色线段: 二

  • Python+OpenCV图像处理之直方图统计

    目录 1. 直方图概述 (1)基本概念 (2)直方图中的术语 2. 直方图绘制 (1)读取图像信息 (2)绘制直方图 3. 掩膜直方图 (1)基本概念 (2)实现代码 4. H-S 直方图 (1)基本概念 (2)绘制二维H-S直方图 1. 直方图概述 (1)基本概念 直方图就是对图像的另外一种解释,它描述了整幅图像的灰度分布.直方图的 x 轴代表灰度值(0~255),y 轴代表图片中同一种灰度值的像素点的数目,所以通过直方图我们可以对图像的亮度.灰度分布.对比度等有了一个直观的认识 (2)直方图

  • Java swing 图像处理多种效果实现教程

    项目记录: 1.图像原理 通常图像都是2D,对一副图像,可以看做其宽w*高h的一个二维数组, 即 图像=int[w][h],在w和h位置的每一个 int 值,就是这个点的像素值. 图像处理的本质是:对代表图像二维数组中的值进行重新计算. 2.思路: 将一张图片转化成一个int型癿二维数组 对于每一个像素点大小和颜色进行计算达到图像处理的效果. 在画笔中设置好颜色,填充形状然后将新的图片画出. 3.实现效果 获取像素点方法,首先利用文件imageIO读取图片,然后根据图片长宽进行遍历得到每个像素点

随机推荐