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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python opencv图像处理程序_Python-OpenCV学习(四):基本图像处理

發布時間:2023/12/10 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python opencv图像处理程序_Python-OpenCV学习(四):基本图像处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請注明出處:danscarlett的博客園

參考資料:

目錄:

讀取 imread

顯示 imshow

存儲 imwrite

縮放 resize

加邊框 copyMakeBorder

裁剪 img[x_start:x_end,y_start:y_end]

1.圖像讀取:

cv2.imread(fileName,flags=None)

函數功能:讀入圖像

參數解釋:

filename 圖像所在此程序的工作路徑,或者完整的路徑名

flag 告訴函數應該如何讀取這幅圖片。

cv2.IMREAD_COLOR或0讀入一副彩色圖像。圖像的透明度會被忽略,這是默認參數。

cv2.IMREAD_GRAYSCALE或1以灰度模式讀圖

例子:

- 代碼:

#-*- coding: utf-8 -*-

importcv2#灰度圖模式加載一副彩圖并顯示在窗口中

img1 = cv2.imread('1.jpg',1)

cv2.imshow('gray',img1)

cv2.waitKey(0)#彩圖模式加載一副彩圖并顯示在窗口中

img2 = cv2.imread('1.jpg',0)

cv2.imshow('colorful',img2)

cv2.waitKey(0)

- 結果:首先彈出gray窗口,關閉該窗口后,彈出colorful窗口。

注意:調用opencv,就算圖像的路徑是錯的,OpenCV 也不會提醒你的,但是當你使用命令print img時得到的結果是None。

#-*- coding: utf-8 -*-

importcv2

img2= cv2.imread('2.jpg',2)#文件夾里沒有2.jpg

print(img2)

輸出:

2.顯示圖像

1 cv2.imshow(winname,mat)

函數功能:顯示圖像。窗口會自動調整為圖像大小。你可以創建多個窗口,只要你喜歡,但是必須給他們不同的名字。

參數解釋:

winname窗口的名字

mat圖像對象

例子:

- 代碼:

#-*- coding: utf-8 -*-

importcv2

img2= cv2.imread('1.jpg')

cv2.imshow('image',img2)

cv2.waitKey(0)#cv2.waitKey() 是一個鍵盤綁定函數。需要指出的是它的時間尺度是毫#秒級。函數等待特定的幾毫秒,看是否有鍵盤輸入。特定的幾毫秒之內,如果#按下任意鍵,這個函數會返回按鍵的ASCII 碼值,程序將會繼續運行。如果沒#有鍵盤輸入,返回值為-1,如果我們設置這個函數的參數為0,那它將會無限#期的等待鍵盤輸入。它也可以被用來檢測特定鍵是否被按下,例如按鍵a 是否#被按下,這個后面我們會接著討論。

cv2.destroyAllWindows()#cv2.destroyAllWindows() 可以輕易刪除任何我們建立的窗口。如果#你想刪除特定的窗口可以使用cv2.destroyWindow(),在括號內輸入你想刪#除的窗口名。

- 結果:

3.保存圖像

cv2.imwrite(filename,img,params=None)

函數功能:將圖像保存到指定的文件。

參數:

filename 文件名稱

image 需要存儲的圖像文件

params 存儲的格式或者編碼

CV_IMWRITE_JPEG_QUALITY 對于JPEG文件,質量用0-100標記,默認值為95.

CV_IMWRITE_PNG_COMPRESSION 對于PNG文件,壓縮級別用0-9表示,較高的值意味著較小的尺寸和較長的壓縮時間,默認值為3.

CV_IMWRITE_PXM_BINARY   對于PPM、PGM或者PBM文件,這是二進制格式標識(0或1)。默認值為1。

例子:

- 代碼

#-*- coding: utf-8 -*-

importcv2

img= cv2.imread('1.jpg')#將原圖存儲到另一個文件中

cv2.imwrite('2.jpg',img)

img2= cv2.imread('2.jpg')

cv2.imshow('copy',img2)

cv2.waitKey(0)#將原圖的10%質量存儲到jpg

cv2.imwrite('3.jpg',img,(cv2.IMWRITE_JPEG_QUALITY,10))

img3= cv2.imread('3.jpg')

cv2.imshow('JPG',img3)

cv2.waitKey(0)#將原圖壓縮率9/10存儲到PNG

cv2.imwrite('4.png',img,(cv2.IMWRITE_PNG_COMPRESSION,9))

img4= cv2.imread('4.png')

cv2.imshow('PNG',img4)

cv2.waitKey(0)

- 結果:

copy

JPG

PNG

4.圖像縮放

cv2.resize(src,dst,fx=None,fy=None,interpolation=None)

函數功能:縮放圖片

參數:

src 源文件

dst 目標文件

fx x方向上的像素

fy   y方向上的像素

interpolation 變換的方法

CV_INTER_NN最近鄰插值,

CV_INTER_LINEAR 雙線性插值 (缺省使用)

CV_INTER_AREA 使用象素關系重采樣。當圖像縮小時候,該方法可以避免波紋出現。當圖像放大時,類似于 CV_INTER_NN 方法..

CV_INTER_CUBIC 立方插值

例子:

- 代碼:

#-*- coding: utf-8 -*-

importcv2

img= cv2.imread('1.jpg')#縮放成200*200的圖像#插值方法默認是cv2.INTER_LINEAR,這里指定為最近鄰插值

img2 = cv2.resize(img,(200,200))#不直接指定縮放后大小,通過fx和fy指定縮放比例,0.5則長寬都為原來一半#注意指定大小的格式是(寬度,高度)

img3 =cv2.resize(img,(0,0),fx=0.5,fy=0.5,interpolation=cv2.INTER_NEAREST)print('img.shape=',img.shape)print('img2.shape=',img2.shape)print('img3.shape=',img3.shape)

- 結果:

5.添加邊框

cv2.copyMakeBorder(src,top,bottom,left,right,borderType,dst=None,value=None)

函數功能:復制圖像并加上邊界

參數:

src 源圖像

top,bottem,left,right 分別表示四個方向上邊界的長度

borderType  邊界的類型

BORDER_REFLICATE    直接用邊界的顏色填充, aaaaaa | abcdefg | gggg

BORDER_REFLECT    倒映,abcdefg | gfedcbamn | nmabcd

BORDER_REFLECT_101  倒映,和上面類似,但在倒映時,會把邊界空開,abcdefg | egfedcbamne | nmabcd

BORDER_WRAP     類似于這種方式abcdf | mmabcdf | mmabcd

BORDER_CONSTANT   常量,增加的變量通通為value色 [value][value] | abcdef | [value][value][value]

value 僅僅是常量型邊界才有意義

例子:

- 代碼:

#-*- coding: utf-8 -*-

importcv2importnumpy as np

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

BLUE= [255,0,0]

img2= cv2.copyMakeBorder(img,10,10,10,10,borderType=cv2.BORDER_CONSTANT,dst=None,value=BLUE)

cv2.imshow("img2",img2)

cv2.waitKey(0)

- 結果:

6.裁邊

直接看例子:

#-*- coding: utf-8 -*-

importcv2importnumpy as np

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

BLUE= [255,0,0]

img2= cv2.copyMakeBorder(img,10,10,10,10,borderType=cv2.BORDER_CONSTANT,dst=None,value=BLUE)#加入邊框之后的圖像大小:(552, 820),#裁剪出坐標在10-542,10-810之間的像素

img3 = img2[10:542,10:810]

cv2.imshow("img3",img3)

cv2.waitKey(0)

結果:

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python opencv图像处理程序_Python-OpenCV学习(四):基本图像处理的全部內容,希望文章能夠幫你解決所遇到的問題。

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