opencv系列(一) --- opencv基础

素材

在这里插入图片描述

1.图片的读取

opencv可以调用imread函数将图片读取为一个三维坐标的一个点,分别代表高,宽,通道数 (注意此处是GBR而不是RGB)

import cv2
import matplotlib.pyplot as plt
img = cv2.imread(image.jpg) #调用cv2的图片读取函数读取图片
print(img.shape)

#下面代码是图片的显示函数,虽然cv2有内置的显示函数,但还是一般和matplotlib一起使用
plt.imshow(image) # 显示图片
plt.axis('off')	#除去坐标轴,可以将这一行去掉看看读出来的图片是怎样
plt.show()  #调用显示图画函数

显示结果: (1440, 1080, 3)
在这里插入图片描述

2 .图片部分提取

import cv2 
import matplotlib.pyplot as plt
image = cv2.imread('image.jpg')
(b,g,r) = image[0,0] #注意此处提取的是图片的通道部分,范围通道的三个参数
print(image[0,0])
# image[0,0] = (0,0,255) # 这样修改可以将图片改为红色
# image[0,0] = (255,0,0) # 这样修改可以将图片改为绿色
# image[0,0] = (0,255,0) # 这样可以将图片改变为蓝色
#可以自行的解除掉上面任意一行去测试
#由于我们经常使用图片的读取,因而将读取的内容写成一个新的函数
def show(image):
	plt.imshow(image)
	plt.axis('off')
	plt.show() 
## 开始图片的部分读取:

#图片的左上角处为坐标原点,x轴为宽,y轴为高

(h,w,c) = image.shape #分别代表高、宽、通道数
cX,cY = (w//2,h//2) #表示图片的长度的中心点,
tleft = image[0:cY,0:cX] #先写cY是因为cY是高,cX是宽
tright = image[0:cY, cX:w]
bleft = image[cY:h, 0:cX]
bright = image[cY:h, cX:w]
show(tleft)  #可以看到范围图片左上角部分 
show(tright)  #可以看到范围图片右上角部分 
show(bleft)  #可以看到范围图片左下角部分 
show(bright)  #可以看到范围图片右上角部分 

实例结果:
[29 32 46]
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.图片的旋转

使用getRotationMatrix2D来进行图片的旋转
在这里插入图片描述
代码示例:

import cv2 
import matplotlib.pyplot as plt
#由于我们经常使用图片的显示,因而将读取的内容携程一个新的函数
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show() 
# 图片读取也设置一个新的函数,则有
def imread(image):
    image = cv2.imread(image)
    image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image
#下面测试一下定义的函数函数
image = imread('image.jpg')
show(image)

测试结果:
在这里插入图片描述

import cv2 
import matplotlib.pyplot as plt
#由于我们经常使用图片的显示,因而将读取的内容携程一个新的函数
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show() 
# 图片读取也设置一个新的函数,则有
def imread(image):
    image = cv2.imread(image)
    image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image
#下面测试一下定义的函数函数
# image = imread('image.jpg')
# show(image)
# 下面开始图片的翻转
show(image)
(h,w) = image.shape[0:2] #提取图片的高和宽,0:2表示提取数组的第0个元素和第1个元素
(cX,cY) = (w//2,h//2) # 旋转中心
M = cv2.getRotationMatrix2D((cX,cY),45,1.0) # 45表示45°逆时针旋转,1.0原先图片大小
image = cv2.warpAffine(image,M,(w,h)) #对图片做仿射变换,参数为(输入图片,输出图片,图片矩阵)  后面教程会详细解释
show(image)
## 注:仿射变换会改变原始图片

旋转结果:
在这里插入图片描述

import cv2 
import matplotlib.pyplot as plt
#由于我们经常使用图片的显示,因而将读取的内容携程一个新的函数
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show() 
# 图片读取也设置一个新的函数,则有
def imread(image):
    image = cv2.imread(image)
    image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image
#下面测试一下定义的函数函数
# image = imread('image.jpg')
# show(image)
# 下面开始图片的翻转
show(image)
(h,w) = image.shape[0:2] #提取图片的高和宽,0:2表示提取数组的第0个元素和第1个元素
(cX,cY) = (w//2,h//2) # 旋转中心
M = cv2.getRotationMatrix2D((cX,cY),-45,1.0) # 45表示45°顺时针旋转,1.0为原先图片大小
image = cv2.warpAffine(image,M,(w,h)) #对图片做仿射变换,参数为(输入图片,输出图片,图片矩阵)  后面教程会详细解释
show(image) #顺时针旋转45°
## 注:仿射变换会改变原始图片,故刚刚的图片初始时逆时针45°

旋转结果:
在这里插入图片描述
在这里插入图片描述

import cv2 
import matplotlib.pyplot as plt
#由于我们经常使用图片的显示,因而将读取的内容携程一个新的函数
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show() 
# 图片读取也设置一个新的函数,则有
def imread(image):
    image = cv2.imread(image)
    image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image
#下面测试一下定义的函数函数
# image = imread('image.jpg')
# show(image)
# 下面开始图片的翻转
show(image)
(h,w) = image.shape[0:2] #提取图片的高和宽,0:2表示提取数组的第0个元素和第1个元素
(cX,cY) = (w//2,h//2) # 旋转中心
M = cv2.getRotationMatrix2D((cX,cY),0,2.0) # 0表示不旋转 ,2.0为原先图片大小缩放2倍
image = cv2.warpAffine(image,M,(w,h)) #对图片做仿射变换,参数为(输入图片,输出图片,图片矩阵)  后面教程会详细解释
show(image) #图片缩放两倍
## 注:仿射变换会改变原始图片

放大结果:
在这里插入图片描述

4.改变图片大小

使用cv2.resize()来改变图片大小
在这里插入图片描述
在这里插入图片描述
注:如果想了解集中插值的各种方法,请到数字图像处理解读(制作中)观看
代码显示:

import cv2
import matplotlib.pyplot as plt
#由于我们经常使用图片的显示,因而将读取的内容携程一个新的函数
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show() 
# 图片读取也设置一个新的函数,则有
def imread(image):
    image = cv2.imread(image)
    image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image
image = imread('image.jpg')
print("原始图片大小:" +str(image.shape)) #显示做了图片变换的图片大小
show(image)
width = 150
high = 150
image = cv2.resize(image,  (width,high)) #输出尺寸格式为(宽,高)
print("改变后图片大小:" + str(image.shape)) #显示做了图片变换的图片大小
show(image)

运行结果:
原始图片大小:(150, 150, 3)改变后图片大小:(150, 150, 3)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值