首页 > 编程语言 >java opencv绘制工字型

java opencv绘制工字型

时间:2023-08-12 15:00:20浏览次数:43  
标签:工字型 java 50 list2 opencv add points import

java opencv绘制工字型

 

package com.vfsd.core;

import java.util.ArrayList;
import java.util.List;

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgproc.Imgproc;

public class Test4 {

    public static void main( String[] args )
    {
        System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
        Scalar scalar1  = new Scalar(0,0,0);
        
        
        
        Mat img1 = new Mat(360,840,CvType.CV_8UC3,scalar1);
        
        List<Integer> list1_points =  new  ArrayList<Integer>();
        list1_points.add(50);
        list1_points.add(50);
        list1_points.add(70);
        list1_points.add(70);
        
        drawPolygonShape(img1,list1_points,0,0,1);
        
        List<Integer> list2_points =  new  ArrayList<Integer>();
        list2_points.add(50);
        list2_points.add(50);
        
        list2_points.add(150);
        list2_points.add(50);
        
        list2_points.add(150);
        list2_points.add(70);
        
        list2_points.add(110);
        list2_points.add(70);
        
        list2_points.add(110);
        list2_points.add(200);
        
        list2_points.add(150);
        list2_points.add(200);
        
        list2_points.add(150);
        list2_points.add(220);
        
        list2_points.add(50);
        list2_points.add(220);
        
        list2_points.add(50);
        list2_points.add(200);
        
        list2_points.add(90);
        list2_points.add(200);
        
        list2_points.add(90);
        list2_points.add(70);
        
        list2_points.add(50);
        list2_points.add(70);
        
        drawPolygonShape(img1,list2_points,50,50,2);
        
        drawPolygonShape(img1,list2_points,250,50,2);
        
        drawPolygonShape(img1,list2_points,450,50,2);
        
        
        
        HighGui.imshow("win1", img1);
        HighGui.waitKey();
        
    }
    
    public static void drawPolygonShape(Mat img1,List<Integer> list_points,int center_x,int center_y,int shape_type) {
        Scalar scalar2  = new Scalar(0,0,255);
        //矩形
        if(shape_type==1) {
            Rect  rect1 = new Rect(new Point(list_points.get(0),list_points.get(1)),new Point(list_points.get(2),list_points.get(3)));
            Imgproc.rectangle(img1,rect1 , scalar2);
        }
        //多边形 
        else if(shape_type==2)
        {
            for(int k=0;k<list_points.size();k+=2){
                if(k<list_points.size()-2) {
                    int point1_x = list_points.get(k+0)+center_x;
                    int point1_y = list_points.get(k+1)+center_y;
                    
                    int point2_x = list_points.get(k+2)+center_x;
                    int point2_y = list_points.get(k+3)+center_y;
                    
                    Imgproc.line(img1,new Point(point1_x,point1_y),new Point(point2_x,point2_y),scalar2,1);
                }else {
                    int point1_x = list_points.get(0)+center_x;
                    int point1_y = list_points.get(1)+center_y;
                    
                    int point2_x = list_points.get(list_points.size()-2)+center_x;
                    int point2_y = list_points.get(list_points.size()-1)+center_y;
                    
                    Imgproc.line(img1,new Point(point1_x,point1_y),new Point(point2_x,point2_y),scalar2,1);
                }
            }
        }
        
    }
}

 

 

 

###############################

标签:工字型,java,50,list2,opencv,add,points,import
From: https://www.cnblogs.com/herd/p/17578323.html

相关文章

  • java解析xml获取节点的属性
    1、java解析xml中返回的数据???2、java中dom4j解析xml文件怎么获取节点属性3、详解Java解析XML的四种方法4、使用Java自带SAX工具解析XML5、Java解析XML的几种方法java解析xml中返回的数据???JDOM生成和解析XML为减少DOM、SAX的编码量,出现了JDOM优点:20-80原则,极大减少......
  • 【Java】智慧工地源码-支持私有化部署,SaaS模式+全套硬件设备
    智慧工地硬件设备包括:AI识别一体机、智能广播音响、标养箱、塔机黑匣子、升降机黑匣子、吊钩追踪控制设备、扬尘监测设备、喷淋设备。1.什么是AI危险源识别AI危险源识别是指基于智能视频分析技术,对视频图像信息进行自动分析识别,以实时监测危险区域的人员闯入、靠近等危险行为,从......
  • Java | 如何学习Java
    1、确定需求工作需要跳槽,对方要求技术控2、看看能否使用传统技术解决能解决,但是不能完美的解决完全解决不了3、引出我们学习的新技术和知识点4、学习新技术或者知识点的基本原理和基本语法(不要考虑细节)5、快速入门(基本程序,crud)6、开始研究技术的注意事项(重中之重)......
  • 【面试题】 JavaScript中高级语法--?? 表达式 的作用
    前言在JavaScript中,双问号(??)表达式是一种非常有用的方法。它的作用是用来检测一个值是否为null或undefined。如果该值为null或undefined,那么双问号表达式会返回一个默认值。下面我们就来具体探究一下双问号表达式的用法,以及它与其他相似方法的区别。具体用法。其实,双问号表达式就是......
  • Java源码解析-重点集合框架篇
    Java源码解析,集合篇一:故事背景二:数据结构2.1线性结构2.2非线性结构三:集合分类3.1结构图四:详细分析4.1List4.1.1ArrayList4.1.1.1底层结构4.1.1.2主要特点4.1.2LinkedList4.1.2.1底层结构4.1.2.2主要特点4.1.3Vector和Stack4.1.3.1Vector4.1.3.1Stack五:总结提升一:故......
  • 欢迎大家加入JAVA技术开发讨论
    最近加了一些java的开发群,感觉每个群的技术氛围都不浓厚,很多问题出来后,根本没人理会。想现在建立一个技术氛围浓厚的java技术问答群,欢迎有兴趣的同学加入。近期也汇总了一些觉得不错的资料,欢迎大家一起进步学习!注:本群不收费,也不做广告推广,仅技术交流。加群方式:点击链接获......
  • Java学习笔记(八)
    6.3 多态6.3.1 多态的概念1、什么是多态?多态:多种形态,多种类型的形式两个角度:(1)一个父类的变量,可以赋值给它各种子类的对象换句话说,一个父类的变量,可以在运行时体现为多种不同的子类对象==>编译时都是父类类型的变量,运行时是各种子类的对象类型(2)一个子类对象,可以赋值给不同......
  • java之手搓简单ORM框架--SQL的DELETE
    1.手搓简单SQL增删改查框架-删除1.1创建简单类,并使用泛型类,这里可能使用到之间写的三篇知识的内容,如果不了解的小伙伴可以去java高级之泛型java高级之映射java高级之反射当然,前提是必须要把数据库相关连接弄好,这里会专门出一篇java之jdbc现在咱们继续手搓框架开始叭!1.2前......
  • Java 图片、文件 Base64 互转
    Java图片、文件Base64互转packagecom.thoth.his.base.util;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Base64;publicclassImageUtil{publicstaticStringFileToBase64(StringfilePath)......
  • java之手搓简单ORM框架--SQL的UPDATA
    1.手搓简单SQL增删改查框架-更改1.1创建简单类,并使用泛型类,这里可能使用到之间写的三篇知识的内容,如果不了解的小伙伴可以去java高级之泛型java高级之映射java高级之反射当然,前提是必须要把数据库相关连接弄好,这里会专门出一篇java之jdbc现在咱们继续手搓框架开始叭!由于上......