Opencv数一数有多少个水晶贴纸?
1.目标-数出有多少个贴纸
好久没更新博客了,最近家里小朋友在一张A3纸上贴了很多水晶贴纸,要让我帮他数有多少个,看上去有点多,贴的也比较随意,于是想着使用Opencv来识别一下有多少个。
原图如下: 
代码:
import cv2
import numpy as np
from matplotlib import pyplot as pltdef count_stars(image_path):# 读取图像image = cv2.imread(image_path)# # 显示原始图像# plt.figure()# plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))# plt.title('Original Image')# 转换为灰度图像gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# # 显示灰度图像# plt.figure()# plt.imshow(gray, cmap='gray')# plt.title('Gray Image')# 应用高斯模糊以减少噪声gs=85blurred = cv2.GaussianBlur(gray, (gs, gs), 0)# # 显示高斯模糊后的图像# plt.figure()# plt.imshow(blurred, cmap='gray')# plt.title('Blurred Image')# # plt.show()# 使用自适应阈值进行二值化binary = cv2.adaptiveThreshold(blurred, 255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV, 125, 2)# 显示二值化后的图像plt.figure()plt.imshow(binary, cmap='gray')plt.title('Binary Image')plt.show()# 查找轮廓contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)# 绘制轮廓contour_image = np.copy(image)cv2.drawContours(contour_image, contours, -1, (0, 255, 0), 3)# 计数星星(即轮廓的数量)star_count = len(contours)# 显示带有轮廓的图像plt.figure()plt.imshow(cv2.cvtColor(contour_image, cv2.COLOR_BGR2RGB))plt.title('Image with Contours'+str(star_count))plt.show()return star_count# 图像路径
image_path = '202406150928253.jpg'# 计算星星数量
num_stars = count_stars(image_path)
print(f'Number of stars: {num_stars}')
2.使用原图计算效果


有很多斑点干扰了统计结果。
3.图像优化处理
对图像进行优化处理再进行计算。使用PS工具对图像背景进行去除。
PS处理之后的图(魔术橡皮擦擦掉背景)),有些透明水晶贴纸和背景色接近被处理了一部分。



最后的结果没有进行人工确认,不过看上去基本是正确的。有兴趣的朋友可以比对一下。
仔细看左上角有点问题,多了一些,擦除后重新计算得到209个,家里小朋友数的202个。

相关文章:
Opencv数一数有多少个水晶贴纸?
1.目标-数出有多少个贴纸 好久没更新博客了,最近家里小朋友在一张A3纸上贴了很多水晶贴纸,要让我帮他数有多少个,看上去有点多,贴的也比较随意,于是想着使用Opencv来识别一下有多少个。 原图如下: 代码…...
AI Agent智能应用从0到1定制开发(完结)
在数字化时代的浪潮中,人工智能(AI)代理智能应用如同星辰般璀璨,引领着技术革新的潮流。从零开始定制开发一款AI Agent智能应用,就像是在无垠的宇宙中绘制一颗新星的轨迹,每一步都充满了挑战与创新的火花。…...
事件驱动架构:新时代的软件设计范式
引言 在现代软件开发中,随着系统复杂度的增加和实时响应需求的提升,传统的单体架构和同步调用模型逐渐显露出其局限性。事件驱动架构(Event-Driven Architecture, EDA)作为一种高度解耦、灵活性强的架构设计模式,越来…...
【机器学习】机器学习与物流科技在智能配送中的融合应用与性能优化新探索
文章目录 引言机器学习与物流科技的基本概念机器学习概述监督学习无监督学习强化学习 物流科技概述路径优化车辆调度需求预测 机器学习与物流科技的融合应用实时物流数据分析数据预处理特征工程 路径优化与优化模型训练模型评估 车辆调度与优化深度学习应用 需求预测与优化强化…...
web前端何去何从:探索未来之路
web前端何去何从:探索未来之路 在数字化浪潮的推动下,web前端技术正经历着前所未有的变革。随着新技术的不断涌现和用户体验的持续提升,web前端开发者们面临着前所未有的挑战与机遇。那么,web前端究竟何去何从?本文将…...
yolov8通过训练完成的模型生成图片热力图--论文需要
源代码来自于网络 使用pytorch_grad_cam,对特定图片生成热力图结果。 安装热力图工具 pip install pytorch_grad_cam pip install grad-cam# get_params中的参数: # weight: # 模型权重文件,代码默认是yolov8m.pt # c…...
Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
前言:ArrayList是Java中最常用的动态数组实现之一,它提供了便捷的操作接口和灵活的扩展能力,使得在处理动态数据集合时非常方便。本文将深入探讨Java中ArrayList的实现原理、常用操作以及一些使用场景。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨…...
Zadig vs. Jenkins 详细比较
01、Zadig vs. Jenkins:关于时代的选择 最近官方公众号发布了一篇名为 《是时候和 Jenkins 说再见了》的文章,引起了社区的广泛关注和讨论。作为曾经最被广泛使用的持续构建交付工具,Jenkins 的江湖地位似乎被挑战了。评论中有一条被高度点赞…...
航拍无人机像素坐标转世界坐标
一、背景 已知相机参数(传感器宽度和高度、图像宽度和高度、焦距、相对航高、像主点坐标 ),在给定像素坐标的前提下,求世界坐标,大部分通过AI来实现,不知道哪个步骤有问题,望大家指正 二、代码…...
Linux系统学习——指令二
Linux系统学习——指令二 sed 指令perl 指令rpm 指令rz 和 sz 指令查看文件大小及压缩文件指令使用tar命令:使用zip命令:注意事项: 解压文件指令 sed 指令 使用sed命令:sed -i s/旧内容/新内容/g 文件名,这将会在文件…...
【逻辑回归】和【线性回归】的区别和联系-九五小庞
逻辑回归(Logistic Regression)和线性回归(Linear Regression)是两种常用的统计学习和机器学习技术,它们各自具有特定的应用场景和优势。以下是它们之间的主要区别和联系: 定义与目的 线性回归:…...
富格林:正视欺诈阻挠交易被骗
富格林指出,在交易的过程中,投资者们就算做了十分的把握,也难免会出现亏损。因此建议新手投资者,在准备投资时一定要做好充分的准备工作,明辨欺诈陷阱,同时学习正规的做单盈利技巧,这才能帮助我…...
如何在WPS中加载EndNote X9插件
如何在WPS中加载EndNote X9插件 步骤1:关闭WPS 确保所有WPS文档和窗口都已关闭。 步骤2:修改文件后缀 打开文件资源管理器,导航到路径:C:\Program Files (x86)\EndNote X9\Product-Support\CWYW。找到文件 Cwyw_X86.dat&#…...
vb.net小demo(计算器、文件处理等/C#也可看)
Demo1:使用窗体控件实现一个简易版计算器 Public Class Form1Private Sub Button_1_Click(sender As Object, e As EventArgs) Handles Button_1.ClickCalSubBox.Text Button_1.TextEnd SubPrivate Sub Button_2_Click(sender As Object, e As EventArgs) Handles …...
【vue3|第8期】深入理解Vue 3 computed计算属性
日期:2024年6月10日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方…...
《精通ChatGPT:从入门到大师的Prompt指南》附录C:专业术语表
附录C:专业术语表 本附录旨在为读者提供一本全面的术语表,帮助理解《精通ChatGPT:从入门到大师的Prompt指南》中涉及的各种专业术语。无论是初学者还是高级用户,这些术语的定义和解释将为您在使用ChatGPT时提供重要参考。 A AI&…...
YOLOv8可视化界面PYQT5
yolov8,可视化界面pyqt。支持图片检测,视频检测,摄像头检测等,实时显示检测画面。支持自定义数据集,计数,fps展示……,即插即用,无需更改太多代码...
远程代码执行和远程命令执行是一个东西吗
远程代码执行(Remote Code Execution,简称RCE)和远程命令执行在概念上有所区别,但两者都涉及到攻击者通过远程方式在目标系统上执行代码或命令。以下是两者的详细比较: 定义: 远程代码执行(RCE…...
C++ 20新特性之线程与jthread
💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 为什么要引入jthread 在C 11中,已经引入了std::thread。std::thread为C标准库带来了一流的线程支持,极大地促进了多线程…...
赶紧收藏!2024 年最常见 20道并发编程面试题(七)
上一篇地址:赶紧收藏!2024 年最常见 20道并发编程面试题(六)-CSDN博客 十三、什么是线程局部存储(Thread-Local Storage)? 线程局部存储(Thread-Local Storage,简称TLS…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
