當(dāng)前位置:
首頁(yè) >
【图像处理】图像内插“最近邻插值 最近邻内插法(Nearest Neighbour Interpolate)”代码演示(调整图像大小、放大、缩小)
發(fā)布時(shí)間:2025/3/20
31
豆豆
生活随笔
收集整理的這篇文章主要介紹了
【图像处理】图像内插“最近邻插值 最近邻内插法(Nearest Neighbour Interpolate)”代码演示(调整图像大小、放大、缩小)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 何為內(nèi)插——最近鄰插值,引用自《數(shù)字圖像處理——第三版》
- 代碼演示
- 1、設(shè)置縮放倍數(shù)來(lái)放大、縮小圖像
- 2、設(shè)置圖片最終分辨率來(lái)放大、縮小圖像
- 代碼中使用的源圖
- 20200625 注意bug
何為內(nèi)插——最近鄰插值,引用自《數(shù)字圖像處理——第三版》
代碼演示
1、設(shè)置縮放倍數(shù)來(lái)放大、縮小圖像
# -*- coding: utf-8 -*- """ @File : 最近鄰插值.py @Time : 2020/6/23 9:53 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import cv2 as cv import numpy as npdef nni(img, scale):srcH, srcW, _ = img.shapedstH, dstW = round(srcH * scale[0]), round(srcW * scale[1])img_ = np.zeros((dstH, dstW, 3), dtype=np.uint8)# 列外層,行內(nèi)層# for i in range(dstH - 1): # 錯(cuò)了,不用減一for i in range(dstH):# for j in range(dstW - 1): # 錯(cuò)了,不用減一for j in range(dstW):img_[i, j] = img[round(srcH * i / dstH), round(srcW * j / dstW)]return img_# 在這里設(shè)置放大倍數(shù)(縱,橫) scale = 0.3, 0.5 # print(type(scale)) # <class 'tuple'> img = cv.imread('Lenna_clip.jpg') img_ = nni(img, scale) cv.imshow('win1', img) # 現(xiàn)實(shí)原圖 cv.imshow('win2', img_) # 顯示縮放后的圖 cv.waitKey(0)運(yùn)行結(jié)果:
可見(jiàn)圖片按照我們的要求,縱向變成了原來(lái)的0.3倍,橫向變成了原來(lái)的0.5倍
2、設(shè)置圖片最終分辨率來(lái)放大、縮小圖像
# -*- coding: utf-8 -*- """ @File : 最近鄰插值.py @Time : 2020/6/23 9:53 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import cv2 as cv import numpy as npdef nni(img, resolution):srcH, srcW, _ = img.shapedstH, dstW = resolutionimg_ = np.zeros((dstH, dstW, 3), dtype=np.uint8)# 列外層,行內(nèi)層for i in range(dstH - 1):for j in range(dstW - 1):img_[i, j] = img[round(srcH * i / dstH), round(srcW * j / dstW)]return img_# 在這里設(shè)置圖片最終分辨率(縱,橫) resolution = 300, 600 # print(type(scale)) # <class 'tuple'> img = cv.imread('Lenna_clip.jpg') img_ = nni(img, resolution) cv.imshow('win1', img) cv.imshow('win2', img_) cv.waitKey(0)結(jié)果:
可見(jiàn)圖片按照我們的要求,將圖片最終分辨率縮放成了600×300
代碼中使用的源圖
參考文章1:圖像處理中的“內(nèi)插”是什么?插值、圖像內(nèi)插值、圖像間插值、重取樣(用已知數(shù)據(jù)來(lái)估計(jì)未知位置的數(shù)值的處理)(最近鄰內(nèi)插法、雙線(xiàn)性?xún)?nèi)插)
參考文章2:最近鄰插值(nearest neighbor)-----python
20200625 注意bug
注意以上代碼可能有bug,當(dāng)圖片橫向或縱向放大時(shí),使用round()函數(shù)有可能會(huì)使得靠近邊緣的像素下標(biāo)越界導(dǎo)致報(bào)錯(cuò),如果要優(yōu)化,需增加if判斷!!!!
總結(jié)
以上是生活随笔為你收集整理的【图像处理】图像内插“最近邻插值 最近邻内插法(Nearest Neighbour Interpolate)”代码演示(调整图像大小、放大、缩小)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python报错:ModuleNotFo
- 下一篇: 【数字图像处理】图像内插“双线性内插法