【发布时间】:2021-06-25 11:09:45
【问题描述】:
我有以下带有 opencv 的 C++ 代码。它是显示图像的基本代码。 我正在尝试使用 emscripten 编译它,但似乎 emscripten 无法加载 opencv 的某些功能。例如 cv::Mat 就可以了。
build_js 的测试一切顺利。 你知道我做错了什么吗?
代码:
#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;
}
错误信息:
/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 命令:
emcmake cmake -DOpenCV_DIR=/home/vasek/tools/opencv/build_js ..
编辑: 除了 cv::Mat 之外的任何功能都不起作用。
【问题讨论】:
-
这是命名空间的情况吗?
cv::imread(... -
@Jeffrey 您好,感谢您的回答。不幸的是,忘记了 cv:: 前缀只是以前实验的错字。
-
我建议关闭它,慢慢来,并提出一个干净、准确的问题。经常通过干净地陈述它的动作会暴露错误。
-
@Tsyvarev 好吧,所有这四个函数都来自 highgui 模块,但是如果模块可用,
opencv2/opencv.hpp会自动包含其标题... -
@DanMašek:好的,所以问题实际上是 emscripten 特有的。我重新打开了这个问题。随时提供答案。
标签: c++ opencv cmake emscripten