基于python的opencv图像预处理(一)

简介: 基于python的opencv图像预处理(一)

本文介绍基于python的opencv图像预处理基本操作,主要内容包括:

  • 图像读显存操作
  • 图像属性
  • 图像ROI

本环境为:Anaconda3-2020.11-Windows-x86_64+Python3.8+OpenCV4.0.1,打开Anaconda的Spyder

9d7df3ae59f9467aab109fa1e0ccf8b8.png

1. 图像读显存操作

图像读显存普遍存在接下来的操作,因此这就是我们图像处理的框架

2.png

1.1 读取图像

  • 从文件加载图像:
img = cv.imread(filename)

3.png

控制参数:

读取原图:cv.IMREAD_UNCHANGED

读取原图的灰度图:cv.IMREAD_GRAYSCALE

读取原图的彩图cv.IMREAD_COLOR


  • 举例
img=cv2.imread(“d:\\image.jpg”)

1.2 显示图像

  • 显示标签为Demo的img图像窗口

4.png

  • 等待键盘指令退出
cv2.waitKey(0)

1.png

  • 删除所有窗口
cv2.destroyAllWindows()

2.png

1.3 保存图像

  • 将img保存到D盘命名为test.jpg的图片
cv2.imwrite(‘D:\\test.jpg',img)

4.png

1.4 完整的程序

在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在chapter2文件夹的2图像.py直接打开

5.png

# -*- coding: utf-8 -*-
import cv2# 导入cv2库
i=cv2.imread("../image/test.jpg")#读取../image/test.jpg相对路径赋值给变量i
cv2.imshow("Demo",i)#显示变量i图像
cv2.waitKey(0)#等待操作
cv2.destroyAllWindows()#关闭所有窗口
cv2.imwrite("../image/lesson1.png",i)#将变量i写入./image/lesson1.png,等同于复制图片为png格式

6.png

点击菜单栏绿色运行按钮或者“Run file(F5)”。然后回车关闭程序,该路径“…/image/”会新增“lesson1.png”


2. 图像属性

图像属性包含以下三个


• 1 形状:行、列、通道数

• 2 像素数目

• 3 图像的数据类型


2.1 shape函数

shape函数 可以获取图像的形状,返回包含行数,列数,通道数的元组。

1.png

灰度 返回行数,列数

彩色 返回行数,列数,通道数


2.2 size函数

size 可以获取图像的像素数目。

2.png


2.3 dtype函数

dtype 返回的是图像的数据类型。

86f4f8d4a7db4c1bbe04e5ff46a98818.png


2.4 完整的代码

在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在chapter3文件夹的3.4获取图像属性.py.直接打开


# -*- coding: utf-8 -*-
import cv2
a=cv2.imread("../image\lena256.bmp",cv2.IMREAD_UNCHANGED)#读取灰度图像lena256.bmp赋值给a
b=cv2.imread("../image\lenacolor.png",cv2.IMREAD_UNCHANGED)#读取彩图像lenacolor.png赋值给b
print(a.shape)
print(b.shape)#打印a/b形状
print(a.size)
print(b.size)#打印a/b大小
print(a.dtype)
print(b.dtype)#打印a/b类型

4.png

输出灰度图和彩图的相关属性

(256, 256)
(512, 512, 3)
65536
786432
uint8
uint8

3. 图像ROI

• ROI(region of interest),感兴趣区域。

• 从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。

• 可以通过各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。

如下图Lena的面部就是我们关注的重点ROI

7.png

在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在chapter3文件夹的3.5感兴趣区域.py直接打开


# -*- coding: utf-8 -*-
import cv2#导入cv2库
import numpy as np#导入numpy库重命名为np
a=cv2.imread("../image\lenacolor.png")
girl=cv2.imread("../image\girl.bmp")#读取Lena和girl图像
b=np.ones((101,101,3))#三通道101x101的1区域
b=a[220:400,250:350]#Lena的[220:400,250:350]赋给b
girl[180:360,200:300]=b#b替代girl[180:360,200:300]区域
cv2.imshow("lenacolor",a)
cv2.imshow("original",girl)#显示Lena和girl图片
cv2.waitKey(0)
cv2.destroyAllWindows()


运行结果如下:

8.png


4. 总结

本文介绍本文介绍基于python的opencv图像预处理基本操作,主要内容包括图像读显存操作、 图像属性、图像ROI,很高兴能和大家分享!🤣🤣🤣希望你能有所收获。

目录
相关文章
|
3月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
620 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
27天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
143 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
65 3
|
2月前
|
数据采集 机器学习/深度学习 数据挖掘
利用Python进行高效的数据清洗与预处理
在数据科学和机器学习项目中,数据清洗与预处理是至关重要的一步。本文将介绍如何使用Python中的Pandas库进行高效的数据清洗与预处理。我们将探讨如何处理缺失值、异常值、重复数据,以及如何进行数据类型转换和特征工程。此外,还将介绍一些实用的技巧来优化数据处理的性能。
|
3月前
|
存储 JSON API
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
81 7
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
|
4月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
150 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
4月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
3月前
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
185 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
3月前
|
JSON API 数据格式
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
61 0
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
|
3月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
121 2