首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简历:imread和其他人不和emscripten合作?

简历:imread和其他人不和emscripten合作?
EN

Stack Overflow用户
提问于 2021-03-29 12:07:41
回答 1查看 400关注 0票数 0

我在opencv中使用了C++代码。这是显示图像的基本代码。我试着用emscripten来编译它,但是看起来emscripten不能加载opencv的一些功能。例如,cv::Mat是可以的。

build_js测试顺利。你知道我做错了什么吗?

代码:

代码语言:javascript
复制
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <emscripten/emscripten.h>

int main(int argc, char** argv )
{
    if ( argc != 2 )
    {
        printf("usage: DisplayImage.out <Image_Path>\n");
        return -1;
    }
    cv::Mat image;
    image = cv::imread( argv[1], 1 );
    if ( !image.data )
    {
            printf("No image data \n");
            return -1;
    }
    cv::namedWindow("Display Image");
    cv::imshow("Display Image", image);
    cv::waitKey(0);
    return 0;
}

错误消息:

代码语言:javascript
复制
/home/vasek/project_test/opencv/opencvgcccmake_emscript/DisplayImage.cpp:15:13: error: use of undeclared identifier 'imread'
    image = cv::imread( argv[1], 1 );
            ^
/home/vasek/project_test/opencv/opencvgcccmake_emscript/DisplayImage.cpp:21:9: error: no member named 'namedWindow' in namespace 'cv'
    cv::namedWindow("Display Image");
    ~~~~^
/home/vasek/project_test/opencv/opencvgcccmake_emscript/DisplayImage.cpp:22:9: error: no member named 'imshow' in namespace 'cv'
    cv::imshow("Display Image", image);
    ~~~~^
/home/vasek/project_test/opencv/opencvgcccmake_emscript/DisplayImage.cpp:23:9: error: no member named 'waitKey' in namespace 'cv'
    cv::waitKey(0);
    ~~~~^
4 errors generated.

cmake命令:

代码语言:javascript
复制
emcmake cmake -DOpenCV_DIR=/home/vasek/tools/opencv/build_js ..

编辑:,所有函数都不能工作,cv::Mat

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-29 13:51:15

这并不是包含的问题,因为如果opencv2/opencv.hpp模块是可用的,那么会自动地将所有模块的顶级头引入。显而易见的结论是,这些模块在您的OpenCV构建中是不可用的,现在的问题是为什么会这样呢?

事实证明,有些OpenCV功能不适合网络,而opencv.js是在没有它的情况下构建的。

cv::namedWindowcv::imshowcv::waitKey函数属于highgui模块。该模块的实现依赖于平台(在构建时,您必须选择将要使用的后端,无论是WinAPI、WinRT、Gtk、Qt、cocoa等等)。此外,由于浏览器中的JavaScript代码运行在沙箱中,所以无论如何都不可能访问API。

函数cv::imread属于imgcodecs模块,还有一个在本例中没有构建的模块。我不知道造成这种情况的确切原因(可能是因为其中一些直接访问文件系统),https://github.com/opencv/opencv/issues/17535问题表明第三方编解码器尚未集成到opencv.js中,绑定生成器中缺少一些机制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66853917

复制
相关文章

相似问题

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