OpenCV-Python图像金字塔:向下取样和向上取样
简介OpenCV-Python图像金字塔向下取样和向上取样使用高斯金字塔,主要使用如下两个函数:cv2.pyRdown和cv2.pyrUp.
一、向下取样
在图像向下取样中,使用最多的是高斯金字塔。它将对图像Gi进行高斯核卷积,并删除图像中所有的偶数行和列,最终缩小图像,其中高斯卷积核运算就是对整幅图像进行加权平均的过程,每一个像素点的值,都是由其本身和领域内的其他像素值经过加权平均后得到。向下取样后,图像面积变为原图像的四分之一,图像的长宽变为原图像的二分之一。
向下取样使用函数:cv2.pyRdown
dst = cv2.pyRdown(src, dstsize, borderType)
- src: 表示输入图像
- dst: 表示输出图像的大小,和输入图像具有一样的尺寸和类型
- dstsize:表示输出图像的大小,默认值位Size()
- borderType:表示元素外推方法
示例:
import cv2
src_img = cv2.imread("1-gray.bmp", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
s1 = cv2.pyrDown(src_img)
cv2.imshow("s-1", s1)
s2 = cv2.pyrDown(s1)
cv2.imshow("s-2", s2)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、向上取样
在图像向上取样时由小图像不断放大图像的过程。它将图像每个方向上扩大为原图像的2倍,新增的行和列均用0来填充,并使用与向下取样相同的卷积核乘以4,再与放大的图像进行卷积核运算,以获得”新增像素”的新增。
向上取样的函数: cv2.pyrUp
dst = cv2.pyrUp(src, dstsize, borderType)
- src:表示输入图像
- dstsize:表示输出图像的大小,和输入图像具有一样的尺寸和类型
- borderType:表示像素往外推
示例:
import cv2
src_img = cv2.imread("1-min.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
s1 = cv2.pyrUp(src_img)
cv2.imshow("s-1", s1)
s2 = cv2.pyrUp(s1)
cv2.imshow("s-2", s2)
cv2.waitKey(0)
cv2.destroyAllWindows()
向上取样和向下取样是不可逆的,如果将一个图像进行向下取样,在对图像进行向上取样,不能得到原图.示例:
import cv2
src_img = cv2.imread("1-1.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
s1 = cv2.pyrDown(src_img)
cv2.imshow("s-1", s1)
s2 = cv2.pyrUp(s1)
cv2.imshow("s-2", s2)
cv2.waitKey(0)
cv2.destroyAllWindows()

从上图可以看出,第一张图和最后一样清晰度是不一样的.
最近关注流媒体服务器来做网络直播,本想使用阿里云的流媒体服务器,由于费用的问题还是想能否自己搭建一个流媒体服务器供自己测试使用。果不其然,Nginx居然如此强大,可以用来做流媒体服务器。本文将具体介绍流媒体服务器的搭建过程和使用过程。
groupadd命令用户创建新的用户组。但是groupadd命令一般用途不大,因为在使用useradd命令创建用户的时候同时还会创建与用户同名的用户组。
修改centos7系统语言
Mysql二进制日志文件是非常重要,记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件,所以本文主要记录Mysql二进制文件如何开启和类型。
开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification),这就是开闭原则的经典定义。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题