Java|Java OpenCV-4.0.0 图像处理04 图像形状与文字绘制


Java OpenCV-4.0.0 图像处理04 图像形状与文字绘制

【Java|Java OpenCV-4.0.0 图像处理04 图像形状与文字绘制】Java 使用OpenCV-4.0.0 图像中形状与文字绘制

package com.xu.opencv; import java.util.ArrayList; import java.util.List; import org.opencv.core.Core; 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; /** * * @Title: OpenCV002.java * @Package com.xu.opencv * @Description: TODO * @author: xuhyacinth * @date: 2019年1月26日 下午5:08:18 * @version V-1.0 * @Copyright: 2019 xuhyacinth * */ public class OpenCV002 { static { //在使用OpenCV前必须加载Core.NATIVE_LIBRARY_NAME类,否则会报错 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) { } /** * OpenCV-4.0.0 图像文字 * * @return: void * @date: 2019年1月26日 下午5:37:04 */ public static void text() { Mat src = https://www.it610.com/article/Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\2.jpg"); Imgproc.putText(src,"test text",new Point(60,60),Imgproc.FONT_HERSHEY_SCRIPT_SIMPLEX, 1.0, new Scalar(0, 255, 0),1,Imgproc.LINE_AA,false); HighGui.imshow("白蛇", src); HighGui.waitKey(1); } /** * OpenCV-4.0.0 图像画线 * @return: void * @date: 2019年1月17日 下午8:32:41 */ public static void line() { Mat src = https://www.it610.com/article/Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\2.jpg"); //Imgproc.line(待绘制图像,起始坐标,结束坐标,线条颜色,线条大小,线条类型) Imgproc.line(src, new Point(10, 50), new Point(100, 50), new Scalar(0, 0, 255), 2, 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 = https://www.it610.com/article/Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\2.jpg"); //ellipse(Mat,中心点,new Size(长半轴,短半轴),旋转角度,少画多少度,画多少度,线条颜色,线条样式) Imgproc.ellipse(src, new Point(200, 200), new Size(90, 50), 0, 0, 360, new Scalar(0, 0, 255), 2, 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 = https://www.it610.com/article/Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\2.jpg"); //rectangle(Mat,点1,点2,线条颜色) 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 = https://www.it610.com/article/Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\2.jpg"); //circle(Mat,圆心点,半径,线条颜色,线条样式) 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 = https://www.it610.com/article/Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\2.jpg"); List points = new ArrayList(); points.add(new Point(100,100)); points.add(new Point(200,50)); points.add(new Point(300,50)); points.add(new Point(400,100)); points.add(new Point(300,150)); points.add(new Point(200,150)); Point [] pointArray = new Point[points.size()]; for(int i = 0; i < points.size(); i++){ pointArray[i] = new Point(points.get(i).x, points.get(i).y); } MatOfPoint pointss = new MatOfPoint(pointArray); Imgproc.fillConvexPoly(src,pointss, new Scalar(0, 0, 255)); HighGui.imshow("白蛇", src); HighGui.waitKey(1); }}

函数解释: 以上测试的函数均为 org.opencv.imgproc.Imgproc 中的静态方法
//在图像中添加文字 putText( Mat img, // 待绘制图像 String text, // 要绘制在图像上的文字(暂时不支持中文) Point org, // 绘制的坐标 int fontFace, // 文字字体 Imgproc.FONT_*** double fontScale, // 文字尺寸大小 Scalar color, // 文字的颜色 int thickness, // 文字线条宽度 int lineType, // 文字线条样式 (如 Imgproc.LINE_AA 为抗锯齿) boolean bottomLeftOrigin // 文字对齐方式 )//在图像中绘制线条 line( Mat img, // 待绘制图像 Point pt1, // 直线起始坐标 Point pt2, // 直线结束坐标 Scalar color, // 线条颜色 int thickness, // 线条宽度 int lineType, // 线条样式 (如 Imgproc.LINE_AA 为抗锯齿) int shift // 坐标点的小数点位数 一般不要写 或者写1或0 )//在图像中绘制矩形 rectangle( Mat img, // 待绘制图像 Point pt1, // 顶点1 Point pt2, // 顶点2 (如果顶点1,2的Y轴坐标相同则为一条直线) Scalar color, // 线条颜色 int thickness, // 线条宽度 int lineType, // 线条样式 (如 Imgproc.LINE_AA 为抗锯齿) int shift // 一般不要写,或者写1或0 )//在图像中绘制椭圆 ellipse( Mat img, // 待绘制图像 Point center, // 椭圆圆心 Size axes, // new Size(长半轴,短半轴) double angle, // 椭圆旋转角度一般写 0 double startAngle, // 椭圆少画多少度 一般写 0 double endAngle, // 椭圆一共画多少度 一般写 360 Scalar color, // 线条颜色 int thickness, // 线条宽度 int lineType, // 线条样式 (如 Imgproc.LINE_AA 为抗锯齿) int shift // 一般不要写, 或者写1或0 )//在图像中绘制圆形 circle( Mat img, // 待绘制图像 Point center, // 圆心坐标 int radius, // 远的半径 Scalar color, // 线条颜色 int thickness, // 线条宽度 int lineType, // 线条样式 (如 Imgproc.LINE_AA 为抗锯齿) int shift // 一般不要写,或者写1或0 )//图像填充 fillConvexPoly( Mat img, // 待绘制图像 MatOfPoint points, // 绘制点 Scalar color, // 线条颜色 int lineType, // 线条样式 (如 Imgproc.LINE_AA 为抗锯齿) int shift // 一般不要写,或者写1或0 )

Java|Java OpenCV-4.0.0 图像处理04 图像形状与文字绘制
文章图片

    推荐阅读