質問編集履歴
2
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -36,4 +36,50 @@
|
|
36
36
|
書いているときから思っていたがcv::matをそのままjavascriptにもちこむのはやはりNGらしいです。
|
37
37
|
|
38
38
|
それではどうやってもちこんだらいいのでしょうか?
|
39
|
-
なにかJavascriptのblobかなにかに変換する方法を知りませんか?
|
39
|
+
なにかJavascriptのblobかなにかに変換する方法を知りませんか?
|
40
|
+
|
41
|
+
その後とりあえず持ちこむことは成功して
|
42
|
+
```C
|
43
|
+
|
44
|
+
#ifdef EMSCRIPTEN
|
45
|
+
#include <emscripten.h>
|
46
|
+
|
47
|
+
EM_JS(int, showImage, (cv::Mat img), {
|
48
|
+
|
49
|
+
function ImageToBase64(img, mime_type) {
|
50
|
+
// New Canvas
|
51
|
+
var canvas = document.createElement('canvas');
|
52
|
+
canvas.width = img.width;
|
53
|
+
canvas.height = img.height;
|
54
|
+
// Draw Image
|
55
|
+
var ctx = canvas.getContext('2d');
|
56
|
+
ctx.drawImage(img, 0, 0);
|
57
|
+
// To Base64
|
58
|
+
return canvas.toDataURL(mime_type);
|
59
|
+
}
|
60
|
+
|
61
|
+
var b64 = ImageToBase64(img, "image/jpeg");
|
62
|
+
window.open(b64);
|
63
|
+
return 0;
|
64
|
+
});
|
65
|
+
|
66
|
+
#endif
|
67
|
+
|
68
|
+
|
69
|
+
void ofApp::saveImage(cv::Mat img){
|
70
|
+
#ifdef EMSCRIPTEN
|
71
|
+
cout<<"EMSCRIPTEN"<<endl;
|
72
|
+
showImage(img);
|
73
|
+
#else
|
74
|
+
cout<<"LINUX"<<endl;
|
75
|
+
#endif
|
76
|
+
|
77
|
+
}
|
78
|
+
```
|
79
|
+
みたいな感じのですが今度はjavascriptでエラーを出してしまいます。
|
80
|
+
こんな感じです。
|
81
|
+
Uncaught TypeError: Failed to execute ‘drawImage’ on ‘CanvasRenderingContext2D’: The provided value is not of type ‘(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)’
|
82
|
+
at ImageToBase64 (:6931/OFNewPlayer.js:1)
|
83
|
+
at _showImage (:6931/OFNewPlayer.js:1)
|
84
|
+
|
85
|
+
これからするとやはり型が違うらしい。
|
1
追記
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
webassemblyでの画像
|
1
|
+
webassemblyでの画像をCからjavascriptにもちこむ方法について
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
webassemblyでCでプログラミングしています。
|
2
2
|
Cとjavascriptの変換で苦しんでおります
|
3
|
-
https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html
|
4
|
-
以下の関数を作りました。
|
3
|
+
[https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html](https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html)
|
4
|
+
を読んで以下の関数を作りました。
|
5
5
|
```C
|
6
6
|
void showImage(cv::Mat img){
|
7
7
|
#ifdef EMSCRIPTEN
|