python opencv 简单图像识别,标注 [升级版]
先看一下效果
源图像
一)导入库
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 简单图像识别,标注 [升级版]相关推荐
- python学习-简单图像识别分类
python学习-图像识别 这是我从零基础开始学习的图像识别,当然用的是容易上手的python来写,持续更新中,记录我学习python基础到图像识别应用的一步步过程和踩过的一些坑.最终实现得到自己的训 ...
- python图像识别代码_用Python进行简单图像识别(验证码)
这是一个最简单的图像识别,将图片加载后直接利用Python的一个识别引擎进行识别 将图片中的数字通过 pytesseract.image_to_string(image)识别后将结果存入到本地的txt ...
- 基于python OpenCV多边形图像识别的实现
首先说一下我的整体思路: ① 首先定义了一个识别器类型,封装了计算边长,识别形状和展示结果三个函数. ② 主函数先读入图片,然后将图片转化为灰度图片,然后高斯滤波平滑处理,然后将灰度图片转化为黑白两色 ...
- opencv 简单的图像检测,识别,标注,
2022/4/19 刚刚做了个升级版,就是第二种读取文件的方式,另外分函数写了 链接: python opencv 简单图像识别,标注 [升级版]_死非死的博客-CSDN博客 ____________ ...
- python图像验证码识别_python 简单图像识别--验证码
python 简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...
- python图像分类需要什么环境_Python学习简单图像识别分类,python
python学习-图像识别 这是我从 零基础 开始学习的图像识别,当然用的是容易上手的python来写,持续更新中,记录我学习python基础到图像识别应用的一步步过程和踩过的一些坑.最终实现得到自己 ...
- linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)
linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题) 参考文章: (1)linux/ubuntu下简单好用的py ...
- Python Opencv 之 简单的视频裁剪功能的实现
Python Opencv 之 简单的视频裁剪功能的实现 目录 Python Opencv 之 简单的视频裁剪功能的实现 一.简单介绍 二.实现原理 三.注意实现 四.效果预览 五.实现步骤 这里实现 ...
- (开源)简单的人脸识别考勤系统(python+opencv+dilb)
简单的毕业设计,python+opencv+dlib,注意配置环境,打开工程文件直接运行.演示视频前往B站(开源)人脸识别签到系统_哔哩哔哩_bilibili 源文件及使用说明百度网盘下载链接: ht ...
最新文章
- 如何在FineUIMvc(ASP.NET MVC)视图中绑定多个模型?
- 四象限法推导lm曲线_【老王讲放射】四象限理论
- 将多窗体应用程序改造为仿Chrome形式的简易方法
- PMCAFF| 产品设计,从警示框说起
- Linux入门学习(二)
- python获取文件修改时间_Python-获取文件最后修改时间 | 学步园
- UTM 投影坐标系条带号Zone与EPSG代号计算(Python 实现)
- sharepoint文档库文件下载
- System32和SysWow64文件夹的区别
- 元数据管理——企业数据治理的基石
- 两天价网站背后重重迷雾:做个网站究竟要多少钱
- 无线路由器---基本知识
- 经方败案群9月底黎德育讲颈椎病的治疗
- stm32经典笔试题_stm32嵌入式试题
- CUIT-2017 Re150 攻防世界
- NanoPC-T4|Android-Q Mali-T860 GPU驱动
- 源代码共享:C#操作数据库
- 苹果CEO蒂姆·库克推出传记 4月16日开售
- 村规(春天花花同学会)
- pushmail的一点总结