OpenCV For Unity 实现简单抠图

一、参考:

1、OpenCV For Unity 实现简单抠图

https://www.jianshu.com/p/3f1876c62b11

①总结:good:很好用,使用起来很是方便,下面是我进行代码修改后的内容,并且能够直接运行起来

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using UnityEngine.UI;

using System;
using UnityEngine.Events;
using UnityEngine.Serialization;
using OpenCVForUnity.CoreModule;
using OpenCVForUnity.UnityUtils;

using OpenCVForUnity.ImgprocModule;
using OpenCVForUnity.UnityUtils.Helper;

using OpenCVForUnity.ImgcodecsModule;




/// <summary>
/// 功能:实现opencvForUnity的简单抠图
/// </summary>
public class My_test11_matting : MonoBehaviour
{

    public GameObject rawImage;

    // Use this for initialization
    void Start()
    {
        SampleMatting();

    }

    // Update is called once per frame
    void Update()
    {

    }


    void SampleMatting()
    {
        //把图片读进三通道的容器

        var src = Imgcodecs.imread(Application.streamingAssetsPath + "/test11/timg.jpg", 1);

        // var mask  = Imgcodecs.imread(Application.streamingAssetsPath+"/testsf.jpg",0);

        //把尺寸设置为大小

        Imgproc.resize(src, src, new Size(500, 500));

        //建立一个四通道的容器

        var dst = new Mat(src.cols(), src.rows(), CvType.CV_8UC4);

        //转换色彩空间

        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2RGBA);



        for (int i = 0; i < dst.cols(); i++)

        {

            for (int j = 0; j < dst.rows(); j++)

            {

                //这个105是阈值,你可以自己定义来试试效果

                if (dst.get(j, i)[0] > 105)

                {

                    dst.put(j, i, 255, 255, 255, 0);

                }

            }

        }



        var tex = new Texture2D(dst.cols(), dst.rows(), TextureFormat.RGBA32, false);

        Utils.matToTexture2D(dst, tex);

        rawImage.GetComponent<RawImage>().texture = tex;

       // var raw = this.GetComponentInChildren();

        //  raw.texture = tex;

        //raw.SetNativeSize();        
    }

}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值