show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次我们研究了彩色图片的数据结构
- 三维矩阵
- 高度
- 宽度
- BGR三色元组
- 三维矩阵
- 可以自己定制某种特殊的图像
- 也可以复制现有图像的某个矩阵范围
- 可以对矩阵进行裁切操作吗?
- 可以直接设置高度和宽度吗?🤔
import cv2
img = cv2.imread("/home/shiyanlou/kun1.png")
imgInfo = img.shape
print(imgInfo)
height = imgInfo[0] # 获取图片高度
width = imgInfo[1] # 获取图片宽度
dstHeight = int(height * 0.5) # 设置目标高度为原始高度的一半
dstWidth = int(width * 0.5) # 设置目标宽度为原始高度的一半
dst = cv2.resize(img, (dstWidth,dstHeight)) # 参数1位图片,参数2位缩放后的像素
cv2.imshow('image', dst)
cv2.waitKey(0)
- 效果
import cv2
image = cv2.imread("/home/shiyanlou/kun1.png")
resized = cv2.resize(image, (200, 100), interpolation=cv2.INTER_AREA)
cv2.imshow('Resized Image',resized)
cv2.waitKey(3000)
print(resized.shape)
cv2.imwrite('./resized_img.png',resized)
- 指定大小进行缩放
- 可以放大得更大一点吗?
import cv2
img = cv2.imread("/home/shiyanlou/kun1.png")
imgInfo = img.shape
print(imgInfo)
height = imgInfo[0] # 获取图片高度
width = imgInfo[1] # 获取图片宽度
dstHeight = int(height * 2) # 设置目标高度为原始高度的一半
dstWidth = int(width * 2) # 设置目标宽度为原始高度的一半
dst = cv2.resize(img, (dstWidth,dstHeight)) # 参数1位图片,参数2位缩放后的像素
cv2.imshow('image', dst)
cv2.waitKey(0)
- 可以放大成原来四倍
- 缩放时候还有什么需要注意的吗?
- interpolation=cv.INTER_NEAREST
import cv2
img = cv2.imread("/home/shiyanlou/kun1.png")
imgInfo = img.shape
print(imgInfo)
height = imgInfo[0] # 获取图片高度
width = imgInfo[1] # 获取图片宽度
dstHeight = int(height * 2) # 设置目标高度为原始高度的一半
dstWidth = int(width * 2) # 设置目标宽度为原始高度的一半
dst = cv2.resize(img, (dstWidth,dstHeight), interpolation=cv2.INTER_NEAREST) # 参数1位图片,参数2位缩放后的像素
cv2.imshow('image', dst)
cv2.waitKey(0)
- 不同的插值算法会有什么不同的效果吗?
import cv2
img = cv2.imread("/home/shiyanlou/kun1.png")
img = img[77:127,216:260]
imgInfo = img.shape
print(imgInfo)
cv2.imshow('image', img)
cv2.waitKey(0)
- 先把头部准备出来
- 然后对比两种插值算法
import cv2
img = cv2.imread("/home/shiyanlou/kun1.png")
img = img[77:127,216:260]
imgInfo = img.shape
print(imgInfo)
cv2.imshow('image', img)
height = imgInfo[0]
width = imgInfo[1]
dstHeight = int(height * 3)
dstWidth = int(width * 3)
dst = cv2.resize(img, (dstWidth,dstHeight), interpolation=cv2.INTER_NEAREST)
cv2.imshow('INTER_NEAREST', dst)
dst = cv2.resize(img, (dstWidth,dstHeight), interpolation=cv2.INTER_CUBIC)
cv2.imshow('INTER_CUBIC', dst)
cv2.waitKey(0)
- 效果
- 两种插值算法还是有区别的
- 图像可以进行缩放操作
- 可以按照比例
- 也可以指定高度和宽度
- 在缩放的时候
- 可以使用不同的插值算法
- 还有什么好玩呢??🤔
- 我们下次再说 👋