opencv 简单的图像检测,识别,标注,

article/2025/9/29 14:17:00

2022/4/19

        刚刚做了个升级版,就是第二种读取文件的方式,另外分函数写了

链接:

python opencv 简单图像识别,标注 [升级版]_死非死的博客-CSDN博客

____________________

第一步 导入库

import cv2 as cv
import matplotlib.pyplot as plt
import os

第二步 读取图像

要读取的就是这几张图像了

下面两种选一个,第一个直接用,第二个有列表索引需要改,懒得改

第一种: 指定文件名

path = r'C:\Users\Administrator\Desktop\python\mypic\peo\\'
​
name=['peo.jpg','man_face.jpg','man_face2.jpg','man_body1.jpg','man_body2.jpg']
imgs=[]
num=len(name)
hwl=[] # 存放 高 宽 L 属性
​
plt.figure(figsize=(10,10)) #  创建一个指定大小的画布
for i in range(num):# 导入图片imgs.append(cv.imread(path+name[i]))# 颜色转置 bgr 转换 rgb # 刚刚阅读 李立宗 的Opencv入门发现这一步完全是没必要的# 把 cv.imread('path',-1) 改成这样就行了b,g,r = cv.split(imgs[i])imgs[i]= cv.merge([r,g,b])# 获取 图像 高 宽 和 一个 L???,不确定,没用到第三个值hwl.append(imgs[i].shape)# 多余程序 展示一下图像plt.subplot(num,1,i+1)plt.imshow(imgs[i])

第二种: 获取文件名

前提: 所有 文件夹中只有 【检测】和【被检测】的 图像

问题:如何在众多文件中确认主图

思路: 指定主图文件名,if else 判断

注意不能直接套用下面的图像检测代码哦,一部分索引是需要修改的

我懒得改了,没写,只提供思路

path=r'图像路径\\' 
img_name=os.listdir(path)
imgs=[]
# img_main=input('主题名称(带后缀名)')
img_main= '手动填 '
for name in img_name:if name==img_main:img_main=cv.imread(path+name)else:imgs.append(cv.imread(path+name))

如果图像命名是具有规律的,会更简单

展示一下,是否成功

for img in imgs:plt.figure()plt.imshow(img[:,:,::-1])

第三步 检测对比图像

ress=[] # 存放比对结果
minMaxLoc=[] # 存放 提取的对应坐标
top_left=[] # 存放图片在原图上的 左上角坐标
bottom_right=[] # 存放图片在原图上的右下角坐标
for i in range(1,num):#  进行检测对比 第三步ress.append(cv.matchTemplate(imgs[i],imgs[0],cv.TM_CCOEFF))# 从检测结果中提取 对应坐标  第四步minMaxLoc.append(cv.minMaxLoc(ress[i-1]))
​# 注 minMaxLoc 返回的是四个值,这里取第四个 因为使用的是 cv.TM_CCOEFF# 是一个坐标是相似位置矩形的 左上角坐标,top_left.append(minMaxLoc[i-1][3]) # 设置矩形框右下角点的坐标bottom_right.append((top_left[i-1][0]+hwl[i][1],top_left[i-1][1]+hwl[i][0]))# 在对应位置绘画矩形 ,画别的形状也行,但矩形经典,简单,形象cv.rectangle(imgs[0],top_left[i-1],bottom_right[i-1],(255,255,0),2)

第四步 展现图像

plt.figure(figsize=(10,10))
plt.imshow(imgs[0])
plt.show()

成果图像就是这个了


http://chatgpt.dhexx.cn/article/d0HRTGPx.shtml

相关文章

医学图像3D目标检测

医学图像3D目标检测 论文:3D Bounding Box Detection in Volumetric Medical Image Data: A Systematic Literature Review 这篇论文综述了近五年在三维医学数据中进行3D Bouding Box Detection的方法。 1、论文背景 VOI的提取是重要的预处理步骤,例如…

图像检测常用评价指标与数据集

评价指标 1.准确率(Accuracy) 检测时分对的样本数除以所有的样本数。准确率一般被用来评估检测模型的全局准确程度,包含的信息有限,不能完全评价一个模型性能。 2.混淆矩阵(Confusion Matrix) 混淆矩阵是以模型预测的类别数量统计信息为横轴&#xff0c…

基于Yolov5的医学图像检测

yolov5医学图像检测练手项目: 数据集分布如下: 5S改进检测结果如下,可加入注意力机制、多尺度等技术提升检测精度 专注于各个行业的落地应用,如工业检测、医学图像检测等;

图像边缘检测

文章目录 1. 什么是边缘检测2 边缘检测的常用方法及Python应用2.1 一阶微分算子2.1.1 Roberts算子2.1.2 Prewitt算子2.1.3 Sobel算子 2.2 二阶微分算子2.2.1 Laplacian算子2.2.2 Canny算子 3. 源码仓库地址 1. 什么是边缘检测 边缘检测是图像处理与计算机视觉中的重要技术之一…

图像检测:图像分类

图像分类 判断图片中是否有某个物体,一个图对应一个标签 卷积神经网络(CNN) 网络进化: 网络: AlexNet→VGG→GoogLeNet→ResNet 深度: 8→19→22→152 VGG结构简洁有效: 容易修改,迁移到其…

相似图像的检测方法

背景 以图搜图,是日常生活中我们经常会用到,例如在选购一款商品时,想要对比价格,往往会在各个购物app上通过搜图的形式来看同一款产品的价格;当你碰到某种不认识的植物时,也可以通过以图搜图的方式来获取该…

图像检测

图像中的目标检测涉及识别各种子图像并且围绕每个识别的子图像周围绘制一个边界框。 不需要判断是什么类型,后面可以做图像识别 经典网络: 图像分类的深度学习工具是区域卷积神经网络(R-CNN) 第一阶段:R-CNN->S…

计算机视觉-深度学习图像检测方法梳理

计算机视觉-深度学习图像检测方法梳理 由于之后要转方向啦,趁这段时间整理手中硕士研究方向的一些阅读笔记,这是一篇关于计算机视觉的基础知识梳理 先搞清一些小知识点 首先我们要弄清楚图像分类、目标定位、语义分割、实例分割的区别 a. 图像分类 &…

树上倍增法

一 点睛 树上倍增法不仅可以解决 LCA问题,还可以解决很多其他问题。 F[i,j] 表示 i 2^j 辈祖先,即 i 节点向根节点走 2^j 步到达的节点。 u 节点向上走 2^0步,即为 u 的父节点 x, F[u,0] x ;向上走 2^1…

光电倍增管国产型号及相关知识

国产光电倍增管 南京永纪,GDB235 参考网址 请教光电倍增管在安装、使用注意事项,谢谢 (amobbs.com 阿莫电子论坛) 光电倍增管(PMT)使用注意 光电倍增管(PMT)使用注意_滨松光子学商贸(中国)有限公司 (ham…

倍增node

倍增 普及组的内容,思想很简单,但是考的可以挺难 倍增是啥东西 “ 倍增,顾名思义,就是每次增加一倍。 展开来说,就是每次根据已经得到的信息,将考虑的范围增加一倍, 从而加速操作。倍增思想有…

倍增求LCA

一:定义 LCA指的是最近公共祖先。具体地,给定一棵有根数,若结点z既是结点x的祖先,也是结点y的祖先,则称z是x,y的公共祖先。在x,y的公共祖先中,深度最大的那个节点成为x,y…

倍增数组基础

应用: 给定一个数列a, 基本的倍增数组可以用O(1)的时间复杂度计算出区间[i,j]的最值。 具体操作: 维护倍增数组 1、状态 dp[j][i]表示区间从i到 i(2^j)-1,即以i开始长度为2^j 这个区间范围的最值。(下面以最小值为例) 2、状态转移…

倍增LCA

朴素算法求LCA,即暴力求解,当树近乎为一条链时,找祖先时一级一级向上跳,时间复杂度接近O(n),所以可以考虑一次跳尽可能大的距离,即倍增算法;一次跳2^i(i0,1,2....)级。 倍增法 一个节…

倍增算法

倍增算法 【序言】 我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标…

浅谈倍增及应用

浅谈倍增 倍增思想 原理: 倍增,即成倍增长。在处理一系列序列数据时,倍增可通过指数级的增长快速覆盖所有数据。 倍增算法采用2倍增长的方式,其核心思想是建立以下数组T a[i][j] ,表示自i向后共 2 j 2^j 2j个数据的…

倍增(ST表与LCA)

倍增(ST表与LCA) 什么是倍增? 倍增,就是成倍增长。指我们进行递推时,如果状态空间很大,通常线性递推无法满足时空复杂度要求,那么可以通过成倍增长的方式,只递推状态空间中 2 的整…

V4L2-框架

1.概述 V4L2 是专门为linux 设备设计的一套视频框架,其主体框架在linux内核,可以理解为是整个linux系统上面的视频源捕获驱动框架。 相机驱动层位于HAL Moudle 与硬件层之间,借助linux 内核驱动框架,以文件节点的方式暴露接口给用…

V4L2学习笔记

首先附上,Linux内核网站: 入口 v4l2非常棒的一篇文章 入口 内核代码查看: 入口 一个博客文档: 入口 https://lwn.net/Articles/204545/ 别人整理 关于linux内核头函数: /usr/src/xxx 系列文 在其内部有media文件…

V4L2框架学习

V4L2框架 0 查看videodev2 0.1 头文件/usr/include/linux/videodev2.h 0.2 使用ioctl函数 使用ioctl函数 // 添加头文件 #include <unistd.h> #include <sys/ioctl.h> #include <linux/videodev2.h>int ioctl (int __fd, unsigned long int __request, ...…