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

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 = 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 = 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 = 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 = 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 = 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 = Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\2.jpg");
		List<Point> points = new ArrayList<Point>();
		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 OpenCV-4.0.0 图像处理04 图像形状与文字绘制_第1张图片

你可能感兴趣的:(Java,OpenCV-4.X,图像处理,OpenCV,图形图像,Java,OpenCV-4.0.0)