Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >入门|图像处理技术

入门|图像处理技术

作者头像
算法与编程之美
发布于 2019-08-30 06:55:51
发布于 2019-08-30 06:55:51
8920
举报

基本介绍

图像增强技术的作用,简单点说,就是通过对图像进行加工处理,使图像能更好的在其他领域起作用,比如人脸识别,图像分类等人工智能领域,又或者是在通信领域,通过加工恢复图像在传输中丢失的某些东西。

那么什么又是图像增强呢?通过对图像进行一些加工,从简单的裁剪、变换灰度等到复杂的各种滤波公式去噪点等等 ,大致满足以下两点的都属于图像增强的一部分。

1.改变图像视觉效果,使其能更好的应用在某类场景中

2.突出图片某部分特征,满足某些特殊分析的需要。

在实现具体算法,我们总需要先思考大致的思路。学习图像增强技术也是如此,在学习这门新技术前,我们可以根据一些以往的经验先想想大概要做些什么。

  1. 图像的收集
  2. 图像的输入
  3. 图像的处理
  4. 图像的输出

图像的收集

这里主要涉及的是从视频中截取我们需要的图片。需要使用到的软件“ffmpeg”。

安装

通过网页搜索直接进入官网点击“Download”,选择自己电脑系统后,点击下方红色勾

选区域,进入下载界面,只用看自己电脑是64位/32位,点击下载。

下载好后,配置环境变量。

右键‘我的电脑’,--属性—高级系统设置—环境变量—用户变量—编辑‘path’—添加ffmpeg软件的文件夹下的bin文件的路径。

使用

通过‘cmd’命令行执行以下操作:

‘ffmpeg -i F -r K -f image2 image-%05d.jpg’

F:需要处理视频的地址。

K:填一个数字表示每秒截几张图,填类似1/1的形式表示一帧截一张图。

其他更详细用法可以自行百度,温馨提示:在哪个文件夹执行命令操作生成

的图片就保存在哪个文件夹。

图像的输入

很多时候我们需要处理的是大量的图片,这就需要批量的处理文件。

#需要用到os和cv2库(安装请安装opencv,导入请导入cv2)imagelist=os.listdir(path)#读取path目录下所有文件的名字for i in imagelist: if(i.endswith('.jpg' or '.png')): #如果文件以jpg或者png结尾 image=cv2.imread(path+'/'+i)#读取图片

图像的处理

图像增强技术的处理技术很多,先从一些简单操作开始。如图像的裁剪、旋转、镜像翻转和缩放等基本操作开始,主要使用cv2库。

#裁剪(crop)Image=cv2.imread(‘某张图片地址’) #读取图片sp=image.shape #读取图像的形状信息并通过数组输出[图像的高,图像的宽,图像通道数]h=sp[0]w=sp[1]#截取图像某个区域,可配合random库随机截取,也可以自己设置截取范围y1=int((1/3)*h)y2=int((2/3)*h)x1=int((1/3)*w)x2=int((2/3)*w)img=image[y1:y2,x1:x2]#将图片左上角视为原点,截取y1到y2、x1到x2的区域 #旋转(roating)h,w=image.shape[:2]center=(h//2,w//2)#旋转中心#图片旋转#degree旋转角度,size旋转后的大小,填1为等比例旋转。M = cv2.getRotationMatrix2D(center, degree, size)#执行旋转操作,roated为旋转后的图片roated = cv2.warpAffine(image, M, (w, h)) #镜像翻转(flip)image=cv2.imread(path)image=cv2.flip(image,1)#图片翻转 #缩放image=cv2.imread(path)image=cv2.resize(image,(192,192))#括号内填缩放后的大小

图像的输出

除了直接保存为图片形式外

cv2.imwrite('保存地址',image)

我们在使用这些处理后的图片时,更多的要用到名为“npz”的文件格式。

data=[]#该数组用于存储图片label=[]#用于储存图片类型,看一个实例pathone='D:\\imgCut\\Archive\\resize\\nosmoke'#无烟集图片地址pathtwo="D:\\imgCut\\Archive\\resize\\smoke"#有烟集图片地址#0代表无烟图片,1代表有烟图片def saveZ(pathone,pathtwo): data=[] label=[] imagelist_one=os.listdir(pathone)#读取目录下所有文件的名字 imagelist_two=os.listdir(pathtwo) for i in imagelist_one: if(i.endswith('.jpg' or '.png')): #如果文件以jpg结尾 image=cv2.imread(pathone+'\\'+i) data.append(image)#将图片加入数组,这里存入的是图片本身而不是一个引用。 label.append(0) for i in imagelist_two: if(i.endswith('.jpg' or '.png')): #如果文件以jpg结尾 image=cv2.imread(pathtwo+'\\'+i) data.append(image) label.append(1)np.savez('arc.npz', data=data, label=label)#文件以npz形式储存,里面有两个数组data,label

之后我们就可以在其他地方直接调用这个文件里的数组

arc=np.load('arc.npz')#导入这个文件data=arc['data']#读取里面的data数组和label数组label=arc['label']

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习常用图像数据增强库albumentations系列教程(二)
在第一篇教程中,我们讲述了简单的图像增强技巧,本节通过使用Compose方法将各种图像增强的方法组合起来,形成一个图像增强的pipeline,方便产生大量不同种类的增强图片。
用户9875047
2022/12/07
1K0
深度学习常用图像数据增强库albumentations系列教程(二)
图像处理: 无损地旋转图像
OpenCV自带的旋转图像方法 (有损) 原图像: 如果用OpenCV自带cv2.warpAffine接口来实现图片旋转: import cv2 # 读取原图像 img = cv2.imrea
JNingWei
2018/09/27
2.8K0
图像处理: 无损地旋转图像
如何用人工智能自动玩游戏
让AI玩游戏的思想早在上世纪就已经有了,那个时候更偏向棋类游戏。像是五子棋、象棋等。在上世纪“深蓝”就击败了国际象棋冠军,而到2016年“Alpha Go”击败了人类围棋冠军。
ZackSock
2022/11/11
2.4K0
如何用人工智能自动玩游戏
Python深耕之图像深度学习必备工具包
因为研究方向的变动将本号更名为《R语言交流中心与Python深耕之路》,从R语言扩展到Python编程。今天给大家介绍下一个完整的深度学习模型的构建所需要的必备python模块。
一粒沙
2022/11/21
6730
Python深耕之图像深度学习必备工具包
CV -- YOLOv8 图像分割(GPU环境)
https://download.csdn.net/download/2403_83182682/90405543?spm=1001.2014.3001.5503
用户11404404
2025/02/20
2630
CV -- YOLOv8 图像分割(GPU环境)
[1213]基于Python实现图像去重
github:https://github.com/idealo/imagededup
周小董
2023/10/10
1.2K0
基于 opencv 的图像处理入门教程
虽然计算机视觉领域目前基本是以深度学习算法为主,但实际上很多时候对图片的很多处理方法,并不需要采用深度学习的网络模型,采用目前成熟的图像处理库即可实现,比如 OpenCV 和 PIL ,对图片进行简单的调整大小、裁剪、旋转,或者是对图片的模糊操作。
kbsc13
2020/07/16
2.4K0
基于 opencv 的图像处理入门教程
【Kaggle竞赛】数据准备
前言:在我们做图像识别的问题时,碰到的数据集可能有多种多样的形式,常见的文件如jpg、png等还好,它可以和tensorflow框架无缝对接,但是如果图像文件是tif等tensorflow不支持解码的文件格式,这就给程序的编写带来一定麻烦。
嵌入式视觉
2022/09/05
1.3K0
【Kaggle竞赛】数据准备
【OpenCV】入门教学/了解图像处理的基本原理
本文是基于哔哩哔哩OpenCV入门课程的内容加上我个人的理解而来。 本篇文章的主要内容: 阅读本篇文章,你需要具备python的基本语法的学习。如果你并没有学习过python,可以去看我的python专栏:python
Yui_
2025/02/03
3390
【OpenCV】入门教学/了解图像处理的基本原理
【Python3+OpenCV】实现图像处理—基本操作篇
OpenCV是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python中常使用OpenCV库实现图像处理。
潘永斌
2020/04/27
1.2K0
工业器件检测和识别
有问题欢迎微信交流:lp9628 工业器件标定与识别(如下图所示):  ----> ----> 代码实现: 主要流程:直方图均衡化,去除噪声,二值化,查找轮廓,选出需要轮廓。 # -*- coding
MachineLP
2018/01/09
9770
工业器件检测和识别
OpenCV与图像处理(一)
以下代码均在python3.6,opencv4.2.0环境下试了跑一遍,可直接运行。
Must
2020/07/28
7160
OpenCV与图像处理(一)
OpenCv识别小罗伯特唐尼
在实现人脸识别之前,我们先简单了解一下OpenCv的一些基本操作。在此之前,我们需要先安装OpenCv,我们使用pip安装:
ZackSock
2020/02/14
7300
OpenCV+TensorFlow 人工智能图像处理 (2)
[[1, 0, 100], [0, 1, 200]] 转变为2个矩阵: [[1, 0], [0, 1]] 和 [[100], [200]] 分别对应A和B矩阵,原图像为C[x, y] A * C + B = [[1x+0y], [0x+1y]] + [[100], [200]]
YingJoy_
2018/09/14
7820
OpenCV+TensorFlow 人工智能图像处理  (2)
Python | Opencv的人脸检测和人类识别
开始人类检测之前,我们要先获取一个特征数据。在opencv安装目录中,cv2/data文件夹,进入该文件夹后,里面全是特征文件,我们一般选用haarcascade_frontalface_default.xml。
用户9925864
2022/07/27
1.5K0
Python | Opencv的人脸检测和人类识别
一行代码快速图像识别~一排代码搞定视频识别
一行代码能干嘛?这种噱头式的开头现在估计已经不香了。。。我只能在别人挖好的土堆上再刨一铲子。
一个有趣的灵魂W
2020/09/15
7910
一行代码快速图像识别~一排代码搞定视频识别
Python—图像基本操作以及图像格式转
关于图像处理的模块常用的有 PIL,openCV等,不过应为要处理 tif 格式的图片,故特来写下这篇博客。 关于安装模块 libtiff 直接pip install libtiff 安装模块,发现无法导入,显示“No module named libtiff” ,打开anaconda prompt 执行conda list显示模块确实已经安装。尝试了把libtiff移除再重装还是没解决。
py3study
2020/01/06
1.7K0
【目标检测】图像裁剪/标签可视化/图像拼接处理脚本
无人机拍摄的图像分辨率往往较大,做目标检测时,需要进行裁剪再标注。 本文就来记录从图像裁剪到图像拼接的处理脚本思路。
zstar
2022/12/02
1.9K0
相关推荐
深度学习常用图像数据增强库albumentations系列教程(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档