opencv python在視屏上截圖功能的實(shí)現(xiàn)
OpenCV簡(jiǎn)介
OpenCV是一個(gè)基于BSD許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列 C 函數(shù)和少量 C++ 類(lèi)構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語(yǔ)言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。
OpenCV用C++語(yǔ)言編寫(xiě),它的主要接口也是C++語(yǔ)言,但是依然保留了大量的C語(yǔ)言接口。該庫(kù)也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口。這些語(yǔ)言的API接口函數(shù)可以通過(guò)在線文檔獲得。如今也提供對(duì)于C#、Ch、Ruby,GO的支持。
所有新的開(kāi)發(fā)和算法都是用C++接口。一個(gè)使用CUDA的GPU接口也于2010年9月開(kāi)始實(shí)現(xiàn)。
介紹
因?yàn)槲沂且粋€(gè)小白,所以代碼就比較簡(jiǎn)單,如果有錯(cuò)誤,希望大家可以評(píng)論下告訴我,感激。
效果
藍(lán)色框框是我們要截下的圖
這是截完后的圖
代碼
import cv2 import numpy as np import matplotlib.pyplot as plt i = w = h = f1 = f2 = ew = eh = 0 def cut(event, x, y, flags, param): global i,w,h, f1,f2,ew,eh img = 0 #這一個(gè)if的作用是,當(dāng)鼠標(biāo)左鍵按下,記錄開(kāi)始的位置 if event == cv2.EVENT_LBUTTONDOWN: f1 = 1 h = x w = y print("w = ", w, "h = ", h) #這一步的作用是當(dāng)鼠標(biāo)滑動(dòng)時(shí),并且左鍵是按下的時(shí)候,就畫(huà)一個(gè)框框,并且記錄左后一個(gè)位置 if event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON: img = frame.copy() cv2.rectangle(img, (h,w), (x,y), (255,0,0),5) cv2.imshow("frame", img) f2 = 1 eh = x ew = y #當(dāng)執(zhí)行了以上的兩步時(shí)候,并且左鍵是松開(kāi)的,就可以進(jìn)行截出一張圖片。 if f1 == 1 and f2 == 1 and event == cv2.EVENT_LBUTTONUP: #下面兩個(gè)if是向各個(gè)方向上截圖的考慮 if ew < w: w,ew = ew,w if eh < h: eh,h = h, eh i += 1 f1 = f2 = 0 img = frame[w:ew, h:eh] path = "C:/test2/" + "%d"%i+".jpg" cv2.imwrite(path,img) #這時(shí)創(chuàng)建一個(gè)對(duì)像 cap = cv2.VideoCapture("C:/test2/bbb.mp4") #這是命名一個(gè)窗口,與下面的鼠標(biāo)結(jié)合,鼠標(biāo)會(huì)在這個(gè)窗口中產(chǎn)生效果 cv2.namedWindow("frame",cv2.WINDOW_NORMAL) cv2.setMouseCallback("frame",cut) while True: #讀取圖片 ret, frame = cap.read() if ret == False: break cv2.imshow("frame", frame) #如果輸入'c',就進(jìn)行切割。 if cv2.waitKey(10) == ord("c"): cv2.waitKey(0) if cv2.waitKey(10) == ord('q'): break
注意
x,y和 w,h, 的不同,x 代表的圖像的列,y是代表著行
frame[w:ew, h:eh]這個(gè)先是行,再是列。
總結(jié)
到此這篇關(guān)于opencv python在視屏上截圖的文章就介紹到這了,更多相關(guān)opencv 視屏截圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python實(shí)現(xiàn)按鍵精靈找色點(diǎn)擊功能教程,使用pywin32和Pillow庫(kù)
- Python3 pywin32模塊安裝的詳細(xì)步驟
- Windows平臺(tái)Python編程必會(huì)模塊之pywin32介紹
- Python操作word常見(jiàn)方法示例【win32com與docx模塊】
- Python如何截圖保存的三種方法(小結(jié))
- python opencv 檢測(cè)移動(dòng)物體并截圖保存實(shí)例
- Python文字截圖識(shí)別OCR工具實(shí)例解析
- 通過(guò)python實(shí)現(xiàn)windows桌面截圖代碼實(shí)例
- Python+Selenium+phantomjs實(shí)現(xiàn)網(wǎng)頁(yè)模擬登錄和截圖功能(windows環(huán)境)
- 使用python實(shí)現(xiàn)對(duì)元素的長(zhǎng)截圖功能
- Python 通過(guò)截圖匹配原圖中的位置(opencv)實(shí)例
- 對(duì)Python獲取屏幕截圖的4種方法詳解
- python調(diào)用win32接口進(jìn)行截圖的示例
相關(guān)文章
Python根據(jù)站點(diǎn)列表繪制站坐標(biāo)全球分布圖的示例
這篇文章主要介紹了Python根據(jù)站點(diǎn)列表繪制站坐標(biāo)全球分布圖,輸入站點(diǎn)列表文件、snx全球站點(diǎn)坐標(biāo)文件,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12OpenCV-Python 實(shí)現(xiàn)兩張圖片自動(dòng)拼接成全景圖
圖片的全景拼接如今已不再稀奇,現(xiàn)在的智能攝像機(jī)和手機(jī)攝像頭基本都帶有圖片自動(dòng)全景拼接的功能,本文使用OpenCV-Python 實(shí)現(xiàn)兩張圖片自動(dòng)拼接成全景圖,感興趣的可以了解一下2021-06-06PyQt5實(shí)現(xiàn)QLineEdit添加clicked信號(hào)的方法
今天小編就為大家分享一篇PyQt5實(shí)現(xiàn)QLineEdit添加clicked信號(hào)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Python異常處理如何才能寫(xiě)得優(yōu)雅(retrying模塊)
異常就是程序運(yùn)行時(shí)發(fā)生錯(cuò)誤的信號(hào),下面這篇文章主要給大家介紹了關(guān)于Python異常處理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03解決pyinstaller打包exe文件出現(xiàn)命令窗口一閃而過(guò)的問(wèn)題
今天小編就為大家分享一篇解決pyinstaller打包exe文件出現(xiàn)命令窗口一閃而過(guò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10python?numpy.linalg.norm函數(shù)的使用及說(shuō)明
這篇文章主要介紹了python?numpy.linalg.norm函數(shù)的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Python lambda表達(dá)式用法實(shí)例分析
這篇文章主要介紹了Python lambda表達(dá)式用法,結(jié)合實(shí)例形式分析了lambda表達(dá)式的具體功能、應(yīng)用場(chǎng)景及相關(guān)使用技巧,需要的朋友可以參考下2018-12-12