添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
酒量小的杯子  ·  AssetBundle详解 - 知乎·  1 年前    · 
开心的斑马  ·  js控制input ...·  2 年前    · 

python调用海康工业相机,官方给出的SDK里没有转到opencv格式的例子,网上找了下,只有一篇,转换部分的代码如下:

temp = np.asarray(pData2)  # 将c_ubyte_Array转化成ndarray得到(3686400,)
temp = temp.reshape((2592, 2048, 1))  # 根据自己分辨率进行转化
gray = cv2.cvtColor(temp,cv2.COLOR_BGR2GRAY)
cv2.imshow("img", gray)

但是ctypes的格式转np.array的会报错,网上的说法是numpy的版本问题,试了试没解决,搜了半天,找到一个可行的,代码如下(就是在海康SDK的例子里改的):

winfun_ctype = WINFUNCTYPE
stFrameInfo = POINTER(MV_FRAME_OUT_INFO_EX)
pData = POINTER(c_ubyte)
FrameInfoCallBack = winfun_ctype(None, pData, stFrameInfo, c_void_p)
def image_callback(pData2, pFrameInfo, pUser):
        stFrameInfo = cast(pFrameInfo, POINTER(MV_FRAME_OUT_INFO_EX)).contents
        if stFrameInfo:
            b = string_at(pData2, 2592 * 2048 * 1)
            nparr = np.frombuffer(b, np.uint8)
            nparr = nparr.reshape(2048, 2592, 1)
            cv2.imshow(" dst ", nparr)
            cv2.waitKey(1)
python调用海康工业相机,官方给出的SDK里没有转到opencv格式的例子,网上找了下,只有一篇,转换部分的代码如下:temp = np.asarray(pData2) # 将c_ubyte_Array转化成ndarray得到(3686400,)temp = temp.reshape((2592, 2048, 1)) # 根据自己分辨率进行转化gray = cv2.cvtColor(temp,cv2.COLOR_BGR2GRAY)cv2.imshow("img", gray)但是ct linux版本环境比较麻烦,要注意自己的硬件系统是x86还是ARM等等, 我个人是ubuntu18 https://www.hikrobotics.com/cn/machinevision/service/download?module=0在 海康 官方下载其linux版本的MVS,下载完成后有很多版本的,根据自己电脑是x86或者arm来选择解压,同时在其中文文档中根据要求需要配置好环境变量!!! 文件夹中的 海康 文档给出了命令行 可以在终端中输入export查看环境变量是否导入了路径 第一次添加环境变量后需要重启(这点可能因人而异) 压缩包中有两个文件夹 一个是直接运行的脚本 一个是封装成类 根据需要自取,运行hik2cv.py即可 主动获取 图像 有两种方式: 方式一:调用 MV_CC_StartGrabbing_NET() 开始采集,需要自己开启一个buffer,然后在应用层循环调用 MV_CC_GetOneFrameTimeout_NET() 获取指定像素 格式 的帧 数据 ,获取帧 数据 时上层应用程序需要根据帧率控制好调用该接口的频率。 方式二:调用 MV_CC_StartGrabbing_NET(...
海康 威视sdk的官方示例中加入 opencv sharp读取图片 数据 到Mat类型。 网上没找到这个方面的,自己研究了一下,其实关键代码就这句: Mat image = new Mat(FrameInfo.nHeight, FrameInfo.nWidth, MatType.CV_8U, pBufForDriver); 理解了 数据 在内存中是什么样子就好了 class GrabImage from ctypes.wintypes import DWORD from ctypes.wintypes import WORD from ctypes.wintypes import LONG from ctypes.wintypes import BYTE # 报警信息列表,报一次在回调中加1次记录 alarm_info = [] fun_c
我司最近有款轮式巡检机器人用到了 海康 机器人的 工业 相机 MV-CA060-10GC,我们的开发平台是树莓派(运行Ubuntu Server 1804),开发语言是Java,但该 相机 没有Java SDK,于是我决定自己开发一个。 好消息是 海康 机器人提供了C语言的SDK,这样我就能通过JNA直接调用,而不必写一行C代码。 问题的提出 开发过程中发现,有2个API在Windows下正常运行,在树莓派下却总是报错误的参数,错误码80000004 第一个API负责获取原始 图像 ,第二个负责将原始 图像 压缩编码成jpg # opencv 二进制图片 def Mat2bytes(image): return np.array(cv2.imencode('.jpg', image)[1]).tobytes() 2. bytes opencv # 二进制图片 opencv 图像 def bytes2Mat(image): return cv2.imdecode(np.array(bytearray(image), dtype='uint8'), cv2.IMREAD_UNCHAN # 绘制矩形框 x, y, w, h = 100, 100, 200, 200 cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) # 提取 ROI roi = img[y:y+h, x:x+w] # 显示结果 cv2.imshow('image', img) cv2.imshow('roi', roi) cv2.waitKey(0) cv2.destroyAllWindows()