opencv收录
1.介绍OpenCV是计算机视觉中经典的专用库,其支持多语言、跨平台,功能强大。OpenCV-Python为OpenCV提供了Python接口,使得使用者在Python中能够调用C/C++,在保证易读性和运行效率的前提下,实现所需的功能。2.图像处理基本方法1、图像读入:cv2.imread()使用函数cv2.imread() 读入图像。第一个参数是图片的路径,第二个参数是要告诉函数应该如何读取这
·
1.介绍
OpenCV是计算机视觉中经典的专用库,其支持多语言、跨平台,功能强大。
OpenCV-Python为OpenCV提供了Python接口,使得使用者在Python中能够调用C/C++,在保证易读性和运行效率的前提下,实现所需的功能。
2.图像处理基本方法
1、图像读入:cv2.imread()
使用函数cv2.imread() 读入图像。第一个参数是图片的路径,第二个参数是要告诉函数应该如何读取这幅图片。
• cv2.IMREAD_COLOR:读入一副彩色图像。
• cv2.IMREAD_GRAYSCALE:以灰度模式读入图像
• cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道
import cv2
img = cv2.imread('lena.jpg',0)
2、显示图像cv2.imshow()
使用函数cv2.imshow() 显示图像。窗口会自动调整为图像大小。第一个参数是窗口的名字,第二个参数图像。
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows() #cv2.destroyWindow('image')
3、保存图像cv2.imwrite()
cv2.imwrite(file,img,num)保存图像。第一个参数是要保存的文件名,第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3.
cv2.imwrite('lena.png',img)
4、图像的分割与合并
import cv2
lena=cv2.imread("lenacolor.png")
b, g, r=cv2.split(lena)
bgr=cv2.merge([b, g, r])
rgb=cv2.merge([r, g, b])
cv2.imshow("lena", lena)
cv2.imshow("bgr", bgr)
cv2.imshow("rgb", rgb)
cv2.waitKey()
cv2.destroyAllWindows()
5、获取图像属性
在图像处理过程中,经常需要获取图像的属性,例如图像的大小、类型等。这里介绍几个常用的属性。
● shape:如果是彩色图像,则返回包含行数、列数、通道数的数组;如果是二值图像或者灰度图像,则仅返回行数和列数。通过该属性的返回值是否包含通道数,可以判断一幅图像是灰度图像(或二值图像)还是彩色图像。
● size:返回图像的像素数目。其值为“行×列×通道数”,灰度图像或者二值图像的通道数为1。
● dtype:返回图像的数据类型。
6、图像的运算
①使用运算符“+”对像素值为a和b的两个像素点进行操作时,运算结果为:mod(a+b,256),就是两像素值相加后的结果对256取模求余数。
import numpy as np
image1=np.random.randint(0,256,(3,3),dtype=np.uint8)
image2=np.random.randint(0,256,(3,3),dtype=np.uint8)
image3=image1+image2
print("image1",image1)
print("image2",image2)
print("image1",image3)
②函数cv2.add()可以用来计算图像像素值相加的和。像素和小于255时,为和值;运算结果大于255时,视为255。
import cv2
import numpy as np
image1=np.random.randint(0,256,(3,3),dtype=np.uint8)
image2=np.random.randint(0,256,(3,3),dtype=np.uint8)
image3=cv2.add(image1,image2)
print("image1",image1)
print("image2",image2)
print("image1",image3)
③OpenCV中常见的按位逻辑运算函数如下
dst = cv2.bitwise_and( src1, src2[, mask]] )按位与
dst = cv2.bitwise_or( src1, src2[, mask]] )按位或
dst = cv2.bitwise_xor( src1, src2[, mask]] ) 按位异或
dst = cv2.bitwise_not( src[, mask]] ) 按位取反
dst 表示与输入值具有同样大小的 array 输出值
src1,src2表示第一和第二个 array 或 scalar 类型的输入值
mask 表示可选操作掩码,8 位单通道 array
备注:
异或运算也叫半加运算,其运算法则与不带进位的二进制加法类似。
运算规则:0^ 0=0; 0^ 1=1; 1^ 0=1; 1^1=0;
图像的加密与解密,通过异或运算实现
7、RGB与灰度的相互转换
当图像由RGB色彩空间转换为GRAY色彩空间
Gray=0.299*R+0.587*G+0.114*B
上述是标准的转化方式也是openCV中的转换方式,也可以采用简化形式完成转换
Gray=(R+G+B)/3
当图像由GRAY彩色空间转换为RGB色彩空间时,
R=GRAY G=GRAY B=GRAY
cvtColor(src,code,dst,dstCn=0)函数
参数
src: 输入图片
code:颜色域转换代码
dst:输出图片
dstCn:输出图片的通道数量,如果这个参数的为0,则将与输入图片保持一致。
输出
dst: 输出图片(size和depth与src一样)
#转化为灰度图
cv2.cvtColor(pic,cv2.COLOR_RGB2GRAY)
HSV色彩空间从心理学和视觉的角度出发,提出人眼的色彩知觉主要包含三要素
H:色调
S:饱和度
V:亮度
8、图像的缩放
各参数详解:
cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)
scr:原图
dsize:输出图像尺寸
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
interpolation:插值方法
9、图像的翻转
cv2.flip(filename, flipcode)
filename:需要操作的图像
flipcode:翻转方式
1 水平翻转
0 垂直翻转
-1 水平垂直翻转
10、图像的仿射、透视、重映射、阀值处理
仿射:通过一系列的几何变换实现平移和旋转。
透视:仿射变换可将矩形映射为任意平行四边形,透视变换则可以将矩形映射为任意四边形。
重映射:把一副图像内的像素点放置到另外一副图像内的指定位置。
阀值处理:剔除图像内像素值高于一定值或者低于一定值的像素点。
11、图像平滑处理
均值滤波:dst = cv2.blur(src,ksize)
dst:返回值
src:需要处理的图像
ksize:滤波核的大小(5,5)
方框滤波:自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。
高斯滤波:在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。
均值滤波:用领域内所有像素值的中间值来替代当前像素点的像素值。
双变滤波:综合考虑距离和色彩的权重结果。
12、图像的形态学操作
腐蚀:腐蚀是最基本的形态学操作之一,它能够将图像的边界点消除,使图像沿着边界向内收缩,也可以将小于指定结构体元素的部分去除。
膨胀:膨胀操作能对图像的边界进行扩张,将与当前对象接触到的背景点合并到当前对象内,从而实现将图像的边界点向外扩张。
开运算:先将图像腐蚀,再对腐蚀的结果进行膨胀。(去噪、计数)
闭运算:先膨胀、后腐蚀。
梯度运算:用图像的膨胀图像减腐蚀图像,该操作可以获取原始图像中前景图像的边缘。
礼帽运算:用原始图像减去开运算图像,该操作能够获取图像的噪声信息。
黑帽运算:用闭运算减去原始图像,该操作能够获取图像内部的小孔,或前景色中的小黑点,或者得到比原始图像的边缘更暗的边缘部分。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)