国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用OpenCV讀取視頻、圖片并做簡單處理

這篇具有很好參考價值的文章主要介紹了使用OpenCV讀取視頻、圖片并做簡單處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.OpenCV的安裝與卸載

在conda中安裝opencv,打開Anaconda Prompt 使用國內(nèi)鏡像源安裝opencv,命令如下:

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

也可以安裝opencv的另一個擴展包opencv-contrib-python,不安裝擴展包也可以使用,命令如下:

pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple

卸載opencv,使用命令

pip uninstall opencv-python

Pycharm中沒有cv2庫的提示時,找到cv2安裝的路徑,將虛擬環(huán)境中的site-packages\cv2中的cv2.pyd復(fù)制一份到site-packages(也就是上一級目錄),重啟一下pycharm就可以了。解決pycharm中的cv2庫沒有提示的問題(Python3+win10+opencv-python 4.6.0.66)https://blog.csdn.net/weixin_43490422/article/details/127091826

2.視頻、圖片的處理

需要引用以下庫

import numpy as np
import cv2
import matplotlib.pyplot as plt
import pylab
img0 = np.array([[0, 0, 1], [0, 1, 0], [1, 0, 0]])

print(img0.shape)  # 打印img0的行數(shù)和列數(shù)

plt.imshow(img0, cmap = 'gray')
pylab.show()  # 需要此語句來調(diào)用顯示

使用VideoCaptuure命令讀取圖像

# 從視頻中讀取圖像,"01.mp4"可換為視頻的絕對路徑
cap = cv2.VideoCapture("01.mp4")
# 從攝像頭中讀取圖像
cap = cv2.VideoCapture(0)

通過cap.isOpened()判斷是否提取成功

print(cap.isOpened())

返回Ture則提取成功,返回Fluse則沒有提取成功

# 讀取視頻中的一幀
return_value, frame = cap.read()
# 顯示視頻中的圖像
plt.imshow(frame)
pylab.show()

改變讀取視頻畫面或者圖片顏色通道的各種方法

# 使用cv2.COLOR_BGR2RGB方法變換RGB三個通道的順序
plt.imshow(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
# 將圖片中的RGB三通道變?yōu)榛叶韧ǖ?plt.imshow(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY))
# 將RGB圖片轉(zhuǎn)換為HSV
plt.imshow(cv2.cvtColor(frame, cv2.COLOR_BGR2HSV))
# 將圖片二值化顯示
img = cv2.imread("02.jpg")
_, img_bw = cv2.threshold(img,128,200,cv2.THRESH_BINARY)
plt.imshow(img_bw)
print(img_bw)

pylab.show()

圖像的大小和縮放

# 圖像的放大與縮小 ,寬|高
img = cv2.resize(img, (500, 300))
plt.imshow(img)
pylab.show()

roi:圖像的截取

# roi:截取部分圖片
img_roi = img[100:300, 0:200]
plt.imshow(img_roi)
pylab.show()

Affine變換:移動、縮放、旋轉(zhuǎn)、拉伸

# 讀取圖片
img = cv2.imread("02.jpg")
# Affine變換:移動tx = 300,ty = 200,m為變換矩陣
# Affine縮放:x縮放 = 1,y縮放 = 2
m = np.float32([[1,0,300],[0, 2, 200]])  # m為變換矩陣
img_m = cv2.warpAffine(img, m, (500, 1000))  # 底圖大小(500,1000)
plt.imshow(img_m)
pylab.show()

# Affine旋轉(zhuǎn):theta(弧度,180/3.14) ,move_x = x軸右移值,move_y = y軸下移值
theta = 0.5
move_x = 100
move_y = 50
m = np.float32([[np.cos(theta), -np.sin(theta), move_x], [np.sin(theta), np.cos(theta), move_y]])
cols = 800  # 底圖寬度
rows = 500  # 底圖高度
img_dst = cv2.warpAffine(img,m,(cols,rows))
plt.imshow(img_dst)
pylab.show()

# Affine拉伸:src = 源圖像四邊形頂點坐標 ;dst = 目標圖像對應(yīng)的四邊形頂點坐標
src = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])
dst = np.float32([[0, 0], [100, 0], [0, 300], [300, 300]])
m = cv2.getPerspectiveTransform(src, dst)  #通過src、dst計算得到變換矩陣
cols = 800  # 底圖寬度
rows = 500  # 底圖高度
img_dst = cv2.warpPerspective(img, m, (cols, rows))
plt.imshow(img_dst)
pylab.show()
圖像模糊與銳化,高斯模糊類似于將圖像梯度變平滑
# 讀取圖片
img = cv2.imread("02.jpg")
# 圖像的模糊
img = cv2.GaussianBlur(img, (49, 49), 1, 0)  # 高斯模糊
pylab.show()

# 圖像的銳化
kernel = np.ones((3, 3), np.float32) / 8
kernel = -kernel
kernel[0, :] = [-1, -1, -1]
kernel[1, :] = [0, 0, 0]
kernel[2, :] = [1, 1, 1]

result = cv2.filter2D(img, -1, kernel)
print(result.shape)
print(result[0, 0])
plt.imshow(result * 500)
pylab.show()

求圖中圖像的邊緣

# 讀取圖片
img = cv2.imread("02.jpg")
# 求邊緣
img_b = cv2.Canny(img,30,150)
plt.imshow(img_b)
pylab.show()

加水印

# 加水印,"watermask1.png"為水印圖片
wm = cv2.imread("watermask1.png")
wm = cv2.resize(wm, (300, 300))
wm = 255 - wm
img1 = cv2.resize(img, (300, 300))
print(wm.shape)
plt.imshow(cv2.addWeighted(wm, 0.9, img1, 1, 0))  # 通過調(diào)節(jié)addWeighted函數(shù)權(quán)重可以調(diào)節(jié)圖片亮度

pylab.show()

3.釋放資源

在使用攝像頭后及時釋放,可以減小程序的內(nèi)存消耗,提高運行流暢度文章來源地址http://www.zghlxwxcb.cn/news/detail-436217.html

# 打印frame的形狀
print(frame.shape)
# 釋放攝像頭
cap.release()
# 截圖圖像中的部分區(qū)域
roi = frame[100:400, 200:500]
plt.imshow(roi)
pylab.show()

到了這里,關(guān)于使用OpenCV讀取視頻、圖片并做簡單處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包