欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python海康相機(jī)api超簡單入坑指南(學(xué)習(xí)必看)

 更新時(shí)間:2025年08月05日 11:05:49   作者:不惑之年~  
??迪鄼C(jī)是??低暺煜碌囊豢钪匾a(chǎn)品,廣泛應(yīng)用于安防監(jiān)控、交通管理、工業(yè)檢測等領(lǐng)域,這篇文章主要介紹了Python??迪鄼C(jī)api超簡單入坑指南的相關(guān)資料,需要的朋友可以參考下

1.準(zhǔn)備工作

??倒倬W(wǎng)下載相機(jī)驅(qū)動(dòng)??禉C(jī)器人-機(jī)器視覺-下載中心

安裝好以后找到Python的開發(fā)文件目錄參考:D:\MVS\MVS\Development\Samples\Python\MvImport這幾個(gè)文件很重要,想調(diào)用??迪鄼C(jī)取圖會(huì)用到.

為了寫代碼方便可以把這幾個(gè)文件拷貝一下,跟你的api主文件放在同一個(gè)文件夾下可以減少80%的煩惱.

2.打開相機(jī)

1.枚舉設(shè)備

我這里枚舉了兩種設(shè)備USB和網(wǎng)口:

2.實(shí)例化相機(jī)

好多剛?cè)肟拥娜藭?huì)忽略這一步

3.選擇相機(jī)

這里選擇用編號(hào)來連接相機(jī),后邊更深入學(xué)習(xí)后可改用ip鏈接相機(jī),我電腦就插入了一個(gè)??档木W(wǎng)口相機(jī),所以int(0)直接寫0就好了

4.設(shè)置觸發(fā)方式

因?yàn)楹?迪鄼C(jī)觸發(fā)方式有可能是on,off才可以打開相機(jī),所以為了避免新手遇到一堆報(bào)錯(cuò),這里直接代碼設(shè)置觸發(fā)方式為off,(也可以通過mvs把相機(jī)觸發(fā)方式設(shè)置為off).

5.打開相機(jī)

連接相機(jī)

6.開始取流

到取流這一步可以想象成已經(jīng)打開了相機(jī)實(shí)時(shí)取圖這一步

3.獲取一張圖像

獲取一張圖像數(shù)據(jù)

4.關(guān)閉相機(jī)

停止取流---關(guān)閉設(shè)備---銷毀句柄

5.完整代碼

把最后注釋掉的代碼釋放掉運(yùn)行,就可以看到你相機(jī)拍攝的圖片了

from.MvCameraControl_class import *
# from.CameraParams_header import *
from ctypes import *
import time
import cv2
import numpy as np
# sys.path.append("./Become a master in a hundred days/CAMapi")
class CameraManager:

    def __init__(self):
        self.cam = None
        self.data_buf = None
        self.device_status = False
        self.stOutFrame = None

    def data_camera(self):

        # 枚舉設(shè)備
        tlayerType = MV_GIGE_DEVICE | MV_USB_DEVICE
        deviceList = MV_CC_DEVICE_INFO_LIST()
        # 實(shí)例相機(jī)
        self.cam = MvCamera()
        ret = self.cam.MV_CC_EnumDevices(tlayerType, deviceList)
        if ret is None:
            print("錯(cuò)誤")
            return
        else:
            print(ret)
        # 選擇設(shè)備
        stDeviceList = cast(deviceList.pDeviceInfo[int(0)], POINTER(MV_CC_DEVICE_INFO)).contents
        # 創(chuàng)建句柄
        ret = self.cam.MV_CC_CreateHandleWithoutLog(stDeviceList)
        # start_time = time.time()
        # 獲取設(shè)備名稱,返回是一個(gè)內(nèi)存地址,循環(huán)遍歷用chr把每個(gè)字符碼轉(zhuǎn)換為字符
        # strModeName = ""
        # for per in stDeviceList.SpecialInfo.stGigEInfo.chModelName:
        #     strModeName = strModeName + chr(per)
        # print(f"device model name:{strModeName}")
        # 獲取設(shè)備名稱,ctypes.string_at 函數(shù)直接將內(nèi)存地址中的內(nèi)容讀取為字節(jié)字符串,然后使用 decode('utf-8') 進(jìn)行解碼。
        strModeName = ctypes.string_at(stDeviceList.SpecialInfo.stGigEInfo.chModelName).decode('utf-8')
        print(f"設(shè)備名稱:{strModeName}")
        # end_time = time.time()
        # camera_time = round(abs(start_time - end_time) * 1000, 3)  # 保留小數(shù)點(diǎn)后3為,拍照時(shí)間
        # print(f"獲取設(shè)備名稱時(shí)間:{camera_time}ms")
        # 設(shè)置觸發(fā)方式
        ret = self.cam.MV_CC_SetEnumValue("TriggerMode", MV_TRIGGER_MODE_OFF)
        # 打開相機(jī)
        ret = self.cam.MV_CC_OpenDevice(MV_ACCESS_Exclusive, 0)
        print("打開相機(jī)執(zhí)行碼:[0x%x]" % ret)
        # 開始取流
        ret = self.cam.MV_CC_StartGrabbing()
        self.device_status = True
        return self.cam


    def get_image(self):

        # 獲取一張圖像
        self.stOutFrame = MV_FRAME_OUT()  # 圖像結(jié)構(gòu)體,輸出圖像地址&信息
        start_time = time.time()
        ret = self.cam.MV_CC_GetImageBuffer(self.stOutFrame, 300)  # 圖像獲取函數(shù)
        print("圖像獲取執(zhí)行碼:[0x%x]" % ret)
        end_time = time.time()
        camera_time = round(abs(start_time - end_time) * 1000, 3)  # 保留小數(shù)點(diǎn)后3為,拍照時(shí)間
        print(f"獲取圖像時(shí)間:{camera_time}ms")

        # 獲取圖像數(shù)據(jù)的長度和指針
        nPayloadSize = self.stOutFrame.stFrameInfo.nFrameLen
        pData = self.stOutFrame.pBufAddr

        # 將數(shù)據(jù)存儲(chǔ)在 data_buf 中
        self.data_buf = (c_ubyte * nPayloadSize)()
        cdll.msvcrt.memcpy(byref(self.data_buf), pData, nPayloadSize)

        end_time = time.time()
        camera_time = round(abs(start_time - end_time) * 1000, 3)  # 保留小數(shù)點(diǎn)后3為,拍照時(shí)間
        print(f"獲取圖像儲(chǔ)存時(shí)間:{camera_time}ms")
        #釋放圖像緩存
        self.cam.MV_CC_FreeImageBuffer(self.stOutFrame)
        return self.data_buf


    def off_camera(self):

        # 停止取流
        ret = self.cam.MV_CC_StopGrabbing()
        print("停止取流執(zhí)行碼:[0x%x]" % ret)

        # 關(guān)閉設(shè)備
        ret = self.cam.MV_CC_CloseDevice()
        print("關(guān)閉設(shè)備執(zhí)行碼:[0x%x]" % ret)

        # 銷毀句柄
        ret = self.cam.MV_CC_DestroyHandle()
        print("銷毀句柄執(zhí)行碼:[0x%x]" % ret)
        self.device_status = False
        return self.device_status
    



# #實(shí)例化類
# CAM = CameraManager()
# deta_CAM = input("輸入1鏈接相機(jī):")
# if deta_CAM == "1":
#     CAM.data_camera()
#     print(f"當(dāng)前相機(jī)鏈接狀態(tài):{CAM.device_status}")
# else:
#     print("鏈接相機(jī)錯(cuò)誤!")



# deta_CAM = input("輸入2獲取圖片:")
# if deta_CAM == "2":
#     CAM.get_image()
#     print(f"當(dāng)前相機(jī)鏈接狀態(tài):{CAM.device_status}獲取圖片!")
# else:
#     print("獲取圖片錯(cuò)誤!")

# # 將 c_ubyte 數(shù)組轉(zhuǎn)換為 numpy 數(shù)組
# temp = np.frombuffer(CAM.data_buf, dtype=np.uint8)

# # 檢查圖像的分辨率信息,假設(shè)它是 2048x1024x3
# # 但首先需要確認(rèn)圖像的真實(shí)分辨率和像素格式,這里假設(shè)為 RGB 格式
# # 你可能需要根據(jù)實(shí)際情況調(diào)整 reshape 的參數(shù)
# # 使用正確的分辨率信息進(jìn)行重塑
# width = CAM.stOutFrame.stFrameInfo.nWidth
# height = CAM.stOutFrame.stFrameInfo.nHeight
# channels = 3  # 假設(shè)是 RGB 圖像,如果是其他格式,請(qǐng)修改
# print(width)
# print(height)
# try:
#     temp = temp.reshape((height, width, channels))
# except Exception as e:
#     print(f"Reshape error: {e}")


# # 將 BGR 轉(zhuǎn)換為 RGB
# temp = cv2.cvtColor(temp, cv2.COLOR_RGB2BGR)


# # 轉(zhuǎn)換為灰度圖像
# gray = cv2.cvtColor(temp, cv2.COLOR_RGB2GRAY)


# # 顯示圖像
# cv2.namedWindow("ori", cv2.WINDOW_NORMAL)
# cv2.imshow("ori", temp)


# # 顯示灰度圖像
# cv2.namedWindow("gray", cv2.WINDOW_NORMAL)
# cv2.imshow("gray", gray)


# cv2.waitKey(0)



# deta_CAM = input("輸入3關(guān)閉相機(jī)設(shè)備:")
# if deta_CAM == "3":
#     CAM.off_camera()
#     print(f"當(dāng)前相機(jī)鏈接狀態(tài):{CAM.device_status}")
# else:
#     print("關(guān)閉相機(jī)錯(cuò)誤!")

總結(jié) 

到此這篇關(guān)于Python海康相機(jī)api超簡單入坑指南的文章就介紹到這了,更多相關(guān)Python??迪鄼C(jī)api內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Python?Tkinter?復(fù)選框?->Checkbutton

    關(guān)于Python?Tkinter?復(fù)選框?->Checkbutton

    這篇文章主要介紹了關(guān)于Python?Tkinter復(fù)選框Checkbutton,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Python PyQt5實(shí)戰(zhàn)項(xiàng)目之文件拷貝器的具體實(shí)現(xiàn)詳解

    Python PyQt5實(shí)戰(zhàn)項(xiàng)目之文件拷貝器的具體實(shí)現(xiàn)詳解

    PyQt5以一套Python模塊的形式來實(shí)現(xiàn)功能。它包含了超過620個(gè)類,600個(gè)方法和函數(shù)。本篇文章手把手帶你用PyQt5實(shí)現(xiàn)一個(gè)簡單的文件拷貝器,大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • 使用Python制作一盞 3D 花燈喜迎元宵佳節(jié)

    使用Python制作一盞 3D 花燈喜迎元宵佳節(jié)

    這篇文章主要介紹了用Python制作一盞 3D 花燈喜迎元宵佳節(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python庫docopt命令行參數(shù)解析工具

    Python庫docopt命令行參數(shù)解析工具

    這篇文章主要介紹了Python庫docopt命令行參數(shù)解析工具,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Python繪制牛奶凍曲線(高木曲線)案例

    Python繪制牛奶凍曲線(高木曲線)案例

    這篇文章主要介紹了Python繪制牛奶凍曲線(高木曲線)案例,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • pycharm中:OSError:[WinError?1455]頁面文件太小無法完成操作問題的多種解決方法

    pycharm中:OSError:[WinError?1455]頁面文件太小無法完成操作問題的多種解決方法

    這篇文章主要給大家介紹了關(guān)于pycharm中:OSError:[WinError?1455]頁面文件太小無法完成操作問題的多種徹底解決方法,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Python編程技巧連接列表的八種操作方法

    Python編程技巧連接列表的八種操作方法

    這篇文章主要為大家介紹了Python編程技巧之連接列表的八種操作方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • 對(duì)python 矩陣轉(zhuǎn)置transpose的實(shí)例講解

    對(duì)python 矩陣轉(zhuǎn)置transpose的實(shí)例講解

    下面小編就為大家分享一篇對(duì)python 矩陣轉(zhuǎn)置transpose的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Pycharm如何自動(dòng)生成頭文件注釋

    Pycharm如何自動(dòng)生成頭文件注釋

    這篇文章主要介紹了Pycharm如何自動(dòng)生成頭文件注釋,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python閉包與裝飾器原理及實(shí)例解析

    Python閉包與裝飾器原理及實(shí)例解析

    這篇文章主要介紹了Python閉包與裝飾器原理及實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論