本文介绍: 欲使用opencvresize函数图像沿着纵轴放大一倍,即原来的图像大小为(384, 512), 现在需要图像放大为(768, 512)。但运行代码后出现报错

需求背景

使用opencvresize函数图像沿着纵轴放大一倍,即原来的图像大小为(384, 512), 现在需要将图像放大为(768, 512)。
在这里插入图片描述

源码

import cv2
import numpy as np

# 生成初始图像
img = np.zeros((384, 512), dtype=np.uint8)
img[172:212, 32:-32] = 255
H, W = img.shape
print(H, W) # 384 512

img = cv2.resize(img, dsize=None, fy=2) # 欲利用cv2.resize函数的fy参数沿纵轴将初始图像放大一倍
new_H, new_W = img.shape
print(new_H, new_W) 

运行报错

error: (-215:Assertion failed) inv_scale_x > 0 in functioncv::resize

完整报错截图

在这里插入图片描述
报错信息可以看出,断言(Assertion)语句断言失败,即希望 inv_scale_x > 0,但实际 inv_scale_x <=0。
出现上面报错原因在于cv2.resize参数之一fx的默认值是0,不满足inv_scale_x > 0的条件。因此,虽然我们仅需要沿y方向大图像,但仍然需要指定fx=1(沿x轴方向大小不变)

修改后的源码

import cv2
import numpy as np

# 生成初始图像
img = np.zeros((384, 512), dtype=np.uint8)
img[172:212, 32:-32] = 255
H, W = img.shape
print("before", H, W) # 384 512

img = cv2.resize(img, dsize=None, fy=2, fx=1) # 欲利用cv2.resize函数的fy参数沿纵轴将初始图像放大一倍
new_H, new_W = img.shape
print("after", new_H, new_W) # 768 512
cv2.imshow('img', img)
cv2.waitKey(0)

运行结果
在这里插入图片描述

在这里插入图片描述
运行成功!

结束

如果本博文对你有所帮助,可以点个赞/收藏支持一下,如果能够持续关注小编感激不尽~
小编会坚持创作持续优化博文质量,以小见大,给读者带来更好阅读体验~

原文地址:https://blog.csdn.net/qq_41813454/article/details/134755590

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29832.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注