Python调用某函数时如果想跳过某个可选参数怎么办,以OpenCV的函数resize()为例

Posted 昊虹图像算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python调用某函数时如果想跳过某个可选参数怎么办,以OpenCV的函数resize()为例相关的知识,希望对你有一定的参考价值。

使用Python时,我们经常会遇到调用某函数时想跳过某个可选参数的情况。

比如在调用OpenCV的函数resize()时,就会遇到这个需求。

OpenCV的函数resize()的原型如下:

dst	=	cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]	)

各参数的意义大家可以参考博文 https://blog.csdn.net/wenhao_ir/article/details/51516579

现在我们要用到第四个和第五个参数fx和fy,而不想用第三个参数dst。为什么不想用第三个参数dst,因为其返回值就是第三个参数dst,如果我要填第三个参数dst,我就得事先初始化一个dst,那就把事情变麻烦了。
所以需求是用第四个和第五个参数fx和fy,而不用第三个参数dst。

怎么办呢?
其实很简单,第二个参数之后明确写上参数名就行了。这样说大家可能还是不清楚,举个例子大家就知道了。

# !/usr/bin/env python
# -*- coding: utf-8 -*-
# OpenCV的版本为4.1

import cv2 as cv
import sys

src = cv.imread("F:/material/images/P0005-BaoXiaofeng.jpg")
# 判断图片是否读取成功
if src is None:
    print('Error,Failed to read image.')
    sys.exit()
cv.imshow('src', src)

x_scale = 0.5
y_scale = 0.5

src_resize = cv.resize(src, (0, 0), fx=x_scale, fy=y_scale)
cv.imshow('src_resize', src_resize)

cv.waitKey(0)
cv.destroyAllWindows()

该代码的作用是把原图缩小为原来的0.5倍,运行结果如下:

可见,代码运行没有问题,成功的实现了我们的需求。

当然,也可以把关键语句:

src_resize = cv.resize(src, (0, 0), fx=x_scale, fy=y_scale)

写成:

src_resize = cv.resize(src, (0, 0), fx=0.5, fy=0.5)

效果是一样的。

总结一下:Python的语法支持传参时指定参数名,这样我们不想传的可选参数我们就可以不传,并且这个参数名在Pycharm中还会以暗红标亮,如下图所示:

以上是关于Python调用某函数时如果想跳过某个可选参数怎么办,以OpenCV的函数resize()为例的主要内容,如果未能解决你的问题,请参考以下文章

Angular如何传递跳过一些[重复]的可选构造函数参数

跳过指定函数参数

python函数相关

八Python-函数

C#基础 可选参数调用params无参静态构造函数

如何在 python 类中添加可选参数?