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() #调用显示图画函数
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) #可以看到范围图片右上角部分
使用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) #图片缩放两倍
## 注:仿射变换会改变原始图片
使用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)