1. 程式人生 > >如何用CVPixelBufferRef中的影象資料來生成cocos2dx的Texture2D物件

如何用CVPixelBufferRef中的影象資料來生成cocos2dx的Texture2D物件

大家知道, 通過Texture2D的initWithData()函式, 可以用各種格式的影象資料來生成Texture2D物件, 然後用來進行渲染。

筆者在某個專案中,需要把ios裝置上獲得的原始影象資料(儲存在CVPixelBufferRef中)生成Texture2D,網上這方面的資料比較少,通過自己的摸索,終於成功實現了這個需求。示例程式碼如下:

  CVPixelBufferLockBaseAddress(bf, 0); 
  void *data = CVPixelBufferGetBaseAddress(bf);
  char tmp = 0;
  for (int i = 0; i < dataLen; i += 4)
  {
   tmp = ((char*)data)[i];
   ((char*)data)[i] = ((char*)data)[i + 2];
   ((char*)data)[i + 2] = tmp;
   ((char*)data)[i + 3] = 255; // alpha
  }
  pTexture->initWithData(data,dataLen,Texture2D::PixelFormat::RGBA8888,width,height,cocos2d::Size(width,height));
  CVPixelBufferUnlockBaseAddress(bf, 0);
  CVPixelBufferRelease(bf);

說明:

1) dataLen,width,height是在獲得CVPixelBufferRef影象資料的同時所獲得的相關資訊;

2) CVPixelBufferRef中儲存的影象資料格式是BGRA8888,雖然Texture2D::PixelFormat中也有這個型別,但直接用

Texture2d::PixelFormat::BGRA8888來進行initWithData()時會報錯,於是先自己實現了BGRA8888到RGBA8888格式的轉換,然後用RGBA8888的格式來進行initWithData()。



相關推薦

如何用CVPixelBufferRef影象資料生成cocos2dx的Texture2D物件

大家知道, 通過Texture2D的initWithData()函式, 可以用各種格式的影象資料來生成Texture2D物件, 然後用來進行渲染。筆者在某個專案中,需要把ios裝置上獲得的原始影象資料(儲存在CVPixelBufferRef中)生成Texture2D,網上這方

ArcMap的顯示XY資料excel表格的資料生成點層但不顯示XY屬性欄位

轉載請註明作者(獨孤尚良dugushangliang)出處:https://blog.csdn.net/dugushangliang/article/details/82882391 各位看官,直接看圖: 你說為什麼同樣的資料,有的只顯示d這個欄位,明明還有別的欄

MATLAB按座標賦值 && 獲取figure影象資料

轉:http://www.ilovematlab.cn/thread-333975-1-1.html I(sub2ind(size(I), pos(:,1),pos(:,2))) = 1; 獲取figure中影象資料(https://blog.csdn.net/zhaoluruoyan89/

JDBC從資料庫獲取資料並以java物件返回

/** * * @param c * for example Person.class * @param primaryKeys * primaryKeys為主鍵,引數順序和表中保持一致 如果id, name

Hive檢視資料原始檔和具體位置方法

通常使用者在HIVE中用SELECT語句出來結果,無法確定結果是來自哪個檔案或者具體位置資訊,HIVE中考慮到了這點,在Virtual Column虛列中可以指定三個靜態列:   1. INPUT__FILE__NAME map任務讀入File的全路徑   2. BL

Python指令碼---把MySQL資料庫表資料匯出生成csv格式檔案

#!/usr/bin/env python# -*- coding:utf-8 -*-"""  Purpose: 生成日彙總對賬檔案  Created: 2015/4/27  Modified:2015/5/1  @author: guoyJoe"""#匯入模組import

神經網路訓練影象資料預處理的一些方式(一)

神經網路訓練中影象資料預處理的一些方式 1. crop 1. 1 對於有黑色背景的圖片,將資料crop在有效區域內 對於一些有黑色背景的圖片,如下圖: 這樣的圖片在做資料預處理的時候,黑色背景的無效區域,帶來了很大的運算量開銷。面對這種圖片,

利用.net替換Word的內容(從資料庫資料替換word裡面的書籤)

2.要在webconfig檔案裡面加上一句:   <identity impersonate="true"/> 主要是模擬身份的吧,如果不加的話,程式執行的時候會報出拒絕訪問的錯誤的.(而且你需要預先做好一個帶書籤的word模板)3.    新建立一個也面,在面上部加如using Word;   

vtk獲取記憶體影象資料

    vtkImageImport *importer = vtkImageImport::New();     importer->SetWholeExtent( 0, m_image->width-1, 0, m_image->height-1, 0, 0 );     importe

javajson資料生成以及解析

一.json理解 1.json(JavaScript Object Notation):javascript物件表示法(採用javascript物件的語法來表示物件資料),它是一種儲存和傳輸資料的格式,它的優點是易讀,易解析,相比起傳統的xml來說,它具有更小

redis學習2:redis資料結構結構與物件

第1章 前言 redis這麼強大,那麼它底層是如何實現的呢?使用了哪些資料結構呢?本文就帶大家來剖析剖析 第2章 簡單動態字串(SDS)   redis的字串不是直接用c語言的字串,而是用了一種稱為簡單動態字串(SDS)的抽象型別,並將其作為預設字串。   redis中包含字串值的鍵

說說如何使用 Android 的 Intent 傳遞類物件

使用 Intent 來傳遞物件有兩種方式:Serializable 和 Parcelable。 1 Serializable 方式 假設有一個 POJO 的 Account 類,該類實現了 Serializable 介面: public class Account im

好東西!sqlite3BLOB資料型別儲存大物件運用示例

 1:常用介面 個人比較喜歡sqlite, 使用最方便,唯一的準備工作是下載250K的源;而且作者很熱心,有問必答。 以下演示一下使用sqlite的步驟,先建立一個數據庫,然後查詢其中的內容。2個重要結構體和5個主要函式: sqlite3               *

如何控制JAVA一個類只能生成一個物件?

public class A{ private static A a = new A(); //宣告為static是為了確保只有一個物件存在,詳見static修飾符 private A(){} //構造

GROUP_CONCAT,SUBSTRING_INDEX的妙(將多條資料合併成一行,並且根據某些列的合併值做條件判斷生成最終值)

(1)不做處理: SELECT e.class_id AS class_id, c.course_name AS class_name, u.stuNum AS stu_num, u.USER_NAME AS student_name, u.department AS depart

python從excel表格讀取資料生成可以放在科技論文的圖片

最近在寫畢業小論文,需要插入符合科技論文的資料圖,其實很多的設定都是規定好的,雖然自己在excel中設定一下也不花多少時間,覺得好玩想著是不是可以用python做一個自動讀取資料畫圖的小指令碼,以後寫報告也可以用得著。 其實整個思路很清楚,兩個晚上的樣子就搭好了大體的程式,

獲取requestheader資料解決多裝置登入驗證問題

引言: 接上一篇文章,對@RequestMapping進行地址對映講解之後,該篇主要講解request 資料到handler method 引數資料的繫結所用到的註解和什麼情形下使用; 簡介: handler method 引數繫結常用的註解,我們根據他們處理的R

angular的ng-repeat和ng-show實現tab選項卡

new angular lis content padding col ora ack 顯示 雖然我們可以用angular中的路由來做tab選項卡,但是那會讓我們建立很多的頁面來引入,或者建立 <script type="text/ng-template" id="n

企業分布式微服務雲SpringCloud SpringBoot mybatis (十六)Spring Boot使用LDAP統一管理戶信息

數據庫表 repo on() intellij attr ads get 可選 mail LDAP簡介 LDAP(輕量級目錄訪問協議,Lightweight Directory Access Protocol)是實現提供被稱為目錄服務的信息服務。目錄服務是一種特殊的數據庫系

10.1-GLBP Round-robin //IOU(VM的GNS3鏡像做的)

默認 mark ffffff ace pre events -i text 分享圖片 一、實驗拓撲:二、實驗要求:1、IOU1、IOU2、IOU3運行EIGRP 90,並部署Lo0用來測試連通性;2、IOU1、IOU2的e0/1接口配置192.168.10.1、192.16