Skip to content

Latest commit

 

History

History
153 lines (121 loc) · 4.02 KB

609-1189943-BGR色彩模式图像缩放.sy.md

File metadata and controls

153 lines (121 loc) · 4.02 KB
show version enable_checker
step
1.0
true

opencv

回忆

  • 上次我们研究了彩色图片的数据结构
    • 三维矩阵
      • 高度
      • 宽度
      • 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)
  • 效果

图片描述

  • 两种插值算法还是有区别的

总结

  • 图像可以进行缩放操作
    • 可以按照比例
    • 也可以指定高度和宽度
  • 在缩放的时候
    • 可以使用不同的插值算法
  • 还有什么好玩呢??🤔
  • 我们下次再说 👋