是OpenCV函数“pyrDown”的设计缺陷吗

2024-09-27 04:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我看到pyrDown的声明:

CV_EXPORTS_W void pyrDown( InputArray src, OutputArray dst,
                           const Size& dstsize=Size(), int borderType=BORDER_DEFAULT );

所以我假设第三个参数dstsize可能是这样的:Size(src.cols/4, src.rows/4。但正如docs所说:

in any case, the following conditions should be satisfied:

enter image description here

所以只有默认大小Size((src.cols+1)/2, (src.rows+1)/2)是合法的。那么为什么需要参数dstsize?好像没用。。。在

在这里我发现了一个类似的问题帖子:

http://answers.opencv.org/question/25281/pyrup-only-for-doubling-size/

@berak在那里评论道:

pyramids only work in powers of 2

虽然我认为金字塔只有2个金字塔中的一个有效,是真的吗?在


Tags: insrc声明only参数sizecvrows
1条回答
网友
1楼 · 发布于 2024-09-27 04:21:11

在英语中:当src的宽度/高度是奇数时,例如2*x+1,那么当使用pyrDown时,一半将是{},处理这种情况的默认方法是ceil-it,这是Size((src.cols+1)/2, (src.rows+1)/2),但是我们也可以通过设置dstsize来构建它。在

中文: (夏时制)

Here is an image with shape of (183, 275, 3).

enter image description here

Then let's test pyrDown in Python, there are four possible dstsizes:

>>> img = cv2.imread(fname)
>>> img.shape
(183, 275, 3)
>>> img1 = cv2.pyrDown(img)
>>> img1.shape  # the default size is `Size((src.cols+1)/2, (src.rows+1)/2)`
(92, 138, 3)
>>> img2 = cv2.pyrDown(img, dstsize=(137, 91))
>>> img2.shape
(91, 137, 3)
>>> img3 = cv2.pyrDown(img, dstsize=(137, 92))
>>> img3.shape
(92, 137, 3)
>>> img4 = cv2.pyrDown(img, dstsize=(138, 91))
>>> img4.shape
(91, 138, 3)

注:

^{pr2}$

相关问题 更多 >

    热门问题