首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用OpenCV和Javascript显示画布上像素数组中的图像

用OpenCV和Javascript显示画布上像素数组中的图像
EN

Stack Overflow用户
提问于 2020-05-20 13:53:18
回答 1查看 1.2K关注 0票数 0

我正在接收来自MQTT订阅的像素值数组(var image)中的一些图像,我希望在读取这些图像时将这些图像绘制在我的html网站上的画布上。我使用Javascript获取图像,使用OpenCV.js读取图像中的像素值数组并在画布上绘制,但我只得到一个黑色方块。守则如下:

代码语言:javascript
运行
复制
function onMessageArrived(message) {
    var data = JSON.parse(message.payloadString);
    var image = data.image; //300x400x3
    var metadata = data.metadata;
    document.getElementById("metadata").innerHTML += '<span>Metadata: ' + metadata + '</span><br/>';

    var width = image.length;
    var height = image[0].length;
    var c = document.getElementById("images_canvas");

    let mat = cv.matFromArray(width, height, cv.CV_8UC3, image);
    cv.cvtColor(mat, mat, cv.COLOR_BGR2BGRA);
    //let dsize = new cv.Size(400, 400);
    //cv.resize(mat, mat, dsize, 0, 0, cv.INTER_AREA);
    cv.imshow("images_canvas", mat);
    mat.delete();

如您所见,数组的形状为300x400x3 (三个通道),我正在尝试将其转换为画布所需的4个通道(RGBA),但我没有运气。是因为数组的形状吗?

我怎么才能解决这个问题?

干杯

EN

回答 1

Stack Overflow用户

发布于 2020-07-22 05:11:01

你的阅读效果如何?那可能是你的问题。是JSON中的Base64吗?

代码语言:javascript
运行
复制
let src = cv.imread('canvasInput');
let dst = new cv.Mat();
cv.cvtColor(src, dst, cv.COLOR_BGR2RGBA, 0);
cv.imshow('canvasOutput', dst);
src.delete(); dst.delete();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61914911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档