js中使用opencv实现图片镜像翻转

    //opencv
    base64ToBlob(urlData, type) {
      let arr = urlData.split(',');
      let mime = arr[0].match(/:(.*?);/)[1] || type;
      // 去掉url的头,并转化为byte
      let bytes = window.atob(arr[1]);
      // 处理异常,将ascii码小于0的转换为大于0
      let ab = new ArrayBuffer(bytes.length);
      // 生成视图(直接针对内存):8位无符号整数,长度1个字节
      let ia = new Uint8Array(ab);
      for (let i = 0; i < bytes.length; i++) {
        ia[i] = bytes.charCodeAt(i);
      }
      return new Blob([ab], {
        type: mime
      });
    },
    opencv_test() {
      console.log('cv loaded.')
      console.log(cv);
      //图像镜像
      let imgElement = document.getElementById('imageSrc');
      imgElement.onload = () => {
        let mat = cv.imread(imgElement);
        let dst = new cv.Mat();
        let M = cv.matFromArray(2, 3, cv.CV_64FC1, [-1, 0, mat.cols - 1, 0, 1, 100]); //水平镜像变换矩阵
        let dsize = new cv.Size(mat.rows, mat.cols);
        cv.warpAffine(mat, dst, M, dsize, cv.INTER_LINEAR, cv.BORDER_CONSTANT, new cv.Scalar());
        cv.imshow('canvasOutput', dst);
        mat.delete();
        dst.delete();
        M.delete();


        var img = new Image();
        let outputCanvas = document.getElementById("canvasOutput");
        // outputCanvas.height = imgElement.height;
        img.src = outputCanvas.toDataURL('image/jpeg', 1.0);


        let file = img.src; // 把整个base64给file
        var type = "image/png"; // 定义图片类型(canvas转的图片一般都是png,也可以指定其他类型)
        let conversions = this.base64ToBlob(file, type);    // 调用base64转blob方法
        const objectURL = URL.createObjectURL(conversions); // blob转图片

        // let imgElement_done = document.getElementById('img_done');
        // imgElement_done.height = imgElement.height;
        this.side = objectURL;

        console.log('done.')
      }
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值