網站首頁 編程語言 正文
OpenCV 是一個流行的開源計算機視覺庫,可用于不同的編程語言,例如 Python、C++ 和 JavaScript。它提供了一套豐富的工具來處理和分析圖像和視頻,讓你可以從調整單張圖片的大小到構建復雜的對象識別應用程序。
本文給大家介紹Python Opencv中基礎的知識點。
1.創建窗口
import cv2
import numpy as np
def createWindow():
#讀取圖片
img=cv2.imread('images/1 (1).jpg')
#創建窗口 flags=WINDOW_NORMAL表示可以改變窗口大小
cv2.namedWindow(winname='window',flags=cv2.WINDOW_NORMAL)
#縮放窗口的大小
cv2.resizeWindow(winname='window',width=300,height=200)
#顯示窗口
cv2.imshow('window',img)
#獲取鼠標或者鍵值
key=cv2.waitKey(0)
if (key&0XFF==ord('Q')):
cv2.destroyAllWindows()
#銷毀所有的窗口
if __name__ == '__main__':
print('PyCharm')
createWindow()
2.保存圖片
import cv2
import numpy as np
def createWindow():
#讀取圖片
img=cv2.imread('images/1 (1).jpg')
#創建窗口 flags=WINDOW_NORMAL表示可以改變窗口大小
cv2.namedWindow(winname='window',flags=cv2.WINDOW_NORMAL)
#縮放窗口的大小
cv2.resizeWindow(winname='window',width=300,height=200)
while True:
#顯示窗口
cv2.imshow('window',img)
#獲取鼠標或者鍵值
key=cv2.waitKey(0)
if (key&0XFF==ord('Q')):
break
elif (key&0xFF==ord('s')):
# 保存圖片
# name-保存的文件名 img-保存的圖片
cv2.imwrite('save_pic.png', img)
break
cv2.destroyAllWindows()
#銷毀所有的窗口
if __name__ == '__main__':
print('PyCharm')
createWindow()
3.采集視頻
import os
import cv2
import numpy as np
def CollectVideo():
#創建窗口
cv2.namedWindow(winname='window',flags=cv2.WINDOW_AUTOSIZE)
cv2.resizeWindow(winname='window',width=450,height=300)
#打開攝像頭
cap=cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
#獲取窗口大小
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# 輸出文件 多媒體文件格式 視頻幀率 分辨率大小
vw = cv2.VideoWriter('video.avi', fourcc, 25, size)
while cap.isOpened():
#從攝像頭讀取視頻幀
OK,frame=cap.read()
if OK:
#顯示攝像頭畫面
cv2.imshow('window',frame)
cv2.resizeWindow(winname='window', width=450, height=300)
#將從攝像頭采集的視頻幀寫入文件
vw.write(frame)
#從鼠標和鍵盤獲取鍵值,按下ESC鍵退出
if cv2.waitKey(1)&0xFF==27:
break
#釋放資源
cap.release()
vw.release()
#銷毀所有的窗口
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')
CollectVideo()
4.鼠標控制
#回調函數參數解釋
#event:鼠標移動,按下左鍵;
#(x,y):鼠標坐標
#flags:鼠標鍵及組合鍵
import cv2
import numpy as np
#回調函數定義
def mouse_callback(event,x,y,flags,userdata):
print(event,x,y,flags,userdata)
#創建窗口
cv2.namedWindow(winname='mouse',flags=cv2.WINDOW_NORMAL)
cv2.resizeWindow(winname='mouse',width=450,height=300)
#給“mouse”窗口設置回調函數
cv2.setMouseCallback('mouse',mouse_callback,'123')
img=np.zeros(shape=(300,450,3),dtype=np.uint8)
while True:
cv2.imshow('mouse',img)
#按下ESC鍵退出
if cv2.waitKey(1)&0xFF==27:
break
cv2.destroyAllWindows()
if __name__ == '__main__':
print('pycharm')
5.TrackBar組件
import os
import cv2
import numpy as np
cv2.namedWindow(winname='trackbar',flags=cv2.WINDOW_NORMAL)
cv2.resizeWindow(winname='trackbar',width=450,height=300)
#獲取TrackBar的值
def TrackBarValue():
#獲取窗口“window”下子窗口“R”的值
value_R= cv2.getTrackbarPos(trackbarname='R', winname='trackbar')
value_G = cv2.getTrackbarPos(trackbarname='G', winname='trackbar')
value_B = cv2.getTrackbarPos(trackbarname='B', winname='trackbar')
return value_R,value_G,value_B
def callback():
pass
#定義TrackBar函數
def TrackBarBGR():
#value-trackbar的值 count-設置的最大值count(最小值為0) OnChange-回調函數
cv2.createTrackbar('R','trackbar', 0, 255, callback)
cv2.createTrackbar('G','trackbar', 0, 255, callback)
cv2.createTrackbar('B','trackbar', 0, 255, callback)
img=np.zeros(shape=(450,300,3),dtype=np.uint8)
#創建trackbar組件
TrackBarBGR()
while True:
#獲取trackbar的值
R,G,B=TrackBarValue()
img[:]=[B,G,R]
#獲取值之后改變背景的顏色
cv2.imshow('trackbar', img)
#按下ESC鍵退出
if cv2.waitKey(1)&0xFF==27:
break
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')
原文鏈接:https://blog.csdn.net/Keep_Trying_Go/article/details/125351256
相關推薦
- 2022-08-20 在?pytorch?中實現計算圖和自動求導_python
- 2023-03-05 快速修改運行中的docker容器端口映射的三種方式_docker
- 2022-08-14 Python全局變量關鍵字global的簡單使用_python
- 2022-08-31 Postgresql數據庫character?varying和character的區別說明_Post
- 2022-04-11 架構思維之緩存雪崩的災難復盤_相關技巧
- 2022-04-20 Android實現環信修改頭像和昵稱_Android
- 2022-11-01 Flask?sqlalchemy一對多與多對一與一對一及多對多關系介紹_python
- 2022-10-25 IDEA 安裝tomcat10創建servlet報404錯誤
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支