numpy np tips:使用opencv对数组插值放缩到固定形状 cv2.resize(res, dsize=(64, 64), interpolation=cv2.INTER_CUBIC)

res = cv2.resize(res, dsize=(64, 64), interpolation=cv2.INTER_CUBIC)

在这里插入图片描述

import cv2
 
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)

#percent by which the image is resized
scale_percent = 50

#calculate the 50 percent of original dimensions
width = int(src.shape[1] * scale_percent / 100)
height = int(src.shape[0] * scale_percent / 100)

# dsize
dsize = (width, height)

# resize image
output = cv2.resize(src, dsize)

cv2.imwrite('D:/cv2-resize-image-50.png',output) 

cv2.error: OpenCV(4.5.2) resize.cpp:4051: error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize’

原因: None- 空图像 - 显示 ssize.empty()
# 我的是数组维度[1,1,h,w] 用a = np.squeeze(a) https://blog.youkuaiyun.com/ResumeProject/article/details/125446333

参考与更多

https://stackoverflow.com/questions/67737650/cv2-error-opencv4-5-2-resize-cpp4051-error-215assertion-failed-ssize
https://www.w3bai.com/en-US/jquery/jquery_dimensions.html
https://pythonexamples.org/python-opencv-cv2-resize-image/

<think>好的,用户想了解如何使用OpenCVresize函数中的dsize参数,特别是需要一个使用示例。首先,我需要回忆一下OpenCVresize函数的基本用法。记得resize函数用于调整图像尺寸,其中dsize参数是关键,它指定了输出图像的大小。 接下来,我应该确认dsize参数的格式。根据OpenCV文档,dsize是一个元组,表示目标图像的宽度和高度,顺序是(宽度,高度)。比如(300, 200)表示宽度300像素,高度200像素。这点需要明确,因为用户可能容易搞反顺序。 然后,用户可能需要具体的代码示例。我应该提供一个简单的例子,包括读取图像、使用resize函数并展示结果。同时,注意代码的正确性,比如确保图像路径存在,或者使用绝对路径避免错误。另外,可能需要提醒用户安装必要的库,比如OpenCVNumPy。 还要考虑不同的插值方法,比如cv2.INTER_LINEAR是默认的,但用户可能需要其他方法的情况。比如在大图像时使用cv2.INTER_CUBIC,或者在缩小图像时使用cv2.INTER_AREA。虽然用户主要问的是dsize参数,但简要提及插值方法可能有帮助。 另外,需要注意dsize参数和缩因子参数fx/fy之间的关系。如果同时指定了dsize和fx/fy,dsize会优先。这点可能需要说明,避免用户混淆。 然后,用户可能有隐藏的需求,比如调整尺寸后的应用场景,或者处理不同通道的图像(如灰度图或彩色图)。需要确认示例是否覆盖这些情况。不过,通常resize函数对通道数没有特别要求,处理方式相同。 最后,生成的相关问题需要考虑用户可能进一步的需求,比如调整尺寸时的抗锯齿处理、性能优化、保持宽高比的方法,以及不同插值方法的比较。这些问题可以帮助用户更深入地理解resize函数的使用和优化。 总结一下,回答需要包括dsize参数的说明、代码示例、注意事项和相关问题。确保信息准确,引用正确,并符合用户的需求层次,从基础使用到进阶应用。</think>### OpenCVresize函数的dsize参数使用说明 #### 1. 参数定义与语法 `cv2.resize()`的`dsize`参数用于直接指定输出图像尺寸,格式为$(width, height)$,其优先级高于通过缩因子计算的尺寸。函数语法为: $$dst = cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])$$ #### 2. 基础使用示例 ```python import cv2 # 读取图像(替换为实际路径) img = cv2.imread('input.jpg') # 使用dsize直接指定目标尺寸(宽度300,高度200) resized_img = cv2.resize(img, dsize=(300, 200)) cv2.imshow('Resized Image', resized_img) cv2.waitKey(0) ``` #### 3. 动态尺寸调整 结合图像原始尺寸进行计算(保持宽高比): ```python h, w = img.shape[:2] new_width = 400 # 设置目标宽度 new_height = int(h * (new_width / w)) # 按比例计算高度 resized_img = cv2.resize(img, (new_width, new_height)) ``` #### 4. 注意事项 - 尺寸顺序必须为$(宽度, 高度)$,与图像矩阵的$(行, 列)$相反 - 当同时指定`dsize`和缩因子`fx/fy`时,`dsize`优先级更高[^1] - 推荐使用`cv2.INTER_AREA`插值方法进行缩小操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值