本篇內容主要講解“如何使用使用python+opencv解析視頻并處理視頻中的水印”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用使用python+opencv解析視頻并處理視頻中的水印”吧!
網站建設公司,為您提供網站建設,網站制作,網頁設計及定制網站建設服務,專注于成都定制網頁設計,高端網頁制作,對純水機等多個行業擁有豐富的網站建設經驗的網站建設公司。專業網站設計,網站優化推廣哪家好,專業網站推廣優化,H5建站,響應式網站。1. 使用python+opencv解析視頻
使用opencv進行視頻解析,獲取每一幀圖像后需要對該幀圖像進行模塊匹配進行水印圖像查詢。
(對多個視頻操作,查詢到水印的視頻存儲到list中等待下一步處理,未查詢到的視頻存儲到失敗list中)
logger.info('開始進行視頻圖像處理...')
watermark_path = "G:\\video\\watermark\\test.png"
video_path = "G:\\video\\video.mp4"
video = cv2.VideoCapture(video_path)
index = 0
success, frame = video.read()
while success:
logger.info('開始進行每一幀圖像處理!')
// 通過opencv中模塊匹配進行判斷該幀是否存在水印
result = self.find_watermark(frame, watermark_path)
if result == 1:
self.deal_list.append(watermark_path, video_path)
video.release()
logger.info('視頻匹配成功!跳出循環!')
return True
if index == 600:
logger.error('600幀均未找到視頻水印!' + "路徑:" + str(video_path))
video.release()
return False
success, frame = video.read()
index = index + 1
self.no_watermark_list.append(video_info)
logger.error('視頻處理失敗!沒有找到幀圖像!' + str(success) + "路徑:" + str(video_path))
2. 使用opencv+numpy查詢水印
logger.info('開始進行幀圖像模塊匹配...')
template = cv2.imread(watermark_path)
// 進行模塊匹配
res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
// 指定一個閾值
threshold = 0.8
// 將匹配區域的坐標存儲在numpy數組中
loc = np.where(res >= threshold)
x = loc[0]
y = loc[1]
if len(x) and len(y):
for pt in zip(*loc[::-1]):
// 存儲找到水印的坐標方便ffmpeg進行水印去除操作
self.watermark_index_left = pt[0]
self.watermark_index_top = pt[1]
logger.info('幀圖像模塊匹配成功!left:' + str(pt[0]) + ",top:" + str(pt[1]))
return True
else:
logger.error('幀圖像模塊匹配失敗!繼續重試!')
return False
3. 使用ffmpeg處理視頻中水印
ffmpeg需要在本地環境安裝,windows安裝自行搜索,安裝后需配置環境變量!
logger.info('ffmpeg開始處理單個視頻水印... 視頻路徑:' + video_path)
try:
// ffmpeg中去除水印,需要提供視頻路徑,水印在視頻中坐標以及水印寬高
text = 'ffmpeg -i \"%s\" -vf "delogo=x=%s:y=%s:w=%s:h=%s:show=0" -c:a copy \"%s\" -y' % (
video_path, watermark_left, watermark_top, watermark_width, watermark_height, out_video_path)
res = os.system(text)
if res != 0:
self.no_watermark_list.append(video_path)
logger.error('ffmpeg處理單個視頻水印失敗! 視頻路徑:' + video_path)
return False
logger.info('ffmpeg處理單個視頻水印成功! 視頻路徑:' + video_path)
return True
except Exception as e:
logger.error('ffmpeg處理單個視頻水印出現異常! 視頻路徑:' + video_path + ";異常原因:" + str(e))
self.no_watermark_list.append(video_path)
return False無錫婦科醫院哪家好 http://www.xasgfk.cn/
4. 使用tkinter構建圖形界面
該處代碼不全,具體創建,可參考其他文章
self.OpenLabel = Label(self, text="視頻路徑:")
self.OpenLabel.grid(row=0, column=0)
self.OpenEntry = Entry(self, textvariable=self.openVideoPath, width=45)
self.OpenEntry.grid(row=0, column=1)
self.OpenButton = Button(self, text="選擇視頻路徑", command=self.selectOpenVideoPath)
self.OpenButton.grid(row=0, column=2)
self.OpenMarkLabel = Label(self, text="水印路徑:")
self.OpenMarkLabel.grid(row=1, column=0)
self.OpenMarkEntry = Entry(self, textvariable=self.openMarkPath, width=45)
self.OpenMarkEntry.grid(row=1, column=1)
self.OpenMarkButton = Button(self, text="選擇水印路徑", command=self.selectOpenMarkPath)
self.OpenMarkButton.grid(row=1, column=2)
5. 使用pyinstaller打包應用
安裝pyinstaller : pip install pyinstaller
進入python環境的Lib中找到pyinstaller,在該目錄下運行cmd,執行以下命令
pyinstaller.exe -D -w --add-binary C:\Users\wjz\Anaconda3\envs\spiderTest\Lib\site-packages\cv2\opencv_ffmpeg410_64.dll;. E:\video\pyexe.py
說明:
1)-D 指的是生成結果是一個目錄,各種第三方依賴、資源和exe同時存儲在該目錄
2)-w 指的是不生成黑窗口,直接顯示圖形化界面
3)–add-binary 后面是opencv的dll文件路徑,如果不加可能生成的opencv版本出現問題
4)最后指定要打包的py文件路徑
執行后會生成三個文件build,dist,pyexe.spec(指定文件名),主程序pyexe.exe入口在dist文件夾中
找到exe文件執行即可
到此,相信大家對“如何使用使用python+opencv解析視頻并處理視頻中的水印”有了更深的了解,不妨來實際操作一番吧!這里是創新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
網站名稱:如何使用使用python+opencv解析視頻并處理視頻中的水印-創新互聯
網址分享:http://vcdvsql.cn/article30/ejjso.html
成都網站建設公司_創新互聯,為您提供網站維護、電子商務、服務器托管、動態網站、手機網站建設、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯