家人們春節快樂
昨夜星辰昨夜夢,今日許愿今日圓,日出東方曙光現,
幸福就在你身邊,福星高照艷陽天,歡聲笑語樂心田,
良辰好景慶新年,歲歲年年送祝愿,新年到了,
祝你在新的一年里事事順利,快樂每一天,
目錄
1.影像基本操作
1.1基本函式
1.1.1——cv2.imread()
1.1.2——cv2.imshow()
1.1.3——cv2.imwrite()
2.1繪制直線
2.2繪制圓形
2.3向影像中添加文字
2.影像通道的拆分與合并
3.色彩空間的改變
4.視頻的讀取
5.總結
1.影像基本操作
導包
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
1.1基本函式
1.1.1——cv2.imread()
#讀取圖片
cv.imread()
引數:
- 要讀取的影像
- 讀取方式的標志
- cv.IMREAD*COLOR:以彩色模式加載影像,任何影像的透明度都將被忽略,這是默認引數,
- cv.IMREAD*GRAYSCALE:以灰度模式加載影像
- cv.IMREAD_UNCHANGED:包括alpha通道的加載影像模式,
可以使用1、0、-1來代替上面三個標志
例如:
#以灰度圖的形式讀取影像
img=cv.imread(r"圖片路徑",0)
說說圖片路徑在哪找:首先把圖片放入你的Pycharm專案檔案夾中,然后右鍵你需要用的圖片點擊Copy Path再點擊Absolute Path再Ctrl+v在引數圖片路徑處即可,引數前加r是為了保障字串中\能正常識別,



1.1.2——cv2.imshow()
#展示圖片
cv.imshow("image",img)
cv.waitKey(0)
cv.destroyAllwindows()
cv2.imshow的第一個引數為設定的影像名稱,第二個引數則為要顯示的影像,顯示后要跟waitKey()函式,這里設定0則為按任意鍵退出,destroyAllwindows()洗掉視窗,
具體看cv2.waitKey的入門級理解_山上有強強的博客-CSDN博客_cv2.waitkey這位大佬的講解
1.1.3——cv2.imwrite()
cv.imwrite("影像名稱",img)
第一個引數:"影像名稱“為你存入專案圖片的設定的名稱,第二個引數:img為影像,
2.1繪制直線
cv.line(img,start,end,color,thickness)
引數:
- img:要繪制直線的影像
- Start,end:直線的起點和終點
- color:線條的顏色
- Thickness:線條寬度
2.2繪制圓形
cv.circle(img,centerpoint,r,color,thickness)
引數:
- img:要繪制矩形的影像
- Leftupper,rightdown:矩形的左上角和右下角坐標
- color:線條的顏色
- Thickness:線條寬度
2.3向影像中添加文字
cv.putText(img,text,station,font,fontsize,color,thickness,cv.LINE_AA)
引數:
- img:影像
- text:要寫入的文本資料
- station:文本的放置位置
- font:字體
- Fontsize:字體大小
# 1.創建一個空白的影像
img=np.zeros((512,512,3),np.uint8)
# 2.繪制圖形
cv.line(img,(0,0),(511,511),(255,0,0),5)
cv.rectangle(img,(100,100),(420,420),(0,255,0),3)
cv.circle(img,(256,256),100,(0,0,255),-1)
cv.putText(img,'OpenCV',(10,500),cv.FONT_HERSHEY_SIMPLEX,4,(255,255,255),2)
# 3.影像顯示
plt.imshow(img[:,:,::-1]) #bgr格式顯示
plt.rcParams["font.sans-serif"]="SimSun" #設定字體格式
plt.title('匹配結果') #設定顯示框標題
plt.show()

2.影像通道的拆分與合并
有時在B、G、R通道影像上單獨作業,在這種情況下,需要將BGR影像分割為單個通道,或者在其他情況下,可能需要將這些單獨的通道合并到BGR影像,你可以通過以下方式完成,
#通道拆分
b,g,r=cv.split(img)
#通道合并
img=cv.merge((b,g,r))
例子(省略圖片讀取操作):
#拆分3通道
b,g,r=cv.split(img)
res=np.hstack((b,g,r))
cv.imshow("res",res)
cv.waitKey(0)
cv.destroyAllWindows()
#合并3通道
img2=cv.merge((b,g,r))
plt.imshow(img2[:,:,::-1])
plt.show()
由于是單通道,像素值是0-255,灰度影像形式表現
![]()
這里再說一種為了呈現單色圖片,則只需將其他的顏色通道都置0,B、G、R通道分別對應維度表示0、1、2,例如:若想要顯示為紅色圖片,則我們只需關注R通道像素的亮度值,而忽略其他顏色通道的像素值,用切片方式分將忽略的通道賦0即可,代碼如下:
#拆分3通道
#只保留R
R=img1.copy() #復制副本
R[:,:,0]=0
R[:,:,1]=0
#只保留B
B=img1.copy()
B[:,:,1]=0
B[:,:,2]=0
#只保留G
G=img1.copy()
G[:,:,0]=0
G[:,:,2]=0
res=np.hstack((B,G,R))
cv.imshow("res",res)
cv.waitKey(0)
cv.destroyAllWindows()
這里我換了一張圖片
3.色彩空間的改變
OpenCV中有150多種顏色空間轉換方法,最廣泛使用的轉換方法有兩種,BGR<——>Gray和BGR<——>HSV,
cv.cvtColor(input_image,flag)
引數:
- input_image:進行顏色空間轉換的影像
- flag:轉換型別
- cv.COLOR_BGR2GRAY:BGR<——>Gray
- cv.COLOR_BGR2HSV:BGR——>HSV
例子:
# 轉化為灰度圖
Gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
cv.imshow("Gray",Gray)
cv.waitKey(0)
cv.destroyAllWindows()
#轉化為hsv圖
Hsv=cv.cvtColor(img,cv.COLOR_BGR2HSV)
cv.imshow("HSV",Hsv)
cv.waitKey(0)
cv.destroyAllWindows()
4.視頻的讀取
- cv2.VideoCapture可以捕獲攝像頭,用數字來控制不同的設備,例如0,1
- 如果是視頻檔案,直接指定好路徑即可,
#讀取視頻
vc=cv.VideoCapture(r"視頻的絕對路徑")
#檢查是否打開
if vc.isOpened():
open,frame=vc.read()
else:
open=False
#讀取檔案,ret回傳Ture,frame為每一幀
#遍歷每一幀
while open:
ret,frame=vc.read()
if frame is None:
break
if ret==True:
#轉化灰度幀圖
gray=cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
cv.imshow("result",gray)
#播放速度10,視頻結束退出,或者按Esc退出
if cv.waitKey(10)& 0xFF ==27:
break
#釋放視頻
vc.release()
#結束展示畫面
cv.destroyAllWindows()
視頻的路徑選擇和上面講到圖片的路徑尋找方式相同,
5.總結
好了,今天我就分享到這里,祝大家新年快樂!!!!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423259.html
標籤:AI



