{"id":3293,"date":"2021-07-23T09:10:16","date_gmt":"2021-07-23T09:10:16","guid":{"rendered":"https:\/\/www.bearloga.space\/?page_id=3293"},"modified":"2021-07-23T09:10:17","modified_gmt":"2021-07-23T09:10:17","slug":"opencv-risovanie-vypuklyh-polilinij","status":"publish","type":"page","link":"https:\/\/www.bearloga.space\/en\/opencv-risovanie-vypuklyh-polilinij\/","title":{"rendered":"OpenCV \u2014 \u0420\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0445 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0439"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434&nbsp;<strong>fillconvexPoly ()<\/strong>&nbsp;\u043a\u043b\u0430\u0441\u0441\u0430&nbsp;<strong>imgproc<\/strong>&nbsp;.&nbsp;\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">fillConvexPoly(Mat img, MatOfPoint points, Scalar color)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u2014<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>mat<\/strong>&nbsp;\u2014 \u043e\u0431\u044a\u0435\u043a\u0442&nbsp;<strong>Mat,<\/strong>&nbsp;\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u044b \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0438.<\/li><li><strong>points<\/strong>&nbsp;\u2014 \u043e\u0431\u044a\u0435\u043a\u0442&nbsp;<strong>MatOfPoint,<\/strong>&nbsp;\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0442\u043e\u0447\u043a\u0438, \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u044b \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0438.<\/li><li><strong>\u0441\u043a\u0430\u043b\u044f\u0440<\/strong>&nbsp;\u2014&nbsp;<strong>\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0439<\/strong>&nbsp;\u043e\u0431\u044a\u0435\u043a\u0442, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0445 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0439.&nbsp;(\u0411\u0413\u0420)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>mat<\/strong>&nbsp;\u2014 \u043e\u0431\u044a\u0435\u043a\u0442&nbsp;<strong>Mat,<\/strong>&nbsp;\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u044b \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0438.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>points<\/strong>\u00a0\u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u00a0<strong>MatOfPoint,<\/strong>\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0442\u043e\u0447\u043a\u0438, \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u044b \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0438.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0441\u043a\u0430\u043b\u044f\u0440<\/strong>&nbsp;\u2014&nbsp;<strong>\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0439<\/strong>&nbsp;\u043e\u0431\u044a\u0435\u043a\u0442, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0445 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0439.&nbsp;(\u0411\u0413\u0420)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440<\/strong>&nbsp;\u043a\u043b\u0430\u0441\u0441\u0430&nbsp;<strong>MatOfPoint<\/strong>&nbsp;\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430&nbsp;<strong>Point<\/strong>&nbsp;.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">MatOfPoint(Point... a)\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u043f\u0440\u0438\u043c\u0435\u0440<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043a\u043d\u0430 JavaFX.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import java.awt.image.BufferedImage;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.InputStream;\nimport javax.imageio.ImageIO;\n\nimport javafx.application.Application;\nimport javafx.embed.swing.SwingFXUtils;\nimport javafx.scene.Group;\nimport javafx.scene.Scene;\nimport javafx.scene.image.ImageView;\nimport javafx.scene.image.WritableImage;\nimport javafx.stage.Stage;\n\nimport org.opencv.core.Core;\nimport org.opencv.core.Mat;\nimport org.opencv.core.MatOfByte;\nimport org.opencv.core.MatOfPoint;\nimport org.opencv.core.Point;\nimport org.opencv.core.Scalar;\nimport org.opencv.imgcodecs.Imgcodecs;\nimport org.opencv.imgproc.Imgproc;\n\npublic class FillConvexPoly extends Application {\n   Mat matrix = null;\n\n   @Override\n   public void start(Stage stage) throws Exception {\n      \/\/ Capturing the snapshot from the camera\n      FillConvexPoly obj = new FillConvexPoly();\n      WritableImage writableImage = obj.LoadImage();\n\n      \/\/ Setting the image view\n      ImageView imageView = new ImageView(writableImage);\n\n      \/\/ setting the fit height and width of the image view\n      imageView.setFitHeight(600);\n      imageView.setFitWidth(600);\n\n      \/\/Setting the preserve ratio of the image view\n      imageView.setPreserveRatio(true);\n\n      \/\/ Creating a Group object\n      Group root = new Group(imageView);\n\n      \/\/ Creating a scene object\n      Scene scene = new Scene(root, 600, 400);\n\n      \/\/ Setting title to the Stage\n      stage.setTitle(\"Drawing convex Polylines (fill) on the image\");\n\n      \/\/ Adding scene to the stage\n      stage.setScene(scene);\n\n      \/\/ Displaying the contents of the stage\n      stage.show();\n   }\n   public WritableImage LoadImage() throws Exception {\n      \/\/ Loading the OpenCV core library\n      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );\n\n      \/\/ Reading the Image from the file and storing it in to a Matrix object\n      String file =\"E:\/OpenCV\/chap8\/input.jpg\";\n      Mat matrix = Imgcodecs.imread(file);\n\n      MatOfPoint matOfPoint = new MatOfPoint (\n         new Point(75, 100), new Point(350, 100),\n         new Point(75, 150), new Point(350, 150),\n         new Point(75, 200), new Point(350, 200),\n         new Point(75, 250), new Point(350, 250)\n      ); \n      <strong>\/\/ Drawing polylines\n      Imgproc.fillConvexPoly (\n         matrix,                       \/\/ Matrix obj of the image\n         matOfPoint,                   \/\/ java.util.List&lt;MatOfPoint&gt; pts\n         new Scalar(0, 0, 255)         \/\/ Scalar object for color\n      );<\/strong>\n      \/\/ Encoding the image\n      MatOfByte matOfByte = new MatOfByte();\n      Imgcodecs.imencode(\".jpg\", matrix, matOfByte);\n\n      \/\/ Storing the encoded Mat in a byte array\n      byte[] byteArray = matOfByte.toArray();\n\n      \/\/ Displaying the image\n      InputStream in = new ByteArrayInputStream(byteArray);\n      BufferedImage bufImage = ImageIO.read(in);\n      this.matrix = matrix;\n            \n      \/\/ Creating the Writable Image\n      WritableImage writableImage = SwingFXUtils.toFXImage(bufImage, null);\n      return writableImage;\n   } \n   public static void main(String args[]) {\n      launch(args);\n   }\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 \u043f\u043e\u043b\u0438\u043b\u0438\u043d\u0438\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434&nbsp;fillconvexPoly ()&nbsp;\u043a\u043b\u0430\u0441\u0441\u0430&nbsp;imgproc&nbsp;.&nbsp;\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. fillConvexPoly(Mat img, MatOfPoint points, Scalar color) [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[108],"tags":[],"class_list":["post-3293","page","type-page","status-publish","hentry","category-opencv"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/pages\/3293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/comments?post=3293"}],"version-history":[{"count":0,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/pages\/3293\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/media?parent=3293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/categories?post=3293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/tags?post=3293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}