OpenCV单通道图像按像素成倍比例放大(无高斯平滑处理)

OpenCV中的resize函数可以对图像做任意比例的放大(/缩小)处理,该处理过程会对图像做高斯模糊化以保证图像在进行放大(/缩小)后尽可能保留源图像所展现的具体内容(消除固定频率插值/采样带来的香农采样信息损失),但在有些场景中该方法不适用,如:部分应用场景只为了展现图像具体像素的色彩信息,则其就不需要对具体输入的图像做高斯平滑处理,则此场景需要自行实现,实现代码如下:

python 复制代码
def enlarge_without_gauss(img, ratio:int):
    h,w = img.shape
    img_x_ratio = np.zeros((img.shape[0]*ratio, img.shape[1]*ratio), dtype=np.uint8)
    for h in range(img.shape[0]):
        for w in range(img.shape[1]):
            img_x_ratio[h*ratio:h*ratio+ratio, w*ratio:w*ratio+ratio] = img[h,w]
    return img_x_ratio

与OpenCV自带的resize函数放大对比简易比较代码如下:

python 复制代码
import numpy as np
import cv2

def enlarge_without_gauss(img, ratio:int):
    h,w = img.shape
    img_x_ratio = np.zeros((img.shape[0]*ratio, img.shape[1]*ratio), dtype=np.uint8)
    for h in range(img.shape[0]):
        for w in range(img.shape[1]):
            img_x_ratio[h*ratio:h*ratio+ratio, w*ratio:w*ratio+ratio] = img[h,w]
    return img_x_ratio

# 随机产生一张单通道图像
img = np.random.rand(80, 120)
img = (img * 255).astype(np.uint8)
cv2.imshow("img", img)

# 设置缩放比例
RATIO = 8

# 按具体像素位放大
img_enlarge_xN_without_gauss = enlarge_without_gauss(img, RATIO)
cv2.imshow("enlarge_xN_without_gauss", img_enlarge_xN_without_gauss)

# 使用opencv自带函数resize放大
h, w = img.shape
img_resize_xN = cv2.resize(img, (w*RATIO, h*RATIO))
cv2.imshow("resize_xN", img_resize_xN)

cv2.waitKey(0)

随机产生的原图如下:

按像素放大效果(设置的8倍):

使用opencv resize函数放大(设置的8倍):

相关推荐
只怕自己不够好1 小时前
OpenCV 图像运算全解析:加法、位运算(与、异或)在图像处理中的奇妙应用
图像处理·人工智能·opencv
华清远见IT开放实验室3 小时前
【每天学点AI】实战图像增强技术在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·计算机视觉
只怕自己不够好3 小时前
《OpenCV 图像缩放、翻转与变换全攻略:从基础操作到高级应用实战》
人工智能·opencv·计算机视觉
安静读书9 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
小陈phd9 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
如若12314 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
lsjweiyi17 小时前
极简AI工具箱网站开源啦!
opencv·开源·微信支付·支付宝支付·百度ai·极简ai工具箱·ai图像处理
Jack黄从零学c++20 小时前
opencv(c++)---自带的卷积运算filter2D以及应用
c++·人工智能·opencv
饭碗、碗碗香1 天前
OpenCV笔记:图像去噪对比
人工智能·笔记·opencv·计算机视觉
是Dream呀2 天前
Python从0到100(七十三):Python OpenCV-OpenCV实现手势虚拟拖拽
开发语言·python·opencv