添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

解决的c++项目里的图片需要传输到unity做显示,返回的是cv::Mat 的data和 宽高,原始图像是三通道RGB图
C++:

cv::Mat _currentFrame;
void GetRawImageBytes(unsigned char* data, int width, int height)
   //Resize Mat to match the array passed to it from C#
    cv::Mat resizedMat(height, width, _currentFrame.type());
    cv::resize(_currentFrame, resizedMat, resizedMat.size(), cv::INTER_CUBIC);
    //You may not need this line. Depends on what you are doing
    cv::imshow("Nicolas", resizedMat);
    //Convert from RGB to ARGB 
    cv::Mat argb_img;
    cv::cvtColor(resizedMat, argb_img, CV_RGB2BGRA);
    std::vector<cv::Mat> bgra;
    cv::split(argb_img, bgra);
    std::swap(bgra[], bgra[]);
    std::swap(bgra[], bgra[]);
    std::memcpy(data, argb_img.data, argb_img.total() * argb_img.elemSize());

C#:

using System;
using System.Runtime.InteropServices;
using UnityEngine;
public class Test : MonoBehaviour
    [DllImport("ImageInputInterface")]
    private static extern void GetRawImageBytes(IntPtr data, int width, int height);
    private Texture2D tex;
    private Color32[] pixel32;
    private GCHandle pixelHandle;
    private IntPtr pixelPtr;
    void Start()
        InitTexture();
        gameObject.GetComponent<Renderer>().material.mainTexture = tex;
    void Update()
        MatToTexture2D();
    void InitTexture()
        tex = new Texture2D(, , TextureFormat.ARGB32, false);
        pixel32 = tex.GetPixels32();
        //Pin pixel32 array
        pixelHandle = GCHandle.Alloc(pixel32, GCHandleType.Pinned);
        //Get the pinned address
        pixelPtr = pixelHandle.AddrOfPinnedObject();
    void MatToTexture2D()
        //Convert Mat to Texture2D
        GetRawImageBytes(pixelPtr, tex.width, tex.height);
        //Update the Texture2D with array updated in C++
        tex.SetPixels32(pixel32);
        tex.Apply();
    void OnApplicationQuit()
        //Free handle
        pixelHandle.Free();

fromhttps://stackoverflow.com/questions/49482647/convert-opencv-mat-to-texture2d

版权声明:本文为CSDN博主「u013008291」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: https://blog.csdn.net/u013008291/article/details/81063057