海康Mv相机,在pyqt中使用GetImageBuffer的方法获取数据的流程和使用方法

以Bayer RG8彩色格式为例。

  1. 从缓存中获取一帧图像数据(海康相机默认的像素格式为Bayer RG8) ,得到:stOutFrame
python 复制代码
MV_CC_GetImageBuffer(stOutFrame, outTime)   # 获取一帧
st_frame_info = stOutFrame.stFrameInfo  # 图像的帧信息
  1. 拷贝帧图像数据的字节流,得到:buf_frame_bytes
python 复制代码
cdll.msvcrt.memcpy(byref(buf_frame_bytes), stOutFrame.pBufAddr,
                   st_frame_info.nFrameLen)  
  1. 把字节流转换为以图像的宽和高为参数的二维数组numpy array,得到:image_array,现在的像素格式仍然是Bayer RG8.
python 复制代码
image_array = np.frombuffer(buf_frame_bytes, dtype=np.uint8).reshape(
                (stConvertParam.nHeight, stConvertParam.nWidth))

# opencv可以直接将这个保存为支持中文的文件
_, img_encoded = cv2.imencode(save_type, image_array)  # 使用编码的方式保存,规避opencv不支持中文名的缺陷
# 将图像数据写入文件
with open(save_path, 'wb') as f:
    f.write(img_encoded.tobytes())
  1. 把像素阵列转换到RGB和BGR格式,得到:rgb_image,格式为RGB;bgr_image,格式为BGR;
python 复制代码
rgb_image = cv2.cvtColor(image_data, cv2.COLOR_BAYER_RG2RGB)  # RGB格式,用于保存文件和Qt应用
bgr_image = cv2.cvtColor(image_data, cv2.COLOR_BAYER_RG2BGR)  # BGR格式,用于OpenCv的处理
cv2.imwrite(file_path, rgb_image)    # OpenCv保存文件(不支持中文文件名)
  1. 将RGB的像素阵列转换为Qt的QImage对象,得到:q_img
python 复制代码
q_img = QImage(rgb_image.data, rgb_image.shape[1], rgb_image.shape[0], QImage.Format_RGB888)
q_img.save("test.jpg")  # q_img可用于Qt的保存文件
  1. 将QImage对象转换为QPixmap,用于Qt的UI显示。得到:pix_map
python 复制代码
pix_map = QPixmap.fromImage(q_img)
  1. 使用SetPixmap()函数在窗口部件上显示图像:
python 复制代码
pixmap_item.setPixmap(pix_map)  # 使用QPixmap数据
label.setPixmap(pix_map)  # 使用QPixmap数据
相关推荐
一条大祥脚5 分钟前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
10年前端老司机40 分钟前
Milvus 8种检索能力实践
数据库·python·agent
Sakura_j_h_1 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
大草原的小灰灰2 小时前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain
卷无止境2 小时前
百万 token 时代的真相:主流大模型上下文窗口与最大输出的横向对比分析
人工智能·python
用户298698530142 小时前
Python 实战:将 HTML 批量转换为 Markdown
python·html·markdown
hhcgchpspk2 小时前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
小小张说故事2 小时前
Python 里 copy.copy() 和 deepcopy() 到底差在哪:拆开 __copy__、__deepcopy__ 和那个防止无限递归的 memo 字典
python
vipxieliang2 小时前
Python collections:高效容器与实战案例
后端·python
青少儿编程课堂3 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛