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

opencv学习笔记

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

  • 1. 图像读显存操作
      • 1.1 读取图像
      • 1.2 显示图像
      • 1.3 保存图像
      • 1.4 完整的程序
  • 2. 图像属性
      • 2.1 shape函数
      • 2.2 size函数
      • 2.3 dtype函数
      • 2.4 完整的代码
  • 3. 图像ROI
  • 4. 总结

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

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

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

基于python的opencv图像预处理(一)_第1张图片

1. 图像读显存操作

图像读显存普遍存在接下来的操作,因此这就是我们图像处理的框架
基于python的opencv图像预处理(一)_第2张图片

1.1 读取图像

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

基于python的opencv图像预处理(一)_第3张图片

控制参数:
读取原图:cv.IMREAD_UNCHANGED
读取原图的灰度图:cv.IMREAD_GRAYSCALE
读取原图的彩图cv.IMREAD_COLOR

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

1.2 显示图像

  • 显示标签为Demo的img图像窗口
cv2.imshow("Demo",img)

基于python的opencv图像预处理(一)_第4张图片

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

基于python的opencv图像预处理(一)_第5张图片

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

基于python的opencv图像预处理(一)_第6张图片

1.3 保存图像

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

基于python的opencv图像预处理(一)_第7张图片

1.4 完整的程序

在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在chapter2文件夹的2图像.py直接打开
基于python的opencv图像预处理(一)_第8张图片

# -*- 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格式

基于python的opencv图像预处理(一)_第9张图片
点击菜单栏绿色运行按钮或者“Run file(F5)”。然后回车关闭程序,该路径“…/image/”会新增“lesson1.png”

2. 图像属性

图像属性包含以下三个

• 1 形状:行、列、通道数
• 2 像素数目
• 3 图像的数据类型

2.1 shape函数

shape函数 可以获取图像的形状,返回包含行数,列数,通道数的元组。
基于python的opencv图像预处理(一)_第10张图片

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

2.2 size函数

size 可以获取图像的像素数目。
基于python的opencv图像预处理(一)_第11张图片

2.3 dtype函数

dtype 返回的是图像的数据类型。
基于python的opencv图像预处理(一)_第12张图片

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类型

基于python的opencv图像预处理(一)_第13张图片
输出灰度图和彩图的相关属性

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

3. 图像ROI

• ROI(region of interest),感兴趣区域。
• 从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。
• 可以通过各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。
如下图Lena的面部就是我们关注的重点ROI
基于python的opencv图像预处理(一)_第14张图片
在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在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()

运行结果如下:

4. 总结

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

  • 参考链接:

  • 参考代码

你可能感兴趣的:(opencv学习笔记,1024程序员节,opencv,python)