最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python結(jié)合OpenCV實現(xiàn)打開海康機器人黑白相機

 更新時間:2026年04月23日 09:15:45   作者:丞網(wǎng)科技  
這篇文章主要介紹了Python如何結(jié)合OpenCV實現(xiàn)打開??禉C器人黑白相機,該代碼主要實現(xiàn)了??低曄鄼C的圖像采集與OpenCV處理功能,感興趣的小伙伴可以了解下

將MvImport內(nèi)所有文件拷貝至工作目錄

項目結(jié)構(gòu)

requirements.txt 

# 基礎科學計算庫
numpy>=1.24.0
# 計算機視覺
opencv-python>=4.8.0

hk_opencv.py 

import cv2
import numpy as np
from MvCameraControl_class import *
from CameraParams_header import *
# CameraNumber = 1為黑白相機,CameraNumber = 3為彩色相機
CameraNumber = 1
#-------------------opencv操作部分--------------------------------------
def opencv_action(img):
    result_img = img
    return result_img
#-----------------------??迪鄼C設置部分---------------------------------------
ret = MvCamera.MV_CC_Initialize()
if ret != 0:
    print(f"初始化SDK失敗,錯誤碼: {ret}")
    exit()
# 枚舉設備
deviceList = MV_CC_DEVICE_INFO_LIST()
n_layer_type = MV_GIGE_DEVICE | MV_USB_DEVICE | MV_GENTL_CAMERALINK_DEVICE
ret = MvCamera.MV_CC_EnumDevices(n_layer_type, deviceList)
if ret != 0:
    print("枚舉設備失敗")
    exit()
print(f"找到 {deviceList.nDeviceNum} 臺設備")
if deviceList.nDeviceNum == 0:
    exit()
stDeviceList = cast(deviceList.pDeviceInfo[0], POINTER(MV_CC_DEVICE_INFO)).contents
camera = MvCamera()
ret = camera.MV_CC_CreateHandle(stDeviceList)
# 打開設備(使用已創(chuàng)建的句柄)
ret = camera.MV_CC_OpenDevice()
if ret != 0:
    print(f"打開設備失敗,錯誤碼: {ret}")
    exit()
# 獲取相機參數(shù)
width = c_uint()
height = c_uint()
pixel_format = c_uint()
payload_size = c_uint()
stParam = MVCC_INTVALUE()
ret = camera.MV_CC_GetIntValue("PayloadSize", stParam)
if ret != 0:
    print(f"獲取PayloadSize失敗,錯誤碼: {ret}")
    exit()
payload_size.value = stParam.nCurValue
# 獲取寬度
ret = camera.MV_CC_GetIntValue("Width", stParam)
if ret != 0:
    print(f"獲取寬度失敗,錯誤碼: {ret}")
    exit()
width.value = stParam.nCurValue
# 獲取高度
ret = camera.MV_CC_GetIntValue("Height", stParam)
if ret != 0:
    print(f"獲取高度失敗,錯誤碼: {ret}")
    exit()
height.value = stParam.nCurValue
print(width.value,height.value)
pixel_format.value = 17301505  # RGB8
# 或
#pixel_format.value = 17301514  # Mono8
#曝光時間
exposure_time = 15000  # 單位:微秒
ret = camera.MV_CC_SetFloatValue("ExposureTime", exposure_time)
# 開始抓圖
ret = camera.MV_CC_StartGrabbing()
if ret != 0:
    print(f"開始抓圖失敗,錯誤碼: {ret}")
    exit()
# 分配緩沖區(qū)
data_buf = (c_ubyte * payload_size.value)()
data_size = c_uint(payload_size.value)
stFrameInfo = MV_FRAME_OUT_INFO_EX()
#-----------------------------------------------運行部分---------------------------
# 創(chuàng)建OpenCV窗口
cv2.namedWindow("Camera", cv2.WINDOW_NORMAL)
try:
    while True:
        data_buf = (c_ubyte * payload_size.value)()
        ret = camera.MV_CC_GetOneFrameTimeout(
            byref(data_buf),
            payload_size.value,
            stFrameInfo,
            1000
        )
        if ret == 0:
            #print(f"獲取到幀: 寬度={stFrameInfo.nWidth}, 高度={stFrameInfo.nHeight}, "f"像素格式={stFrameInfo.enPixelType}, 幀大小={stFrameInfo.nFrameLen}")
            frame = np.frombuffer(data_buf, dtype=np.uint8)
            actual_width = stFrameInfo.nWidth
            actual_height = stFrameInfo.nHeight
            # 黑白相機
            if stFrameInfo.enPixelType == 17301505:  # RGB8
                expected_size = actual_width * actual_height * CameraNumber
                if len(frame) != expected_size:
                    print(f"數(shù)據(jù)大小不匹配: 期望 {expected_size}, 實際 {len(frame)}")
                    continue
                frame = frame.reshape((actual_height, actual_width, CameraNumber))
                frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
            elif stFrameInfo.enPixelType == 17301514:  # Mono8
                expected_size = actual_width * actual_height
                if len(frame) != expected_size:
                    print(f"數(shù)據(jù)大小不匹配: 期望 {expected_size}, 實際 {len(frame)}")
                    continue
                frame = frame.reshape((actual_height, actual_width))
            elif stFrameInfo.enPixelType == 17301513:  # 可能是 Bayer 格式
                expected_size = actual_width * actual_height
                if len(frame) != expected_size:
                    print(f"數(shù)據(jù)大小不匹配: 期望 {expected_size}, 實際 {len(frame)}")
                    continue
                frame = frame.reshape((actual_height, actual_width))
                frame = cv2.cvtColor(frame, cv2.COLOR_BayerGB2BGR)
                frame = opencv_action(frame)
            else:
                print(f"不支持的像素格式: {stFrameInfo.enPixelType}")
                break
            cv2.imshow("Camera", frame)
            if cv2.waitKey(1) & 0xFF == ord("q"):
                break
        else:
            print(f"獲取圖像失敗,錯誤碼: {ret}")
            break
finally:
    # 停止抓圖
    camera.MV_CC_StopGrabbing()
    # 關(guān)閉設備
    camera.MV_CC_CloseDevice()
    # 銷毀句柄
    camera.MV_CC_DestroyHandle()
    # 銷毀窗口
    cv2.destroyAllWindows()

最終效果:

到此這篇關(guān)于Python結(jié)合OpenCV實現(xiàn)打開??禉C器人黑白相機的文章就介紹到這了,更多相關(guān)Python OpenCV打開海康機器人相機內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • TensorFlow進階學習定制模型和訓練算法

    TensorFlow進階學習定制模型和訓練算法

    本文將為你提供關(guān)于 TensorFlow 的中級知識,你將學習如何通過子類化構(gòu)建自定義的神經(jīng)網(wǎng)絡層,以及如何自定義訓練算法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • python實現(xiàn)最小二乘法線性擬合

    python實現(xiàn)最小二乘法線性擬合

    這篇文章主要為大家詳細介紹了python實現(xiàn)最小二乘法線性擬合,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • TensorFlow tf.nn.conv2d實現(xiàn)卷積的方式

    TensorFlow tf.nn.conv2d實現(xiàn)卷積的方式

    今天小編就為大家分享一篇TensorFlow tf.nn.conv2d實現(xiàn)卷積的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python實現(xiàn)隨機生成一個漢字的方法分享

    Python實現(xiàn)隨機生成一個漢字的方法分享

    這篇文章主要為大家詳細介紹了Python如何實現(xiàn)隨機生成一個漢字的功能,文中的示例代碼講解詳細,對我們深入了解Python有一定的幫助,需要的可以參考一下
    2023-01-01
  • python網(wǎng)絡應用開發(fā)知識點淺析

    python網(wǎng)絡應用開發(fā)知識點淺析

    在本篇內(nèi)容中小編給學習python的朋友們整理了關(guān)于網(wǎng)絡應用開發(fā)的相關(guān)知識點以及實例內(nèi)容,需要的朋友們參考下。
    2019-05-05
  • Pycharm技巧之代碼跳轉(zhuǎn)該如何回退

    Pycharm技巧之代碼跳轉(zhuǎn)該如何回退

    用Pycharm寫Python代碼有一段時間了,最近發(fā)現(xiàn)了一個Pycharm的一個小技巧想分享給大家,下面這篇文章主要給大家介紹了關(guān)于Pycharm代碼跳轉(zhuǎn)該如何回退的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • 使用Python在Windows和Linux上終止進程的簡易腳本分享

    使用Python在Windows和Linux上終止進程的簡易腳本分享

    終止系統(tǒng)中的進程在日常運維或開發(fā)中是常見需求,但傳統(tǒng)方法常讓人頭疼,所以本文我將分享兩個Python腳本,分別用于Windows和Linux系統(tǒng),只需輸入進程名即可終止目標進程,這些腳本簡單易用,適合系統(tǒng)管理員和開發(fā)人員,需要的朋友可以參考下
    2025-09-09
  • 手把手教你python實現(xiàn)SVM算法

    手把手教你python實現(xiàn)SVM算法

    這篇文章主要為大家詳細介紹了手把手教你python實現(xiàn)SVM算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python+selenium實現(xiàn)自動搶票功能實例代碼

    python+selenium實現(xiàn)自動搶票功能實例代碼

    Selenium是ThoughtWorks公司的一個強大的開源Web功能測試工具系列,采用Javascript來管理整個測試過程,包括讀入測試套件、執(zhí)行測試和記錄測試結(jié)果。這篇文章主要介紹了python+selenium實現(xiàn)自動搶票,需要的朋友可以參考下
    2018-11-11
  • python 實現(xiàn)兩個線程交替執(zhí)行

    python 實現(xiàn)兩個線程交替執(zhí)行

    這篇文章主要介紹了python 實現(xiàn)兩個線程交替執(zhí)行,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05

最新評論

神木县| 曲阳县| 鹤山市| 罗田县| 翁源县| 平湖市| 平邑县| 兖州市| 苍溪县| 吉安县| 邵阳县| 梁平县| 建始县| 含山县| 普兰县| 潮安县| 沛县| 甘谷县| 萍乡市| 西藏| 晋江市| 白玉县| 绥化市| 华宁县| 扶沟县| 衡山县| 兴仁县| 荆州市| 南昌县| 卓尼县| 福泉市| 大城县| 自治县| 肇庆市| 大关县| 微博| 彭山县| 白河县| 清水河县| 屯昌县| 济阳县|