×
OpenCV教程OpenCV简介OpenCV开发环境配置OpenCV存储图像OpenCV读取图像OpenCV写入图像OpenCV用户界面

图像类型

OpenCV MREAD_XXX标记OpenCV将图像读取为灰度OpenCV读取图像为BGR

图像转换

OpenCV彩色图像转为灰度OpenCV彩色图像转为二进制OpenCV灰度转为二进制

绘图函数

OpenCV绘制圆形OpenCV绘制线条OpenCV绘制四方形OpenCV绘制椭圆形OpenCV绘制折线OpenCV绘制凸折线OpenCV绘制箭头线OpenCV添加文本

模糊功能

OpenCV模糊(平滑)OpenCV高斯模糊OpenCV中位模糊

过滤功能

OpenCV双边滤镜OpenCV箱式滤镜OpenCV SQRBox滤镜OpenCV Filter2DOpenCV扩张OpenCV侵蚀OpenCV形态学操作OpenCV图像金字塔

阈值

OpenCV简单阈值OpenCV自适应阈值

索贝尔衍生品

OpenCV添加边框OpenCV索贝尔操作OpenCV Scharr操作

变换操作

OpenCV拉普拉斯变换OpenCV距离转换

相机和人脸检测

OpenCV使用摄像头OpenCV图片人脸检测OpenCV摄像头人脸检测

几何变换

OpenCV仿射转换OpenCV旋转OpenCV缩放OpenCV彩色映射图

杂篇

OpenCV Canny边缘检测OpenCV霍夫线变换OpenCV直方图均衡

OpenCV绘制凸折线


可以使用imgproc类的fillconvexPoly()方法在图像上绘制凸多段线。 以下是此方法的语法。

fillConvexPoly(Mat img, MatOfPoint points, Scalar color)

该方法接受以下参数 -

  • mat - 表示要在其上绘制矩形的图像的Mat对象。
  • points - 一个MatOfPoint对象,表示要在其间绘制凸多段线的点。
  • color - 表示矩形颜色的标量对象(BGR)。

MatOfPoint类的构造函数接受Point类的对象。

MatOfPoint(Point a)

示例

以下程序演示如何在图像上绘制凸多段线并使用JavaFX窗口显示它。

package yiibai.com;

import java.awt.image.BufferedImage;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.imageio.ImageIO;

import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class FillConvexPoly extends Application {
   Mat matrix = null;

   @Override
   public void start(Stage stage) throws Exception {
      // Capturing the snapshot from the camera
      FillConvexPoly obj = new FillConvexPoly();
      WritableImage writableImage = obj.LoadImage();

      // Setting the image view
      ImageView imageView = new ImageView(writableImage);

      // setting the fit height and width of the image view
      imageView.setFitHeight(600);
      imageView.setFitWidth(600);

      //Setting the preserve ratio of the image view
      imageView.setPreserveRatio(true);

      // Creating a Group object
      Group root = new Group(imageView);

      // Creating a scene object
      Scene scene = new Scene(root, 600, 400);

      // Setting title to the Stage
      stage.setTitle("Drawing convex Polylines (fill) on the image");

      // Adding scene to the stage
      stage.setScene(scene);

      // Displaying the contents of the stage
      stage.show();
   }
   public WritableImage LoadImage() throws Exception {
      // Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="F:/worksp/opencv/images/sample2.jpg";
      Mat matrix = Imgcodecs.imread(file);

      MatOfPoint matOfPoint = new MatOfPoint (
         new Point(75, 100), new Point(350, 100),
         new Point(75, 150), new Point(350, 150),
         new Point(75, 200), new Point(350, 200),
         new Point(75, 250), new Point(350, 250)
      ); 
      // Drawing polylines
      Imgproc.fillConvexPoly (
         matrix,                       // Matrix obj of the image
         matOfPoint,                   // java.util.List<MatOfPoint> pts
         new Scalar(0, 0, 255)         // Scalar object for color
      );
      // Encoding the image
      MatOfByte matOfByte = new MatOfByte();
      Imgcodecs.imencode(".jpg", matrix, matOfByte);

      // Storing the encoded Mat in a byte array
      byte[] byteArray = matOfByte.toArray();

      // Displaying the image
      InputStream in = new ByteArrayInputStream(byteArray);
      BufferedImage bufImage = ImageIO.read(in);
      this.matrix = matrix;

      // Creating the Writable Image
      WritableImage writableImage = SwingFXUtils.toFXImage(bufImage, null);
      return writableImage;
   } 
   public static void main(String args[]) {
      launch(args);
   }
}

在执行上述程序时,您将得到以下输出 -


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)