OpenCV查找图像中的轮廓并且展示

 1、查找轮廓随机用不同的颜色画出

import cv2
import numpy as np


def get_contour_colors(num_contours):
    # 定义颜色表 (BGR 格式)
    colors = [
        (255, 0, 0),
        (255, 50, 0),
        (255, 100, 0),
        (255, 150, 0),
        (255, 200, 0),
        (255, 255, 0),
        (200, 255, 0),
        (150, 255, 0),
        (100, 255, 0),
        (50, 255, 0),
        (0, 255, 0),
        (0, 255, 50),
        (0, 255, 100),
        (0, 255, 150),
        (0, 255, 200),
        (0, 255, 255),
        (0, 200, 255),
        (0, 150, 255),
        (0, 100, 255),
        (0, 50, 255),
        (0, 0, 255),
    ]
    # 返回一个颜色表
    return [colors[i % len(colors)] for i in range(num_contours)]


def fill_contours(img, contours):
    # 创建空白的图像,用来画轮廓表
    filled_img = np.zeros_like(img)
    num_contours = len(contours)
    # 颜色表
    colors = get_contour_colors(num_contours)

    for i, contour in enumerate(contours):
        cv2.drawContours(filled_img, [contour], -1, colors[i], -1)

    return filled_img


# 读取原图,原图是RGB图
img = cv2.imread('1.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 查找轮廓
contours, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

# 填充轮廓
filled_img = fill_contours(img, contours)


cv2.imshow('Filled Contours', filled_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

原图:

输出:

2、查找轮廓按大小用不同的颜色画出 

import cv2
import numpy as np



def get_color(k, start_color=(255, 0, 0), end_color=(0, 0, 255)):
    out_color = []   # 输出的颜色
    for i in range(3):
        single_color = int((end_color[i] - start_color[i]) * k + start_color[i])
        out_color.append(single_color)
    for j in range(3):
        if out_color[j] > 255:
            out_color[j] = 255
        elif out_color[j] < 0:
            out_color[j] = 0

    return out_color


def fill_contours(img, contours):
    # 创建空白的图像,用来画轮廓表
    filled_img = np.zeros_like(img)
    # num_contours = len(contours)

    dims = []   # 所有的轮廓的尺寸
    for contour in contours:
        rect = cv2.minAreaRect(contour)  # 获取最小外接矩形
        dia = rect[1][0] if rect[1][0] <= rect[1][1] else rect[1][1]  # 计算轮廓的最短尺寸,并获取直径
        dims.append(dia)
    max_dim = max(dims)  # 最大尺寸
    min_dim = min(dims)  # 最小尺寸
    range_dim = max_dim - min_dim   # 尺寸范围

    for i, contour in enumerate(contours):
        rect = cv2.minAreaRect(contour)  # 获取最小外接矩形
        dia = rect[1][0] if rect[1][0] <= rect[1][1] else rect[1][1]  # 计算轮廓的最短尺寸,并获取直径
        k = (dia - min_dim) / range_dim    # 尺寸比例
        color = get_color(k)    # 获取颜色
        cv2.drawContours(filled_img, [contour], -1, color, -1)

    return filled_img


# 读取原图,原图是RGB图
img = cv2.imread('1.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 查找轮廓
contours, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

# 填充轮廓
filled_img = fill_contours(img, contours)

cv2.imshow('Filled Contours', filled_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/707436.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux常⽤服务器构建-ssh和scp

目录 1.ssh <1>ssh介绍 <2>安装ssh A.安装ssh服务器 B.远程登陆 <3>使⽤ssh连接服务器 2.scp 本地⽂件复制到远程&#xff1a; 本地⽬录复制到远程&#xff1a; 远程⽂件复制到本地&#xff1a; 远程⽬录复制到本地&#xff1a; 1.ssh <1>…

【LLM之RAG】Self-RAG论文阅读笔记

研究背景 尽管大型语言模型&#xff08;LLM&#xff09;展示出了显著的能力&#xff0c;但它们在生成回答时经常包含事实错误&#xff0c;因为它们仅依赖于封装在模型中的参数知识。增强型检索生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;是一种方法&…

leetcode695 岛屿的最大面积

题目 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表水&#xff09;包围着。 岛屿的面积是岛上值…

ubuntu18.04离线源制作

给客户部署有时需要纯内网环境&#xff0c;那这样就连不了网络。 一些包就下载不下来&#xff0c;而大家都知道用deb离线安装是非常麻烦的&#xff0c;各种依赖让你装不出来。 这里教大家打包源。 我准备2台机器&#xff0c;42和41 42可以联网&#xff0c;41不能联网。我想在…

在AI云原生时代应该如何应对复杂的算力环境

引言 随着在2019年ChatGPT4的爆火,AI这个之前常常被人觉得非常高深的技术渐渐的被越来越多的人们所了解,越来越多的公司、组织和开发者开始投入AI的使用和开发中来.随着AI和LLM的火热,算力资源也变的越来越紧缺,所以如何高效的管理和使用算力资源也变成了必须要面对的问题。 …

2024全站焕新,重塑3D轻量体验!

3D模型当前应用广泛&#xff0c;正以惊人的速度实现数据增长&#xff0c;轻量化需求随之增多。老子云团队一直在探索如何借助自研轻量化技术的能力&#xff0c;打破用户模型处理思维惯性&#xff0c;构建更高效、实用、简单的体验范式&#xff0c;来帮助用户解决3D素材数据处理…

教学辅助系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;教师管理&#xff0c;作业管理&#xff0c;学生管理&#xff0c;管理员管理&#xff0c;作业提交管理&#xff0c;教学视频管理 教室账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0…

L1-098 再进去几个人

L1-098 再进去几个人 分数 5 全屏浏览 切换布局 作者 陈越 单位 浙江大学 数学家、生物学家和物理学家坐在街头咖啡屋里&#xff0c;看着人们从街对面的一间房子走进走出。他们先看到两个人进去。时光流逝。他们又看到三个人出来。 物理学家:“测量不够准确。” 生物学家:“…

不到2毛钱的常用小功率功放AiP8002带关断模式的 2W 音频功率放大器

前言&#xff1a; SOP-8 8002封装和丝印 8002是当前小功率音频功放的不二选择&#xff0c;性能较好&#xff0c;价格低廉&#xff0c;不到2毛钱&#xff0c;国内有大把厂家生产&#xff0c;不同厂家生产的最大功率有2W、3W两种。本文以无锡中微爱芯的AIP8002做介绍。 1、概 述…

11.2 Go 常用包介绍

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

充电桩出口:跨国贸易的机遇与挑战之旅

在新能源浪潮席卷全球的今天&#xff0c;充电桩作为电动汽车的“加油站”&#xff0c;正逐渐从幕后走向台前。 而在这场跨国贸易的舞台上&#xff0c;充电桩的出口之路&#xff0c;既充满了诱人的机遇&#xff0c;也伴随着不小的挑战。 机遇&#xff0c;源自日益增长的全球市场…

stable-diffusion.cpp 文字生成图片

纯 C/C 中 [Stable Diffusion] 的推断 https://github.com/CompVis/stable-diffusion ## 特点 - 基于 [ggml]&#xff08;https://github.com/ggerganov/ggml&#xff09; 的普通 C/C 实现&#xff0c;工作方式与 [llama.cpp]&#xff08;https://github.com/ggerganov/llam…

ArcGIS for js 4.x FeatureLayer 点选查询

示例&#xff1a; 代码如下&#xff1a; <template><view id"mapView"></view></template><script setup> import "arcgis/core/assets/esri/themes/light/main.css"; import Map from "arcgis/core/Map.js"; im…

NPM常见问题

文章目录 NPM常见问题1. 使用淘宝源安装包出错2. listen EADDRINUSE 服务端口被占用报错3. npm start 启动后过一会崩溃结束&#xff1a;内存溢出4. npm install的时候使用特定的源安装5. npm安装指定版本、最新版本6. npm ERR! cb() never called! 解决7. Unable to authentic…

java线程池讲解!核心参数

创建方式 | 构造方法 Executor构造方法 存放线程的容器&#xff1a; private final HashSet<Worker> workers new HashSet<Worker>(); 构造方法&#xff1a; public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit uni…

Covalent 承诺向 Consensys Builders Scale 提供 250 万美元资助

作为 Web3.0 领域主要的模块化数据基础设施层 Covalent Network&#xff08;CQT&#xff09;承诺向「Consensys Builders Scale 计划」提供 250 万美元的资助&#xff0c; 用于助力 Consensys 生态的发展。这一重大举措体现了 Covalent Network&#xff08;CQT&#xff09;的使…

Windows defender bypass | 免杀

官方文档 在制作免杀的过程中,翻找 Windows 官方对 Windows Defender 的介绍,发现有这样一个目录:Configure Microsoft Defender Antivirus exclusions on Windows Server(在 Windows server 中配置defender排除项)。 https://docs.microsoft.com/en-us/microsoft-365/se…

200元的5G热点机能作为渗透测试测试机,还能当128G移动硬盘,怎么算都值

最近&#xff0c;迫于很多的app渗透测试&#xff0c;急需一个真机&#xff0c;在咸鱼上发现了一款低价5G手机&#xff0c;平时可以当随身WiFi&#xff0c;还可以进行app渗透测试&#xff0c;它就是中兴远航30。 中兴远航30是2022年4月发布的机器&#xff0c;全系只有4G128G和6G…

CBoard开源数据可视化工具

CBoard开源数据可视化工具 文章目录 CBoard开源数据可视化工具介绍资源列表基础环境一、安装JDK二、安装Maven2.1、安装Maven2.2、配置Maven 三、安装Tomcat8四、安装MySQL5版本4.1、安装相关依赖4.2、二进制安装4.3、设定配置文件4.4、配置systemcatl方式启动4.5、访问MySQL数…

从大型语言模型到大脑语言理解:探索话语理解的神经机制

随着科技的飞速发展&#xff0c;人工智能领域取得了令人瞩目的成就。在这其中&#xff0c;大型语言模型&#xff08;LLMs&#xff09;以其卓越的性能和广泛的应用前景&#xff0c;成为了当前研究的热点。然而&#xff0c;尽管LLMs在文本生成、语言翻译等领域展现出了惊人的能力…