先看一下效果

源图像

一)导入库

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

二)读取图片

注意!!!

所有图片是在同一文件夹下的哦

主图名称是必须知道的哦

def read_img(mpath,img_main):"""读取图片"""img_name=os.listdir(mpath) # 获取 所有图片名称,是个列表imgs=[] # 读取进来的图片数据for name in (img_name):if name==img_main:
#         if os.path.splitext(name)[0]==os.path.splitext(img_main)[0]: # 多余的测试main=img_rgb(cv.imread(mpath+name)) # 调用颜色转置了 下面就是else:imgs.append(img_rgb(cv.imread(mpath+name)))
#返回对应 参数 方便下一个函数使用 ,避免声明 全局变量return imgs,main,img_name

颜色转置,

不是很重要的模块,

因为opencv读取图像是 BGR 而不是 常用的 RGB 所以,用别的 库显示opencv读取的图像需要转换一下,

不然就是蓝色的

当然了,opencv自带的 函数显示的是正常的,但是

我用的jupter做的,他自带的会额外弹出一个窗口,就很烦

所以用 matplotlib的图像显示

-------------------------------------------

22年4月23日  我阅读了《OpenCV轻松入门:面向Python》李立宗 这本书发现

这个模块真的毫无作用,至少,是在我这里

给 cv.imread()追加一个参数就可以读取原始色彩,啊啊啊啊 就这样

cv.imread('path',-1)  -1 代表 cv2.IMREAD_UNCHANGED : 保持原格式不变

真离谱啊

def img_rgb(img):"""颜色转置"""# 颜色转置 bgr 转换 rgbb,g,r = cv.split(img)img= cv.merge([r,g,b])return img

获取图片的高 宽

因为是要在 peo.jpg【第二张图中,倒数第三个】中用矩形框标注其他图像,

所以需要获取 其他图像的【高度】 和【宽度】

才能设定矩形的大小

def img_hwl(imgs):"""获取图片的高 宽 """hwl=[] # 存放 高 宽 L 属性# 获取 图像 高 宽 和 一个 L???,不确定,没用到第三个值for i in range(len(imgs)):hwl.append(imgs[i].shape)return hwl

从检测结果中提取 对应坐标

def img_points(res,hwl):"""从检测结果中提取 对应坐标 """# 注 minMaxLoc 返回的是四个值,min_val,max_val,min_loc,max_loc=cv.minMaxLoc(res)# 这里取第四个,是不同算法决定的top_left=max_loc# 存放图片在原图上的 左上角坐标# 矩形框 右下角坐标bottom_right=(top_left[0]+hwl[1],top_left[1]+hwl[0])return top_left,bottom_right

放置文本[就是美化一下]

不是关键

def put_txt(img,top_left,text):"""放置文本"""fontsize=1 # 字体大小r=random.randint(50,256)g=random.randint(50,256)b=random.randint(50,256)color=(r,g,b)font=cv.FONT_HERSHEY_DUPLEX # 字体格式cv.putText(img,text,(top_left[0],top_left[1]+15),font,fontsize,color,1,cv.LINE_AA)

检测图片,核心功能 !!!

def img_check(path,img_main):"""检测图片,核心功能"""imgs,img_main,img_name=read_img(path,img_main) # 获取 图像列表,主图像,图像名称列表hwl=img_hwl(imgs)# 存放 高 宽 L 属性ress=[] # 存放比对结果for i in range(len(imgs)):#  进行检测对比 第三步ress.append(cv.matchTemplate(imgs[i],img_main,cv.TM_CCOEFF))# cv.TM_CCOEFF 一种算法 ,有他才实现的 还有别的,百度叭# 从检测结果中提取 对应坐标  第四步top_left,bottom_right=img_points(ress[i],hwl[i]) # 调用自设函数put_txt(img_main,top_left,img_name[i]) # 调用自设函数cv.rectangle(img_main,top_left,bottom_right,(193, 44, 31),2)plt.figure(figsize=(10,5))plt.imshow(img_main)plt.show()

主函数 或者说 开始函数

def main():"""主函数"""path = r'C:\Users\Administrator\Desktop\python\mypic\peo\\'img_main= 'peo.jpg'
#     path=r'C:\Users\Administrator\Desktop\python\mypic\annimo\\'
#     img_main= 'anis.png'img_check(path,img_main)main()   

python opencv 简单图像识别,标注 [升级版]相关推荐

  1. python学习-简单图像识别分类

    python学习-图像识别 这是我从零基础开始学习的图像识别,当然用的是容易上手的python来写,持续更新中,记录我学习python基础到图像识别应用的一步步过程和踩过的一些坑.最终实现得到自己的训 ...

  2. python图像识别代码_用Python进行简单图像识别(验证码)

    这是一个最简单的图像识别,将图片加载后直接利用Python的一个识别引擎进行识别 将图片中的数字通过 pytesseract.image_to_string(image)识别后将结果存入到本地的txt ...

  3. 基于python OpenCV多边形图像识别的实现

    首先说一下我的整体思路: ① 首先定义了一个识别器类型,封装了计算边长,识别形状和展示结果三个函数. ② 主函数先读入图片,然后将图片转化为灰度图片,然后高斯滤波平滑处理,然后将灰度图片转化为黑白两色 ...

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

    2022/4/19 刚刚做了个升级版,就是第二种读取文件的方式,另外分函数写了 链接: python opencv 简单图像识别,标注 [升级版]_死非死的博客-CSDN博客 ____________ ...

  5. python图像验证码识别_python 简单图像识别--验证码

    python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...

  6. python图像分类需要什么环境_Python学习简单图像识别分类,python

    python学习-图像识别 这是我从 零基础 开始学习的图像识别,当然用的是容易上手的python来写,持续更新中,记录我学习python基础到图像识别应用的一步步过程和踩过的一些坑.最终实现得到自己 ...

  7. linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)

    linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题) 参考文章: (1)linux/ubuntu下简单好用的py ...

  8. Python Opencv 之 简单的视频裁剪功能的实现

    Python Opencv 之 简单的视频裁剪功能的实现 目录 Python Opencv 之 简单的视频裁剪功能的实现 一.简单介绍 二.实现原理 三.注意实现 四.效果预览 五.实现步骤 这里实现 ...

  9. (开源)简单的人脸识别考勤系统(python+opencv+dilb)

    简单的毕业设计,python+opencv+dlib,注意配置环境,打开工程文件直接运行.演示视频前往B站(开源)人脸识别签到系统_哔哩哔哩_bilibili 源文件及使用说明百度网盘下载链接: ht ...

最新文章

  1. 如何在FineUIMvc(ASP.NET MVC)视图中绑定多个模型?
  2. 四象限法推导lm曲线_【老王讲放射】四象限理论
  3. 将多窗体应用程序改造为仿Chrome形式的简易方法
  4. PMCAFF| 产品设计,从警示框说起
  5. Linux入门学习(二)
  6. python获取文件修改时间_Python-获取文件最后修改时间 | 学步园
  7. UTM 投影坐标系条带号Zone与EPSG代号计算(Python 实现)
  8. sharepoint文档库文件下载
  9. System32和SysWow64文件夹的区别
  10. 元数据管理——企业数据治理的基石
  11. 两天价网站背后重重迷雾:做个网站究竟要多少钱
  12. 无线路由器---基本知识
  13. 经方败案群9月底黎德育讲颈椎病的治疗
  14. stm32经典笔试题_stm32嵌入式试题
  15. CUIT-2017 Re150 攻防世界
  16. NanoPC-T4|Android-Q Mali-T860 GPU驱动
  17. 源代码共享:C#操作数据库
  18. 苹果CEO蒂姆·库克推出传记 4月16日开售
  19. 村规(春天花花同学会)
  20. pushmail的一点总结

热门文章

  1. 数字图像处理(六) 图像压缩
  2. 直播打断事件处理(音视频SDK高级功能四)
  3. 说说如何使用 openpyxl 设置 Excel 单元格字体
  4. 打包python软件在mac运行_Mac python使用py2app打包为app后无法运行
  5. PostgreSQL递归查询父节点
  6. WPS表格------函数使用入门(善用帮助文档)
  7. “史上最强春节档”来袭!数据告诉你这几部影片最值得看
  8. Portainer - 管理docker
  9. portainer GPU
  10. 端口复用 RDP协议的利用