Linux下:
def work_thread(cam=0, data_buf=0, nDataSize=0):
stFrameInfo = MV_FRAME_OUT_INFO_EX()
memset(byref(stFrameInfo), 0, sizeof(stFrameInfo))
while True:
ret = cam.MV_CC_GetOneFrameTimeout(byref(data_buf), nDataSize, stFrameInfo, 1000)
if ret == 0:
print("get one frame: Width[%d], Height[%d], PixelType[0x%x], nFrameNum[%d]" % (
stFrameInfo.nWidth, stFrameInfo.nHeight, stFrameInfo.enPixelType, stFrameInfo.nFrameNum))
stConvertParam = MV_SAVE_IMAGE_PARAM_EX()
stConvertParam.nWidth = stFrameInfo.nWidth
stConvertParam.nHeight = stFrameInfo.nHeight
stConvertParam.pData = data_buf
stConvertParam.nDataLen = stFrameInfo.nFrameLen
stConvertParam.enPixelType = stFrameInfo.enPixelType
file_path = "save.bmp"
stConvertParam.enImageType = MV_Image_Bmp
bmpsize = stFrameInfo.nWidth * stFrameInfo.nHeight * 3 + 54
stConvertParam.nBufferSize = bmpsize
bmp_buf = (c_ubyte * bmpsize)()
stConvertParam.pImageBuffer = bmp_buf
ret = cam.MV_CC_SaveImageEx2(stConvertParam)
if ret != 0:
print("save file executed failed0:! ret[0x%x]" % ret)
del data_buf
sys.exit()
file_open = open(file_path.encode('ascii'), 'wb+')
try:
img_buff = (c_ubyte * stConvertParam.nDataLen)()
memmove(byref(img_buff), stConvertParam.pImageBuffer, stConvertParam.nDataLen)
file_open.write(img_buff)
except Exception as e:
raise Exception("save file executed failed1::%s" % e)
finally:
file_open.close()
else:
print("no data[0x%x]" % ret)
if g_bExit == True:
break
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
windows下:
def work_thread(cam=0, data_buf=0, nDataSize=0):
stFrameInfo = MV_FRAME_OUT_INFO_EX()
memset(byref(stFrameInfo), 0, sizeof(stFrameInfo))
while True:
ret = cam.MV_CC_GetOneFrameTimeout(byref(data_buf), nDataSize, stFrameInfo, 1000)
if ret == 0:
print("get one frame: Width[%d], Height[%d], PixelType[0x%x], nFrameNum[%d]" % (
stFrameInfo.nWidth, stFrameInfo.nHeight, stFrameInfo.enPixelType, stFrameInfo.nFrameNum))
stConvertParam = MV_SAVE_IMAGE_PARAM_EX()
stConvertParam.nWidth = stFrameInfo.nWidth
stConvertParam.nHeight = stFrameInfo.nHeight
stConvertParam.pData = data_buf
stConvertParam.nDataLen = stFrameInfo.nFrameLen
stConvertParam.enPixelType = stFrameInfo.enPixelType
file_path = "save.bmp"
stConvertParam.enImageType = MV_Image_Bmp
bmpsize = stFrameInfo.nWidth * stFrameInfo.nHeight * 3 + 54
stConvertParam.nBufferSize = bmpsize
bmp_buf = (c_ubyte * bmpsize)()
stConvertParam.pImageBuffer = bmp_buf
ret = cam.MV_CC_SaveImageEx2(stConvertParam)
if ret != 0:
print("save file executed failed0:! ret[0x%x]" % ret)
del data_buf
sys.exit()
file_open = open(file_path.encode('ascii'), 'wb+')
try:
img_buff = (c_ubyte * stConvertParam.nDataLen)()
cdll.msvcrt.memcpy(byref(img_buff), stConvertParam.pImageBuffer, stConvertParam.nDataLen)
file_open.write(img_buff, )
except Exception as e:
raise Exception("save file executed failed1::%s" % e)
finally:
file_open.close()
else:
print("no data[0x%x]" % ret)
if g_bExit == True:
break
接触图像领域的应该对于opencv都不会感到陌生,这个应该算是功能十分强劲的一个算法库了,当然了,使用起来也是很方便的,之前使用Windows7的时候出现多该库难以安装成功的情况,现在这个问题就不存在了,需要安装包的话可以去我的资源中下载使用,使用pip安装方式十分地便捷。
今天主要是基于opencv模块来调用笔记本的内置摄像头,然后从视频流中获取到人脸的图像数据用于之后的人脸识别项目,也就是为了构建可用的数据集。整个实现过程并不复杂,具体如下:
#!usr/bin/env python
#encoding:utf-8
__Author__:沂水寒城
功能: Python openc
通过python调用海康威视工业摄像头并进行图像存储问题(数据流获取问题未能解决)
先说情况,本人是做视觉检测的需要高倍率摄像头进行实时检测,也就是需要深度学习进行图片数据处理,但是这个又是python来进行分析,而海康威视主要程序代码是以C为主的,传过来的数据我也尝试的去解析都是不能转化成python的BGR图像。
具体参照了:通过cv2调用海康威视摄像头,但这个不能调用工业摄像头,通过官方给一个400什么软件要激活摄像头,可是却并不能检测到工业摄像头,通过mvs软件调用到摄像头地址进行测试也无法获取到摄
Visual Studio 2017
硬件:DS-2CD3T86FWDV2-I5S
相机SDK:CH-HCNetSDKV6.1.6.45_build20210302_win64
首先,海康网络相机的读取和工业相机不是同一个SDK包,工业相机的SDK包去海康机器人下载,网络相机的SDK包去海康威视下载。工业相机控制软件MVS目录下有python SDK包使用示例,非
海康工业相机功能模块-参数保存与加载前言相机参数保存的快速方法相机参数导入导出的操作方法
前面一篇文章,讲了工业相机参数如何设置与获取,使用sdk能够将自己想要的参数快速的配置进自己的程序,但是,在实际使用中,我们会发现,sdk配置的参数似乎在断电只会就消失啦,不能能够实现断电生效???
软件开发过程中,只能够配置常见的参数,一些偏门的参数,非常见的相机调试参数,如何批量设置进相机、如果断电能够保存???
这一篇文章就是来介绍、解决这个问题
相机参数保存的快速方法
MVS如何操作
参考相机用户手册
主动获取图像有两种方式:
方式一:调用 MV_CC_StartGrabbing_NET() 开始采集,需要自己开启一个buffer,然后在应用层循环调用 MV_CC_GetOneFrameTimeout_NET() 获取指定像素格式的帧数据,获取帧数据时上层应用程序需要根据帧率控制好调用该接口的频率。
方式二:调用 MV_CC_StartGrabbing_NET(...
条件:Python+海康官方的mvs文件下的development/samples下的python文件夹
注意:相机连接后不要用官方app打开相机,不然python代码检测不到设备,代码在pycharm会提示报错,亲测能跑并能截取到图片
# -- coding: utf-8 --
import sys
import copy
import msvcrt
from ctypes import *...
文章目录前言参考链接环境设置相机控制与数据获取数据格式转换常见问题
随着python这们语言不断深入发展,那么python调用工业相机也成为了一项流行的需求;
本文了就简单梳理下海康工业相机python的使用
搬砖了一些写的好的文章做参考
海康机器人工业相机sdk简介
海康工业相机Python调用实现连续实时拍照
海康工业相机参数设置与获取
先安装MVS,下载地址 海康机器人官网,SDK简介也可以看看上面的引用博客
条件:Python+海康官方的mvs文件下的developmen
在windous系统下Python实现海康相机登入、预览、抓图、光学变倍、相机激活、区域聚焦、区域曝光功能;linux系统下载相应的海康SDK,并将lib文件更换为相对应的库文件,同时将HCNetSDKCom文件夹拷贝出来(与lib文件夹同一级别)
python实现的功能如下:
import numpy as np
import os
import ctypes
#获取所有的库文...
Python调用海康威视网络相机C++的SDK
本文参考:https://blog.csdn.net/c20081052/article/details/95082377 笔者将此文章中遗漏或未遇见的问题归纳总结,并分享自己在运行过程中遇到的问题,与君共勉。
一、运行环境
Win10系统 (64位)
Python3.7 (若是有用Python2.x版本的童鞋,尽量升级Python版本。在实验过程中,有其他童鞋由于Python版本问题,无法读取Python库)
Opencv3_4_2 、Vi
Python是目前非常流行的一种编程语言,而海康威视则是一家致力于智能安防等领域的厂商。针对Python和海康相机的结合,也就是Python海康工业相机,这是一种可以将普通的海康威视摄像头转化为一种工业相机的技术。这样一来,借助于Python编程的优势,能够更加灵活地控制海康相机的拍摄功能以及图像处理过程,从而能够实现更多样化的应用。
在Python海康工业相机的应用中,首先需要实现的就是海康相机的采集功能,通过Python编程启动相机拍摄图像或视频流,并对采集到的数据进行相应地处理。这种技术可以使得使用者根据自己的需求进行灵活的二次开发,实现更多的应用场景,例如机器视觉、工业自动化、智能交通等领域。
总之,Python海康工业相机的出现,让普通的海康相机具备了更多的灵活性和可塑性。这样一种技术,无疑将会受到越来越多的开发者和用户的青睐,开启更多应用的可能性。
优美的C科技:
Python下Opencv尝试调用海康GIGE工业相机
tso9001: