使用Python/opencv連接及控制海康工業(yè)相機(jī)
1.自動(dòng)抓取圖像
通過(guò)接受前步傳輸?shù)闹噶疃鴮?shí)現(xiàn)相機(jī)的自動(dòng)抓取圖像
import cv2
from datetime import datetime
while True: # 循環(huán)以不斷拍攝
## 此處添加發(fā)出指令的程序
B = 1 # 假定前步給的指令/信號(hào)
if B == 1: # 接收到捕捉圖像指令
cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 3072) # 設(shè)置圖像寬度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 2048) # 設(shè)置圖像高度
cap.set(cv2.CAP_PROP_FPS , 6) # 設(shè)置幀率
while True:
reg, frame = cap.read()
frame_1 = cv2.resize(frame, (640, 512))
# 展示圖片
cv2.imshow('capture', frame_1)
now = datetime.now()
time = now.strftime("%Y-%m-%d,%H.%M.%S")
filename = str(time) + '.jpg' # filename為圖像名字,將采集時(shí)間作為編號(hào)命名保存的截圖
cv2.imwrite('D:\\Project\\picture' + '\\' + filename, frame_1) # 截圖 前面為放在桌面的路徑 frame為此時(shí)的圖像
print(filename + '保存成功') # 打印保存成功
break
# 釋放資源
cap.release()
cv2.destroyAllWindows()
? ? ? ? B = 0 # 等待下一次的指令
else:
print("未收到拍攝指令,等待下一次指令")
B = 0 # 等待下一次的指令
2.定時(shí)抓取圖像
通過(guò)自定義設(shè)置延時(shí)時(shí)間而實(shí)現(xiàn)相機(jī)的定時(shí)抓取圖像
import cv2
import time
cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 3072) # 設(shè)置圖像寬度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 2048) # 設(shè)置圖像高度
cap.set(cv2.CAP_PROP_FPS , 6) # 設(shè)置幀率
i = 0 # 定時(shí)裝置初始值
a = 1 # 截圖數(shù)量控制
while True:
i = i + 1
reg, frame = cap.read()
frame_1 = cv2.resize(frame, (640, 512))
# 展示圖片
cv2.imshow('capture', frame_1)
time = time.strftime("%Y-%m-%d,%H.%M.%S", time.localtime())
if i == 50: # 定時(shí)裝置,定時(shí)截屏,可以修改。
filename = str(time) + '.jpg' # filename為圖像名字,將采集時(shí)間作為編號(hào)命名保存的截圖
cv2.imwrite('D:\\Project\\picture' + '\\' + filename, frame_1) # 截圖 前面為放在桌面的路徑 frame為此時(shí)的圖像
print(filename + '保存成功') # 打印保存成功
i = 0 # 清零
a = a + 1
if a > 20: # 最多截圖20張(自定義) 然后退出
break
if cv2.waitKey(1) & 0xff == ord('q'):
break
# 釋放資源
cap.release()
cv2.destroyAllWindows()
3.特定按鍵控制抓取圖像
通過(guò)自定義特定按鍵而實(shí)現(xiàn)相機(jī)的人為控制抓取圖像文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-661962.html
import cv2
import time
cap = cv2.VideoCapture(1,cv2.CAP_DSHOW)
# cap.set(cv2.CAP_PROP_POS_FRAMES,50)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 3072) # 設(shè)置圖像寬度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 2048) # 設(shè)置圖像高度
cap.set(cv2.CAP_PROP_FPS , 6) # 設(shè)置幀率
i = 1
# 也可寫成while True
while(1):
"""
ret:True或者False,代表有沒(méi)有讀取到圖片
frame:表示截取到一幀的圖片
"""
ret,frame = cap.read()
frame_1 = cv2.resize(frame, (640, 512))
# 展示圖片
cv2.imshow('capture',frame_1)
time = time.strftime("%Y-%m-%d,%H.%M.%S", time.localtime())
# 保存圖片
k=cv2.waitKey(1)
if k==ord('k'): #自定義按鍵
cv2.imwrite(r"D:\Project\picture\\"+ str(time) + ".jpg",frame_1) #存儲(chǔ)路徑
i = i + 1
if k==ord('q'):
break
#釋放對(duì)象和銷毀窗口
cap.release()
cv2.destroyAllWindows()
以上就是三種實(shí)現(xiàn)Python/opencv工業(yè)相機(jī)控制的方法啦!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-661962.html
到了這里,關(guān)于opencv——連接/控制工業(yè)相機(jī)(??担┑奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!