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); } }
效果圖
到此這篇關(guān)于Java OpenCV圖像處理之圖形與文字繪制的文章就介紹到這了,更多相關(guān)Java OpenCV繪制圖形 文字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java 讀取excel文件轉(zhuǎn)換成json格式的實例代碼
這篇文章主要介紹了 java 讀取excel文件轉(zhuǎn)換成json格式的實例代碼,需要的朋友可以參考下2018-04-04SpringBoot結(jié)合Redis哨兵模式的實現(xiàn)示例
這篇文章主要介紹了SpringBoot結(jié)合Redis哨兵模式的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04簡述Java中進(jìn)程與線程的關(guān)系_動力節(jié)點Java學(xué)院整理
在 Java 語言中,對進(jìn)程和線程的封裝,分別提供了 Process 和 Thread 相關(guān)的一些類。本文首先簡單的介紹如何使用這些類來創(chuàng)建進(jìn)程和線程2017-05-05spring cloud gateway使用 uri: lb://方式配置時,服務(wù)名的特殊要求
這篇文章主要介紹了spring cloud gateway使用 uri: lb://方式配置時,服務(wù)名的特殊要求,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12利用Java Apache POI 生成Word文檔示例代碼
本篇文章主要介紹了利用Java Apache POI 生成Word文檔示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05在IDEA中 實現(xiàn)給main方法附帶參數(shù)的操作
這篇文章主要介紹了在IDEA中 實現(xiàn)給main方法附帶參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01