日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二次线性插值实现图像放大(计算机视觉)

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二次线性插值实现图像放大(计算机视觉) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、實驗目的

利用python 語言編程實現縮小放大,對比兩種方法得到放大圖像的差異,進一步理解計算機視覺中圖像縮小及放大的各種方法及其原理。同時培養學生的編程能力。

二、實驗硬、軟件環境

筆記本電腦、windows10系統,Visual Studio Code編輯器,opencv視覺庫,numpy庫, matplolib庫。

三、實驗內容及步驟

(一)實驗內容?

使用python編程,實現圖片的縮小與放大。

(二)實驗過程

1. python編程實現圖像的縮小。

基于opencv讀取包含個人人臉的圖像。

調用opencv中的庫函數,使用圖像的縮小。

img=cv2.imread('xiao.jpg')

y ,x = img.shape[0:2]

圖像太小,縮小后 作為基本圖像,確定寬高。

while x>=500:

img2=cv2.resize(img,(int(0.5*x),int(0.5*y)))

y ,x = img2.shape[0:2]

??? img=img2

cv2.imshow('img2',img2)

H,W=img2.shape[0:2]

連續縮小

while x>=200:

??? img3=cv2.resize(img2,(int(0.5*x),int(0.5*y)))

??? cv2.imshow('showing',img3)???

??? y ,x = img3.shape[0:2]

??? img2=img3

H1,W1=img3.shape[0:2]

s=H/H1

print(s)

最近鄰插值 放大

Iimg4=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_NEAREST) #縮放圖像

cv2.imshow('最近鄰插值',img4)

雙線性插值

img5=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_LINEAR) #縮放圖像

cv2.imshow('雙線性插值法',img5)

保存縮小后圖像到文件夾中。

2. 基于雙線性插值對1中縮小后的圖像進行放大。

3. 基于最近鄰插值法對1,中的縮小的圖像進行放大。

4.記錄原圖,縮小后的圖像,兩種方法放大的圖像。

5.上述得到的圖像均保存到文件夾中。命名格式 ?**人基準圖,縮小圖,最近鄰放大圖,雙線性放大圖

人基準圖:

縮小圖:

最近鄰放大圖:

雙線性放大圖:

(三)比較分析兩種放大結果圖像的差異,并分析原因。比較與原圖的差異,分析原因。

答:這兩放大的圖像清晰度都不高,特別是最近鄰插值有嚴重的鋸齒現象,灰度值不連續,而雙線性插值灰度值連續,圖像比較平滑連續

附test1.py:(記得和照片放一個文件夾)

from imp import reload

from re import S
import cv2
img=cv2.imread('
xiao.jpg') ? #讀取圖像
#sc =[1,0.2,0.5,1.5,2] ? #設置圖像放縮比例
cv2.imshow('showimg',img) ?#顯示圖像
y ,x = img.shape[0:2]
#圖像太小,縮小后 作為基本圖像,確定寬高
while x>=500:
? ? img2=cv2.resize(img,(int(0.5*x),int(0.5*y))) #縮放圖像
? ? cv2.imwrite('xiao1.jpg',img2)
? ? y ,x = img2.shape[0:2]
? ? img=img2
#cv2.imwrite('xiao.jpg',img2)
cv2.imshow('img2',img2) #顯示圖像
H,W=img2.shape[0:2]
#####連續縮小
while x>=200:
? ? img3=cv2.resize(img2,(int(0.5*x),int(0.5*y))) #縮放圖像
? ? cv2.imshow('showing',img3) ? ?#顯示圖像
? ? #cv2.imwrite('xiao1.jpg',img2)
? ? y ,x = img3.shape[0:2]
? ? img2=img3
cv2.imwrite('xiao2.jpg',img3)
H1,W1=img3.shape[0:2]
s=H/H1
print(s)
####連續放大 ? ?最近鄰近值
img4=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_NEAREST) #縮放圖像
cv2.imshow('zuijinlingchazhi最近鄰插值',img4)
cv2.imwrite('zuijin.jpg',img4)

##連續放大 ? ?雙線性插值法
img5=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_LINEAR) #縮放圖像
cv2.imshow('雙線性插值法',img5)
cv2.imwrite('shuangxian.jpg',img5)

##連續放大 ? ?3次樣插值法
img6=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_CUBIC) #縮放圖像
cv2.imshow(' 3次樣插值法',img6)
cv2.imwrite('3ciyang.jpg',img6)
img7=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_LANCZOS4) #縮放圖像
cv2.imshow(' 3',img7)
cv2.waitKey()

?

總結

以上是生活随笔為你收集整理的二次线性插值实现图像放大(计算机视觉)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。