opencv学习笔记
本文介绍基于python的opencv图像预处理基本操作,主要内容包括:
本环境为:Anaconda3-2020.11-Windows-x86_64+Python3.8+OpenCV4.0.1,打开Anaconda的Spyder
图像读显存普遍存在接下来的操作,因此这就是我们图像处理的框架
img = cv.imread(filename)
控制参数:
读取原图:cv.IMREAD_UNCHANGED
读取原图的灰度图:cv.IMREAD_GRAYSCALE
读取原图的彩图cv.IMREAD_COLOR
img=cv2.imread(“d:\\image.jpg”)
cv2.imshow("Demo",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite(‘D:\\test.jpg',img)
在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在chapter2文件夹的2图像.py直接打开
# -*- 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格式
点击菜单栏绿色运行按钮或者“Run file(F5)”。然后回车关闭程序,该路径“…/image/”会新增“lesson1.png”
图像属性包含以下三个
• 1 形状:行、列、通道数
• 2 像素数目
• 3 图像的数据类型
shape函数 可以获取图像的形状,返回包含行数,列数,通道数的元组。
灰度 返回行数,列数
彩色 返回行数,列数,通道数
在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在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类型
(256, 256)
(512, 512, 3)
65536
786432
uint8
uint8
• ROI(region of interest),感兴趣区域。
• 从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。
• 可以通过各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。
如下图Lena的面部就是我们关注的重点ROI
在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在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()
运行结果如下:
本文介绍本文介绍基于python的opencv图像预处理基本操作,主要内容包括图像读显存操作、 图像属性、图像ROI,很高兴能和大家分享!希望你能有所收获。
参考链接:
参考代码