北京网站设计网站公司,班级优化大师网页版,苏州教育平台网站建设,宝安新闻引言
在numpy知识库#xff1a;深入理解numpy.resize函数和数组的resize方法中#xff0c;小编较为详细地探讨了numpy的resize函数背后的机理。从结果来看#xff0c;numpy.resize函数并不适合对图像进行缩放操作。而opencv中的resize函数虽然和numpy的resize函数同名…引言
在numpy知识库深入理解numpy.resize函数和数组的resize方法中小编较为详细地探讨了numpy的resize函数背后的机理。从结果来看numpy.resize函数并不适合对图像进行缩放操作。而opencv中的resize函数虽然和numpy的resize函数同名但却支持图像的缩放操作。
需求场景
欲对高为384宽为512的图像进行放大或缩小。
生成初始图像
代码如下
import cv2
import numpy as np# 生成初始图像
img np.zeros((384, 512), dtypenp.uint8)
img[172:212, 32:-32] 255
print(img.shape) # (高宽) --- (384, 512)cv2.imshow(img, img)
cv2.waitKey(0)将初始图像的【高】放大一倍(384 -- 768)
代码如下
import cv2
import numpy as np# 生成初始图像
img np.zeros((384, 512), dtypenp.uint8)
img[172:212, 32:-32] 255
H, W img.shape # img.shape 分别记录了图像的【高】和【宽】 -- 【高前宽后】
print(before, H, W) # 384 512# 可行的方案1 ———— 使用cv2.resize函数的dsize参数指定输出图像的宽高
# dsize的第一个参数指定的是输出图像的【宽】第二个才是【高】 -- 【宽前高后】
# -- 与img.shape正好相反使用cv2.resize函数的dsize参数需要特别注意。
img cv2.resize(img, dsize(W, H*2)) # 注意dsize参数的使用方式# 可行的方案2 ———— 使用cv2.resize函数的fy参数
# 要点1 fy2表示沿着y轴(高)方向放大一倍
# 要点2 fx1虽然没有起到作用但不可省略
# 要点3 dsize参数必须设置为None
img cv2.resize(img, dsizeNone, fx1, fy2)) # 沿着高的方向将初始图像放大一倍
# fx 2, fy 1 --- 宽放大一倍高保持不变
# fx 0.5 fy 1 --- 宽缩小为原来1/2高保持不变
# fx 1 fy 0.5 --- 高缩小为原来1/2宽保持不变# 打印新图像大小
new_H, new_W img.shape
print(after, new_H, new_W) # 768 512# 显示图像
cv2.imshow(img, img)
cv2.waitKey(0)运行结果 结束语
如果本博文对你有所帮助可以点个赞/收藏支持一下如果能够持续关注小编感激不尽~ 小编会坚持创作持续优化博文质量以小见大给读者带来更好的阅读体验~