python: c_char_p指向的bitmap图像数据,通过c_char_Array最终赋值给PIL的Image对象

    def GetCurrentImage(self):
        ok, bitmap, buff_len = self.GetCurrentFrameBitmap()  #调用C函数,返回位图数据的指针. bitmap是c_char_p类型
        if not ok:
            return False,None,‘GetCurrentFrameBitmap fail:code=%d, msg=%s‘%                 (reader.LastErrorCode(), reader.LastErrorMessage())
        ret,width,height = self.GetVideoRect()
        if not ret:
            return False,None,‘GetVideoRect fail:code=%d, msg=%s‘%(reader.LastErrorCode(), reader.LastErrorMessage())
        BitmapType = c_char*buff_len  #创建一个数组对象
        arr = BitmapType()   #数组的实例
        memmove(arr, bitmap, buff_len)  #拷贝内容
        #img = Image.frombytes(‘RGB‘, (width, height), arr)
        img = Image.frombuffer(‘RGB‘, (width, height), arr, ‘raw‘, ‘RGB‘, 0, 1)   #数组直接映射为图片对象
        return True,img,‘success‘

这个方法试了三小时才试出来。

求大神指导更好的方法!

原文地址:https://www.cnblogs.com/ahfuzhang/p/9975168.html

时间: 2024-08-02 11:34:11

python: c_char_p指向的bitmap图像数据,通过c_char_Array最终赋值给PIL的Image对象的相关文章

python opencv3 使用numpy访问图像数据

1 # coding:utf8 2 import cv2 3 4 """ 5 将bgr在(0, 0)处改为白色像素 6 7 0号为green 1号为blue 2号为red 8 img的每一个位置存一个 3个长度的向量 分别表示gbr 9 """ 10 # img = cv2.imread("../data/mm2.jpeg") 11 # print(img[0, 0]) # [49 65 11] 12 # img[0, 0]

【Open CV基础】IplImage图像数据

名词解释: 像素:像素是指基本原色素及其灰度的基本编码.[1] 像素是构成数码影像的基本单元,通常以像素每英寸PPI(pixels per inch)为单位来表示影像分辨率的大小. 像素位深度:每个像素所用的位数(bit),像素位深度决定了彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数. IplImage各项结构属性说明:(源代码在opencv2/core/types_c.h的465行左右,里面有关各属性的说明) #include "cv.h" #incl

Python文件夹下图像数据可视化

Python文件夹下图像数据可视化 import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np   import urllib2 import urllib import os import shutil   subdir= "/7" homedir = os.getcwd() + subdir # "/home/haoyou/Dev/last_caffe_with_s

图像数据到网格数据-1——MarchingCubes算法

原文:http://blog.csdn.net/u013339596/article/details/19167907 概述 之前的博文已经完整的介绍了三维图像数据和三角形网格数据.在实际应用中,利用遥感硬件或者各种探测仪器,可以获得表征现实世界中物体的三维图像.比如利用CT机扫描人体得到人体断层扫描图像,就是一个表征人体内部组织器官形状的一个三维图像.其中的感兴趣的组织器官通过体素的颜色和背景加以区别.如下图的人体足骨扫描图像.医生通过观察这样的图像可以分析病人足骨的特征,从而对症下药. 这类

OpenCV中IplImage图像格式与BYTE图像数据的转换

最近在将Karlsruhe Institute of Technology的Andreas Geiger发表在ACCV2010上的Efficent Large-Scale Stereo Matching代码仿真.Andreas提供的源码中没有使用opencv,导致我一时无法适应如何显示处理的中间结果.将对应的库加载后,仿照采集相机图像数据的方式,从内存中读取对应图像到IplImage类型指针指定的内存空间,方便代码的调试和效果观测.其中用到的部分资料如下. *******************

zw版_Halcon图像数据交换和全内存计算.TXT

Halcon由于效率和其他原因,内部图像采用了很多自有格式,提高运行速度,但在数据交换方面非常麻烦. 特别是基于com.net控件模式的二次开发,无论是c,vb,还是delphi,目前都没有一种理想的解决方案. 目前,一般采用的以下两种方式进行转换: hobject桥接模式,内存拷贝,通道分离 外部硬盘文件交换 hobject桥接模式,参见:zw版[转发·台湾nvp系列Delphi例程]HALCON HImage与Bitmap格式转换 http://www.cnblogs.com/ziwang/

【原创】IP摄像头技术纵览(三)---图像数据在帧缓存设备(framebuffer)上的显示

[原创]IP摄像头技术纵览(三)-图像数据在帧缓存设备(framebuffer)上的显示 本文属于<IP摄像头技术纵览>系列文章之一: Author: chad Mail: [email protected] 本文可以自由转载,但转载请务必注明出处以及本声明信息. 提起Linux的窗口系统,我们第一个想到的就是X-Window.X-Window是Unix/Linux上的图形系统,它是通过X-Server来控制硬件的.但有一些Linux的发行版在引导的时候就会在屏幕上出现图形,这时的图形是不可能

python3随笔-opencv读取图像数据

如何安装opencv-python $pip3 install opencv-python 如何读取图像数据 import numpy as np import cv2 as cv img = cv.imread('1.png') print(img) print(img.dtype) [[[200 228 197][200 228 197][200 228 197]......[200 228 197][200 228 197][200 228 197]]] dtype('uint8') 使用

DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”

背景: 续上篇,继续介绍如何将多幅JPG图像数据存入DCM文件.即将有损压缩数据直接写入DCM文件,存储为Multi-frame形式. 多幅JPG图像数据存入DCM文件: 为了避免引起歧义,这里着重说明一下.本博文的描述的场景是:假设我们手中有多张JPG文件,想把JPG文件写入DCM文件,即单个DCM文件包含多幅图像信息的Multi-Frame形式.该问题之前与CSDN博友y317215133y也讨论过,当时我在OFFIS论坛中找到了一个帖子直接给了y317215133y答复.今天重新梳理了一下