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

Python??迪鄼C(jī)api超簡單入坑指南(學(xué)習(xí)必看)

 更新時(shí)間:2025年08月05日 11:05:49   作者:不惑之年~  
海康相機(jī)是??低暺煜碌囊豢钪匾a(chǎn)品,廣泛應(yīng)用于安防監(jiān)控、交通管理、工業(yè)檢測等領(lǐng)域,這篇文章主要介紹了Python海康相機(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 圖像,如果是其他格式,請修改
# 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??迪鄼C(jī)api超簡單入坑指南的文章就介紹到這了,更多相關(guān)Python海康相機(jī)api內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python將PPT的幻燈片和形狀轉(zhuǎn)為多種圖片格式

    使用Python將PPT的幻燈片和形狀轉(zhuǎn)為多種圖片格式

    這篇文章主要為大家詳細(xì)介紹了如何使用Python?將PPT幻燈片和形狀轉(zhuǎn)換為多種圖片格式,即JPG,?PNG,?BMP,?SVG,?TIFF,需要的可以參考下
    2025-02-02
  • Python3.7實(shí)現(xiàn)驗(yàn)證碼登錄方式代碼實(shí)例

    Python3.7實(shí)現(xiàn)驗(yàn)證碼登錄方式代碼實(shí)例

    這篇文章主要介紹了Python3.7實(shí)現(xiàn)驗(yàn)證碼登錄方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python防止隨意修改類屬性的實(shí)現(xiàn)方法

    python防止隨意修改類屬性的實(shí)現(xiàn)方法

    這篇文章主要介紹了python防止隨意修改類屬性的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python解析PDF程序代碼

    python解析PDF程序代碼

    python解析pdf信息,目前還是不能做到很完善,每個(gè)方法都會(huì)有它的弊端,都需要結(jié)合自己的業(yè)務(wù)場景來和其它方法一塊進(jìn)行使用,從而達(dá)到一個(gè)相對滿意的目標(biāo),接下來給大家介紹python解析PDF的程序代碼,一起看看吧
    2021-06-06
  • Python使用PyNmap進(jìn)行網(wǎng)絡(luò)掃描的詳細(xì)步驟

    Python使用PyNmap進(jìn)行網(wǎng)絡(luò)掃描的詳細(xì)步驟

    使用 PyNmap 進(jìn)行網(wǎng)絡(luò)掃描是一個(gè)非常有效的方式,PyNmap 是 Nmap 工具的一個(gè) Python 封裝,它允許你在 Python 腳本中使用 Nmap 的強(qiáng)大功能,本文介紹了如何使用 PyNmap 進(jìn)行網(wǎng)絡(luò)掃描的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08
  • 基于DataFrame改變列類型的方法

    基于DataFrame改變列類型的方法

    今天小編就為大家分享一篇基于DataFrame改變列類型的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python常用request庫與lxml庫操作方法整理總結(jié)

    python常用request庫與lxml庫操作方法整理總結(jié)

    一路學(xué)習(xí),一路總結(jié),技術(shù)就是這樣,應(yīng)用之后,在進(jìn)行整理,才可以加深印象。本篇文字為小節(jié)篇,核心總結(jié) requests 庫與 lxml 庫常用的操作
    2021-08-08
  • Python使用wxPython構(gòu)建文件編輯器與預(yù)覽器的完整實(shí)現(xiàn)

    Python使用wxPython構(gòu)建文件編輯器與預(yù)覽器的完整實(shí)現(xiàn)

    本文介紹了使用Python的wxPython庫開發(fā)一個(gè)集成了編輯、保存和預(yù)覽功能的桌面應(yīng)用程序的過程,該應(yīng)用程序支持HTML和Markdown文件的編輯和預(yù)覽,具有輕量級(jí)、定制化的特性,適用于快速編輯和預(yù)覽文本文件,需要的朋友可以參考下
    2026-01-01
  • 深入理解Python中字典的鍵的使用

    深入理解Python中字典的鍵的使用

    這篇文章主要介紹了深入理解Python中字典的鍵的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 對python實(shí)時(shí)得到鼠標(biāo)位置的示例講解

    對python實(shí)時(shí)得到鼠標(biāo)位置的示例講解

    今天小編就為大家分享一篇對python實(shí)時(shí)得到鼠標(biāo)位置的示例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10

最新評論

合川市| 高平市| 安阳县| 建阳市| 临颍县| 西乌| 布尔津县| 普兰店市| 巴林右旗| 五河县| 郴州市| 蒙自县| 富平县| 井研县| 仙游县| 黄石市| 清远市| 公主岭市| 新乐市| 连平县| 铜山县| 武夷山市| 丰镇市| 茂名市| 新竹市| 福清市| 长丰县| 鹤山市| 长白| 德清县| 桐庐县| 镇宁| 义马市| 同德县| 鄂伦春自治旗| 凌源市| 富宁县| 错那县| 忻州市| 开鲁县| 石首市|