opencv.js 当中如何如何将结果输出到<img>标签 cv.Mat转base64

当时的需求是将OpenCV.js操作以后的Mat数据类型转换为base64,然后将结果放到<img>标签

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>toGray</title>
    <!--两张图片格式为左浮动,处在一行-->
    <style type="text/css">
        .InputOutput {
            float: left;
            margin: 10px;
        }
    </style>
</head>
<body>
<!--若 opencv.js 文件加载成功,则会显示“opencv.js is ready.”-->
<p id="status">opencv.js is loading...</p>

<!--图片读入区域-->
<div class="InputOutput">
    <div class="caption">srcImg
        <input type="file" id="inputFile" name="file"/>
    </div>
    <img id="srcImg" alt="No Image"/>
</div>

<!--结果展示区域-->
<div class="InputOutput">
    <div class="caption">dstImg</div>
    <canvas id="dstImg"></canvas>
</div>

<!--读入图片,并在 canvas 中显示-->
<script type="text/javascript">
    // <!--读入图片-->
    let imgElement = document.getElementById("srcImg");
    let fileElement = document.getElementById("inputFile");
    fileElement.addEventListener("change",
        (e) => {
            imgElement.src = URL.createObjectURL(e.target.files[0]);
        }, false);

    <!-- 显示 -->
    imgElement.onload = function () {
        let src = cv.imread(imgElement);
        let x = 20
        let y = 20
        let w = 40
        let h = 40
        let point1 = new cv.Point(x, y);
        let point2 = new cv.Point(x + w, y + h);
        cv.rectangle(src, point1, point2, [255, 0, 0, 255], 6);
        cv.imshow('dstImg', src);
        let outputCanvas = document.createElement("canvas");
        cv.imshow(outputCanvas, src)
        let b64image = outputCanvas.toDataURL()
        console.log(b64image)
        document.getElementById("srcImg").src = b64image
        src.delete();
    };

    <!--成功加载 opencv.js 后,status 标签会显示“opencv.js is ready.”-->
    function onOpenCvReady() {
        document.getElementById("status").innerHTML = "opencv.js is ready.";
    }
</script>
<script async src="https://cdn.bootcdn.net/ajax/libs/Base64/1.1.0/base64.js"></script>
<script async src="https://unpkg.com/opencv.js@1.2.1/opencv.js" onload="onOpenCvReady();"
        type="text/javascript"></script>
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以按照以下步骤来使用MyCaffe和OpenCV进行预测: 1. 安装MyCaffe和OpenCV 可以在MyCaffe和OpenCV的官方网站上下载并安装对应的软件包。 2. 加载模型 在代码中使用MyCaffe中的CaffeModel类来加载train.caffemodel和prototxt文件,示例代码如下: ``` using MyCaffe; using MyCaffe.basecode; using MyCaffe.common; using MyCaffe.param.ssd; using MyCaffe.param.ssd_detect; ... CaffeModel caffeModel = new CaffeModel("train.prototxt", "train.caffemodel", Phase.TEST); ... ``` 3. 加载数据 使用OpenCV中的imread函数加载需要预测的图像,示例代码如下: ``` Mat img = Cv2.ImRead("test.jpg"); ... ``` 4. 进行预测 将图像数据换为MyCaffe中的Blob对象,并使用CaffeModel类的Predict方法进行预测,示例代码如下: ``` float[] data = new float[1 * 3 * 227 * 227]; // 根据输入数据的形状创建数组 Mat imgResized = new Mat(); Cv2.Resize(img, imgResized, new Size(227, 227)); // 调整图像大小 Cv2.CvtColor(imgResized, imgResized, ColorConversionCodes.BGR2RGB); // 将图像从BGR格式换为RGB格式 Marshal.Copy(imgResized.Data, data, 0, data.Length); // 将图像数据拷贝到数组中 Blob<float> blob = new Blob<float>(1, 3, 227, 227, data); // 创建Blob对象并将数据加载到Blob中 MyCaffe.CaffeModel.Data data = new MyCaffe.CaffeModel.Data(); data.EnableLabelMapping = false; data.EnableLabelSelection = false; data.Blobs.Add(blob); List<float> result = caffeModel.Predict(data); ... ``` 在进行预测时,还可以根据需要设置MyCaffe中的其他参数,例如输入数据的形状、输出数据的形状等。具体使用方法可以参考MyCaffe的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值