基于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,很高兴能和大家分享!🤣🤣🤣希望你能有所收获。

目录
相关文章
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
4608 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
871 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
1444 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
786 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
XML 机器学习/深度学习 人工智能
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
810 10
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
492 3
|
数据采集 机器学习/深度学习 数据挖掘
利用Python进行高效的数据清洗与预处理
在数据科学和机器学习项目中,数据清洗与预处理是至关重要的一步。本文将介绍如何使用Python中的Pandas库进行高效的数据清洗与预处理。我们将探讨如何处理缺失值、异常值、重复数据,以及如何进行数据类型转换和特征工程。此外,还将介绍一些实用的技巧来优化数据处理的性能。
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
1173 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
JSON API 数据格式
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
805 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow

推荐镜像

更多