Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

electron环境 报错。代码如下 #5

Open
liuhao16 opened this issue Feb 26, 2024 · 10 comments
Open

electron环境 报错。代码如下 #5

liuhao16 opened this issue Feb 26, 2024 · 10 comments

Comments

@liuhao16
Copy link

Error: Failed to execute 'putImageData' on 'CanvasRenderingContext2D': parameter 1 is not of type 'ImageData'.

https://gist.github.com/jiumengs/24facac2eb56eac894ab2683b2ed72cd

@xushengfeng
Copy link
Owner

如果不在preload引用,而是直接在render里require,则正常
如果你需要preload来进行安全隔离的话,可能用不了,如果不需要,直接在render里引用
ps:dic参数不是路径,而是具体内容

@fanybook
Copy link

fanybook commented Dec 9, 2024

@xushengfeng 是 electron 使用时,需要允许渲染进程,执行 node 么

我看 4.2.0版本支持node,是不是不用了

@xushengfeng
Copy link
Owner

@fanybook 取决你要使用那个onnxruntime,如果用node那就允许node。
node支持是为了纯node环境才添加的,这个库一开始就是为了Electron开发,所以一直支持的。
onnxruntime-node在本地运行比onnxruntime-web快一些,除非用webgpu后端

@fanybook
Copy link

fanybook commented Dec 10, 2024

@xushengfeng 我想在 electron 环境下,用主进程(node) 使用,但有些问题

  1. npm 安装 node 版本的 canvas 时,编译固化了 canvas.node 的 NODE_MODULE_VERSION
  2. canvas.node 的 NODE_MODULE_VERSION 和 electron 自带的 node 环境的 NODE_MODULE_VERSION 对不上,就用不了
  3. 是需要用 npx electron-rebuild 重新编译 canvas 么

@xushengfeng
Copy link
Owner

@fanybook 应该是要的

@fanybook
Copy link

fanybook commented Dec 10, 2024

@fanybook 应该是要的

@xushengfeng 不明白 ocr 识别时,为什么非要用 canvas 转成 ImageData,是因为先做的 web 版,所以移植的么,如果是纯 node,不需要 canvas 吧

好奇你的项目是怎么用的,我看你也是用的 electron,在跨平台时,因为都要去重编 canvas 有点麻烦,我猜你用的 web 上的 canvas?

还有一点好奇:
在使用了 https://github.com/gutenye/ocr 包内的 .onnx 模型后,为什么解析结果不同,两者之间是有差距了,但是彼此彼此

@xushengfeng
Copy link
Owner

@fanybook 确实如你说的那样,我是先在Electron渲染进程上开发的。ocr 需要一定的图片处理,流行的sharp.js也要编译所以我干脆直接用canvas。对于输入,一开始是使用ImageData,后来也兼容了url和HTMLimageelement,当然,对于纯node环境,只能使用imagedata了。Electron渲染进程示例就是readme那个示例。

我看他的模型名称版本都是v4,如果有差别,可能是转换为onnx时选择的版本不同。

@fanybook
Copy link

fanybook commented Dec 10, 2024

不是模型问题,我用你的库引他的模型,输出结果一样,应该调模型时的参数不同

他用的 sharp.js,至少兼容 electron,我想 rebuild 一下 canvas,奈何网不好,brew 装头文件失败,想想如果 win mac linux 都整一遍很麻烦

@xushengfeng
Copy link
Owner

试试设置 detShape 的参数为[640,640]

对于canvas,你可以看看 https://cn.bing.com/search?q=Node.js+Canvas%E5%AE%89%E8%A3%85%E6%85%A2

@fanybook
Copy link

fanybook commented Dec 11, 2024

不知道 node-canvas v3.0 是不是就改善了,因为 3.0 迁移到了 napi,比之前依赖 abi 版本兼容性要好很多

我看 node-canvas 的 issues 里,也是 electron 开发者提的比较多

经测试:node-canvas v3.0 改用 napi 后,可以直接在 electron 里使用了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants