最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于微信小程序?qū)崿F(xiàn)透明背景人像分割功能

 更新時(shí)間:2022年10月08日 10:41:04   作者:摔跤貓子  
這篇文章主要介紹了基于小程序?qū)崿F(xiàn)透明背景人像分割,此文主要實(shí)現(xiàn)識(shí)別人體的輪廓范圍,與背景進(jìn)行分離并保存效果圖,適用于拍照背景替換及透明背景的人像圖(png格式)轉(zhuǎn)換,需要的朋友可以參考下

一、文章前言

此文主要實(shí)現(xiàn)識(shí)別人體的輪廓范圍,與背景進(jìn)行分離并保存效果圖,適用于拍照背景替換及透明背景的人像圖(png格式)轉(zhuǎn)換。

二、具體流程及準(zhǔn)備

2.1、注冊(cè)百度開放平臺(tái)及微信公眾平臺(tái)賬號(hào)。
2.2、下載及安裝微信Web開發(fā)者工具。
2.3、如需通過SDK調(diào)用及需準(zhǔn)備對(duì)應(yīng)語言的開發(fā)工具。

三、開發(fā)步驟

2.1、打開微信開發(fā)者工具,新建項(xiàng)目,選擇不使用模板、不使用云服務(wù)。

在這里插入圖片描述

2.2、在pages文件夾下面創(chuàng)建一個(gè)文件夾并新建對(duì)應(yīng)的page文件。

在這里插入圖片描述

2.3、在js的onLoad事件中請(qǐng)求獲取Token的接口,將接口返回access_token存儲(chǔ)到該頁的變量當(dāng)中,用于后續(xù)請(qǐng)求圖像分割的接口憑證。ApiKey和SecretKey建議密文保存。

/**
   * 生命周期函數(shù)--監(jiān)聽頁面加載
   */
  onLoad(options) {
    let that = this;
    let ApiKey='';
    let SecretKey='';
    wx.request({
      url: 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + ApiKey+'&client_secret='+SecretKey,
      method: 'POST',
      success: function (res) {
        that.setData({
          AccessToken:res.data.access_token
        });
      }
    });
  },

2.4、隨后在wxml和js中實(shí)現(xiàn)對(duì)應(yīng)的選擇圖片及轉(zhuǎn)換base64的功能效果。

<view class="containerBox">
  <view class="leftBtn" bindtap="loadImage">上傳圖片</view>
  <view class="rightBtn" bindtap="identify">圖像轉(zhuǎn)換</view>
</view>
<view >
  <image src="{{choiceImg}}" class="showImg"></image>
  <image src="data:image/png;base64,{{imgBase64}}" class="showImg"></image>
</view>
let that = this;
    wx.chooseImage({
      success: function (res) {
        that.choiceImg = res.tempFilePaths[0];
        wx.getFileSystemManager().readFile({
          filePath:res.tempFilePaths[0],
          encoding:'base64',
          success(data){
            let baseData = data.data;
            that.setData({
              choiceImg: res.tempFilePaths[0],
              baseData:baseData
            })
          }
        });
      }
    });

2.5、給圖像轉(zhuǎn)換按鈕對(duì)應(yīng)的響應(yīng)事件中綁定開放平臺(tái)接口,將參數(shù)進(jìn)行拼接傳遞。

在這里插入圖片描述

    let that = this;
    wx.request({
      url: 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg?access_token=' + that.data.AccessToken,
      method: 'POST',
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      data:{
        image:that.data.baseData
      },
      success: function (identify) {
        that.setData({
          imgBase64: identify.data.foreground
      })
      }
    })

2.6、根據(jù)接口返回的數(shù)據(jù)來看,我們先取foreground也就是分割后的人像前景摳圖進(jìn)行展示。

在這里插入圖片描述

2.7、能夠成功將解析后的圖片進(jìn)行展示后,我們將返回的base64格式的圖片進(jìn)行處理然后保存到本地,就可以得到一個(gè)透明背景的png,我們可以自己對(duì)這個(gè)圖片進(jìn)行上色、PS等操作。

//獲取文件管理器對(duì)象
    const fs = wx.getFileSystemManager()
    //文件保存路徑
    const Imgpath = wx.env.USER_DATA_PATH + '/qrcodeImg' + '.png'
    //base64圖片文件
    let imageSrc = this.data.imgBase64.replace(/^data:image\/\w+;base64,/, '')
    //寫入本地文件
    fs.writeFile({
      filePath: Imgpath,
      data: imageSrc,
      encoding: 'base64',
      success(res) {
        //保存到手機(jī)相冊(cè)
        wx.saveImageToPhotosAlbum({
          filePath: Imgpath,
          success(res) {
            wx.showToast({
              title: '保存成功',
              icon: 'success'
            })
          },
          fail: function(err) {
          }
        })
      }
    })

在這里插入圖片描述

四、完整代碼

<!--index.wxml-->
<view class="containerBox">
  <view class="leftBtn" bindtap="loadImage">上傳圖片</view>
  <view class="rightBtn" bindtap="identify">圖像轉(zhuǎn)換</view>
</view>
<view >
  <image src="{{choiceImg}}" class="showImg"></image>
  <image src="data:image/png;base64,{{imgBase64}}" class="showImg"></image>
</view>
<view class="saveBtn" bindtap="saveBtn">保存圖片</view>
<!--index.wxss-->
.containerBox{
  width:750rpx;
  display:flex;
  height:62rpx;
  margin-top:20rpx;
}
.leftBtn{
  width:181rpx;
  height:62rpx;
  color:#4FAFF2;
  border:1rpx solid #4FAFF2;
  border-radius:10rpx;
  text-align: center;
  line-height:62rpx;
  font-size:28rpx;
  margin-left: 158rpx;
}
.rightBtn{
  width:181rpx;
  height:62rpx;
  color:white;
  border:1rpx solid #4FAFF2;
  border-radius:10rpx;
  text-align: center;
  line-height:62rpx;
  font-size:28rpx;
  margin-left: 73rpx;
  background:#4FAFF2;
}
.showImg{
  width:415rpx;
  height:415rpx;
  margin-left:167rpx;
  margin-top:25rpx;
  border-radius:20rpx;
}
.result{
  margin-top:20rpx;
}
.resultTitle{
  margin-left:75rpx;
}
.productTableTr{
  height: 80rpx;line-height: 80rpx;border-bottom: 1rpx solid #F8F8F8;display:flex;
}
.leftTr{
  width: 283rpx;height: 80rpx;line-height: 80rpx;
}
.rightTr{
  width: 419rpx;height: 80rpx;line-height: 80rpx;color: #FF2525;font-size: 26rpx;
}
.leftTrText{
  color: #2B79F5;font-size: 28rpx;margin-left: 15rpx;width: 283rpx;
}
.productDetailTable{
  width: 702rpx;margin-left: 24rpx;border:1rpx solid #F8F8F8;border-radius: 6rpx;
}
.saveBtn{
  width:181rpx;
  height:62rpx;
  color:white;
  border:1rpx solid #4FAFF2;
  border-radius:10rpx;
  text-align: center;
  line-height:62rpx;
  font-size:28rpx;
  margin-left: 284rpx;
  background:#4FAFF2;
  margin-top:20rpx;
}
  identify(){
    let that = this;
    wx.request({
      url: 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg?access_token=' + that.data.AccessToken,
      method: 'POST',
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      data:{
        image:that.data.baseData
      },
      success: function (identify) {
        that.setData({
          imgBase64: identify.data.foreground
      })
      }
    })
  },
  saveBtn(){
    //獲取文件管理器對(duì)象
    const fs = wx.getFileSystemManager()
    //文件保存路徑
    const Imgpath = wx.env.USER_DATA_PATH + '/qrcodeImg' + '.png'
    //base64圖片文件
    let imageSrc = this.data.imgBase64.replace(/^data:image\/\w+;base64,/, '')

    //寫入本地文件
    fs.writeFile({
      filePath: Imgpath,
      data: imageSrc,
      encoding: 'base64',
      success(res) {
        //保存到手機(jī)相冊(cè)
        wx.saveImageToPhotosAlbum({
          filePath: Imgpath,
          success(res) {
            wx.showToast({
              title: '保存成功',
              icon: 'success'
            })
          },
          fail: function(err) {
          }
        })
      }
    })

  },

到此這篇關(guān)于基于小程序?qū)崿F(xiàn)透明背景人像分割的文章就介紹到這了,更多相關(guān)小程序透明背景人像分割內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js實(shí)現(xiàn)n秒倒計(jì)時(shí)后才可以點(diǎn)擊的效果

    js實(shí)現(xiàn)n秒倒計(jì)時(shí)后才可以點(diǎn)擊的效果

    這篇文章主要介紹了js點(diǎn)擊按鈕在倒計(jì)時(shí)后才可以點(diǎn)擊的效果,需要的朋友可以參考下
    2015-12-12
  • 微信小程序文章詳情功能完整實(shí)例

    微信小程序文章詳情功能完整實(shí)例

    這篇文章主要介紹了微信小程序文章詳情功能,結(jié)合完整實(shí)例形式詳細(xì)分析了微信小程序文章詳情功能具體步驟、原理及功能實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-06-06
  • 利用Javascript開發(fā)一個(gè)二維周視圖日歷

    利用Javascript開發(fā)一個(gè)二維周視圖日歷

    這篇文章主要給大家介紹了關(guān)于利用Javascript如何開發(fā)一個(gè)二維周視圖日歷的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • JavaScript實(shí)現(xiàn)一個(gè)空中避難的小游戲

    JavaScript實(shí)現(xiàn)一個(gè)空中避難的小游戲

    最近利用Javascript實(shí)現(xiàn)了一個(gè)小游戲,覺著還不錯(cuò),所以分享給大家,下面這篇文章主要給大家介紹了利用JavaScript實(shí)現(xiàn)一個(gè)空中避難的小游戲的相關(guān)資料,文中給出了完整的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。
    2017-06-06
  • JS 組件系列之Bootstrap Table的凍結(jié)列功能徹底解決高度問題

    JS 組件系列之Bootstrap Table的凍結(jié)列功能徹底解決高度問題

    這篇文章主要介紹了JS 組件系列之Bootstrap Table的凍結(jié)列功能徹底解決高度問題,需要的朋友可以參考下
    2017-06-06
  • JS實(shí)現(xiàn)拖拽的方法分析

    JS實(shí)現(xiàn)拖拽的方法分析

    這篇文章主要介紹了JS實(shí)現(xiàn)拖拽的方法,結(jié)合實(shí)例形式分析了JS拖拽的實(shí)現(xiàn)原理、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-12-12
  • JavaScript 數(shù)組常見操作技巧

    JavaScript 數(shù)組常見操作技巧

    這篇文章主要給大家分享的是JavaScript 數(shù)組常見操作技巧,數(shù)組是 JavaScript 中常見數(shù)據(jù)類型之一,關(guān)于它的一些操作方法,我在這里做一下簡(jiǎn)單記錄和總結(jié),需要的小伙伴可以參考一下
    2022-02-02
  • JS實(shí)現(xiàn)的圖片預(yù)覽插件與用法示例【不上傳圖片】

    JS實(shí)現(xiàn)的圖片預(yù)覽插件與用法示例【不上傳圖片】

    這篇文章主要介紹了JS實(shí)現(xiàn)的圖片預(yù)覽插件與用法,基于自定義插件uploadPreview.js實(shí)現(xiàn)圖片的預(yù)覽功能,不需要進(jìn)行圖片的上傳,非常簡(jiǎn)便實(shí)用,需要的朋友可以參考下
    2016-11-11
  • jQuery 的 ready()的純js替代方法

    jQuery 的 ready()的純js替代方法

    這篇文章主要介紹了jQuery 的 ready()的純js替代方法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • js 獲取元素下面所有l(wèi)i的兩種方法

    js 獲取元素下面所有l(wèi)i的兩種方法

    這篇文章主要介紹了js如何獲取元素下面所有的li,有哪些方法,需要的朋友可以參考下
    2014-04-04

最新評(píng)論

平顶山市| 阿瓦提县| 平利县| 谢通门县| 翼城县| 瑞金市| 百色市| 四会市| 泌阳县| 博客| 钟山县| 沧源| 滨州市| 南开区| 泉州市| 肥乡县| 新密市| 保德县| 永川市| 沙湾县| 株洲市| 都江堰市| 库尔勒市| 江陵县| 栖霞市| 凤凰县| 志丹县| 白山市| 安义县| 柳林县| 吉安县| 普宁市| 高州市| 龙州县| 永福县| 巴东县| 辽宁省| 运城市| 南和县| 堆龙德庆县| 上杭县|