Python學(xué)習(xí)(1):cv2 函數(shù)

轉(zhuǎn):模塊cv2的用法

一、讀入圖像

使用函數(shù)cv2.imread(filepath,flags)讀入一副圖片

filepath:要讀入圖片的完整路徑

flags:讀入圖片的標(biāo)志

cv2.IMREAD_COLOR:默認(rèn)參數(shù),讀入一副彩色圖片,忽略alpha通道

cv2.IMREAD_GRAYSCALE:讀入灰度圖片

cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖片,包括alpha通道

eg.?

import cv2

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

二、顯示圖像

使用函數(shù)cv2.imshow(wname,image)顯示圖像,第一個參數(shù)是顯示圖像的窗口的名字,第二個參數(shù)是要顯示的圖像(imread讀入的圖像)。窗口大小自動調(diào)整為圖片大小。

eg.

cv2.imshow('image',img)

cv2.waitKey(0)

cv2.destroyAllWindows()#dv2.destroyWindow(wname)

cv2.waitKey顧名思義等待鍵盤輸入,單位為毫秒,即等待指定的毫秒數(shù)看是否有鍵盤輸入,若在等待時間內(nèi)按下任意鍵則返回按鍵的ASCII碼,程序繼續(xù)運行。若沒有按下任何鍵,超時后返回-1。參數(shù)為0表示無限等待。不調(diào)用waitKey的話,窗口會一閃而逝,看不到顯示的圖片。

cv2.destroyAllWindow()銷毀所有窗口

cv2.destroyWindow(wname)銷毀指定窗口

三、保存圖像

使用函數(shù)cv2.imwrite(file,img,num)保存一個圖像。第一個參數(shù)是要保存的文件名,第二個參數(shù)是要保存的圖像。可選的第三個參數(shù),它針對特定的格式:對于JPEG,其表示的是圖像的質(zhì)量,用0 - 100的整數(shù)表示,默認(rèn)95;對于png ,第三個參數(shù)表示的是壓縮級別。默認(rèn)為3.

注意:

cv2.IMWRITE_JPEG_QUALITY類型為 long ,必須轉(zhuǎn)換成 int

cv2.IMWRITE_PNG_COMPRESSION, 從0到9 壓縮級別越高圖像越小。

eg.

cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])

cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

四、圖片操作

1、使用函數(shù)cv2.flip(img,flipcode)翻轉(zhuǎn)圖像,flipcode控制翻轉(zhuǎn)效果。

flipcode = 0:沿x軸翻轉(zhuǎn)

flipcode > 0:沿y軸翻轉(zhuǎn)

flipcode < 0:x,y軸同時翻轉(zhuǎn)

imgflip = cv2.flip(img,1)

2、復(fù)制圖像

imgcopy = img.copy()

3、顏色空間轉(zhuǎn)換

#彩色圖像轉(zhuǎn)為灰度圖像

img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)?

#灰度圖像轉(zhuǎn)為彩色圖像

img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)

# cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS

示例——————————————————

讀入一副圖像,按’s’鍵保存后退出,其它任意鍵則直接退出不保存
import cv2

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

cv2.imshow('image',img)

k = cv2.waitKey(0)

if k == ord('s'): # wait for 's' key to save and exit

? ? cv2.imwrite('1.png',img)

? ? cv2.destroyAllWindows()

else:

? ? cv2.destroyAllWindows()

示例————————————————————

讀入一副圖像,給圖片加文本

import cv2

# img=cv2.imread('1.jpg',cv2.IMREAD_COLOR)

img=cv2.imread('1.png',cv2.IMREAD_COLOR)? ? # 打開文件

font = cv2.FONT_HERSHEY_DUPLEX? # 設(shè)置字體

# 圖片對象、文本、像素、字體、字體大小、顏色、字體粗細(xì)

imgzi = cv2.putText(img, "zhengwen", (1100, 1164), font, 5.5, (0, 0, 0), 2,)

# cv2.imshow('lena',img)

cv2.imwrite('5.png',img)? ? # 寫磁盤

cv2.destroyAllWindows()? ? # 毀掉所有窗口

cv2.destroyWindow(wname)? ? # 銷毀指定窗口

配合畫圖——————————————————

import numpy as np

import cv2

np.set_printoptions(threshold='nan')

# 創(chuàng)建一個寬512高512的黑色畫布,RGB(0,0,0)即黑色

img=np.zeros((512,512,3),np.uint8)

# 畫直線,圖片對象,起始坐標(biāo)(x軸,y軸),結(jié)束坐標(biāo),顏色,寬度

cv2.line(img,(0,0),(311,511),(255,0,0),10)

# 畫矩形,圖片對象,左上角坐標(biāo),右下角坐標(biāo),顏色,寬度

cv2.rectangle(img,(30,166),(130,266),(0,255,0),3)

# 畫圓形,圖片對象,中心點坐標(biāo),半徑大小,顏色,寬度

cv2.circle(img,(222,222),50,(255.111,111),-1)

# 畫橢圓形,圖片對象,中心點坐標(biāo),長短軸,順時針旋轉(zhuǎn)度數(shù),開始角度(右長軸表0度,上短軸表270度),顏色,寬度

cv2.ellipse(img,(333,333),(50,20),0,0,150,(255,222,222),-1)

# 畫多邊形,指定各個點坐標(biāo),array必須是int32類型

pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)

# -1表示該緯度靠后面的緯度自動計算出來,實際上是4

pts = pts.reshape((-1,1,2,))

# print(pts)

# 畫多條線,F(xiàn)alse表不閉合,True表示閉合,閉合即多邊形

cv2.polylines(img,[pts],True,(255,255,0),5)

#寫字,字體選擇

font=cv2.FONT_HERSHEY_SCRIPT_COMPLEX

# 圖片對象,要寫的內(nèi)容,左邊距,字的底部到畫布上端的距離,字體,大小,顏色,粗細(xì)

cv2.putText(img,"OpenCV",(10,400),font,3.5,(255,255,255),2)

a=cv2.imwrite("picture.jpg",img)

cv2.imshow("picture",img)

cv2.waitKey(0)

cv2.destroyAllWindows()

————————打住線

天。。太齊全了。。還是用到啥看啥把。。。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容