直线目标检测技术

简介: Boofcv研究:直线目标检测public class LineDetection { private static final float edgeThreshold = 25; private static final int m...

Boofcv研究:直线目标检测

public class LineDetection {


    private static final float edgeThreshold = 25;
    private static final int maxLines = 10;

    private static ListDisplayPanel listPanel = new ListDisplayPanel();

    public static<T extends ImageGray, D extends ImageGray>
            void detectLines( BufferedImage image , 
                              Class<T> imageType ,
                              Class<D> derivType )
    {
        T input = ConvertBufferedImage.convertFromSingle(image, null, imageType );

        DetectLineHoughPolar<T,D> detector = FactoryDetectLineAlgs.houghPolar(
                new ConfigHoughPolar(3, 30, 2, Math.PI / 180,edgeThreshold, maxLines), imageType, derivType);


        List<LineParametric2D_F32> found = detector.detect(input);

        ImageLinePanel gui = new ImageLinePanel();
        gui.setBackground(image);
        gui.setLines(found);
        gui.setPreferredSize(new Dimension(image.getWidth(),image.getHeight()));

        listPanel.addItem(gui, "Found Lines");
    }


    public static<T extends ImageGray, D extends ImageGray>
    void detectLineSegments( BufferedImage image ,
                             Class<T> imageType ,
                             Class<D> derivType )
    {
        T input = ConvertBufferedImage.convertFromSingle(image, null, imageType );

        DetectLineSegmentsGridRansac<T,D> detector = FactoryDetectLineAlgs.lineRansac(40, 30, 2.36, true, imageType, derivType);

        List<LineSegment2D_F32> found = detector.detect(input);

        ImageLinePanel gui = new ImageLinePanel();
        gui.setBackground(image);
        gui.setLineSegments(found);
        gui.setPreferredSize(new Dimension(image.getWidth(),image.getHeight()));

        listPanel.addItem(gui, "Found Line Segments");
    }

    public static void main( String args[] ) {
        BufferedImage input = UtilImageIO.loadImage(UtilIO.pathExample("D:\\JavaProject\\Boofcv\\example\\simple_objects.jpg"));

        detectLines(input, GrayU8.class, GrayS16.class);


        detectLineSegments(input, GrayF32.class, GrayF32.class);

        ShowImages.showWindow(listPanel, "Detected Lines", true);
    }
}

这里写图片描述

这里写图片描述

目录
相关文章
|
7月前
|
存储 Java 编译器
鸿蒙开发:ArkTs数据类型
最后一点是,ArkTS不支持any和unknown类型,需要显式指定具体类型,否则会报异常,具体原因是,这是ArkTS的特性之一,那就是使用静态类型;如果程序采用静态类型,即所有类型在编译时都是已知的,那么开发者就能够容易理解代码中使用了哪些数据结构。同时,由于所有类型在程序实际运行前都是已知的,编译器可以提前验证代码的正确性,从而可以减少运行时的类型检查,有助于提升性能。
301 8
鸿蒙开发:ArkTs数据类型
|
Java 对象存储 开发者
解析Spring Cloud与Netflix OSS:微服务架构中的左右手如何协同作战
Spring Cloud与Netflix OSS不仅是现代微服务架构中不可或缺的一部分,它们还通过不断的技术创新和社区贡献推动了整个行业的发展。无论是对于初创企业还是大型组织来说,掌握并合理运用这两套工具,都能极大地提升软件系统的灵活性、可扩展性以及整体性能。随着云计算和容器化技术的进一步普及,Spring Cloud与Netflix OSS将继续引领微服务技术的发展潮流。
236 0
|
SQL 并行计算 API
Dask是一个用于并行计算的Python库,它提供了类似于Pandas和NumPy的API,但能够在大型数据集上进行并行计算。
Dask是一个用于并行计算的Python库,它提供了类似于Pandas和NumPy的API,但能够在大型数据集上进行并行计算。
|
Oracle Java 关系型数据库
JLink 使用教程:从入门到精通
本文提供了JLink工具的使用教程,包括入门、进阶和高级篇,涉及创建运行时镜像、添加模块、自定义启动器、压缩镜像、自定义运行时参数和配置文件等内容,旨在帮助用户创建独立的Java应用程序运行时环境。
1482 0
|
12月前
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
1108 0
|
存储 安全 小程序
什么是云计算,为什么选择阿里云?
阿里云提供的云计算服务让您能以按需、按量的方式获取算力,涵盖计算、存储、网络等多种形态,无需自建数据中心。它具备弹性、敏捷、安全、稳定、高性能和低成本等优势,支持业务快速创新,保障数据安全及业务连续性,帮助您专注于核心业务发展。常见应用场景包括网站、小程序、移动应用及大模型问答机器人等。
436 1
|
弹性计算 大数据 测试技术
2024年阿里云服务器价格配置表汇总(轻量服务器、ECS服务器、游戏服务器、GPU服务器)
今天整理了阿里云服务器价格,包含了阿里云轻量应用服务器、阿里云ECS云服务器、阿里云游戏服务器、阿里云GPU云服务器。阿里云服务器租用费用,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实例、ECS计算型c7、通用型g7、c8i、g8i等企业级实例规格。
1159 0
|
存储 Kubernetes jenkins
在k8S中,Jenkins发布详细流程是什么?
在k8S中,Jenkins发布详细流程是什么?
|
数据可视化
数据可视化之antv/g6 节点、及自定义节点
数据可视化之antv/g6 节点、及自定义节点
4344 0
|
分布式计算 DataWorks 安全
DataWorks常见问题之如何迁移业务流程到其他项目
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
249 0