首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在opencv4nodejs中如何在调用drawRectangle时设置alpha

在opencv4nodejs中如何在调用drawRectangle时设置alpha
EN

Stack Overflow用户
提问于 2020-09-27 13:11:09
回答 1查看 179关注 0票数 0

我想要一个PNG是透明的,除了一个绘制的方块。我可以用Python来实现这一点,但我想用Node来实现。

如何使用opencv4nodejs将此Python代码转换为Node代码?

代码语言:javascript
复制
import cv2
import numpy as np

blank = np.zeros((400, 500, 4))
cv2.rectangle(blank, (10, 10), (50, 50), (0,255,0,255) )
cv2.imwrite("blankpy.png", blank)

blankpy.png (透明且绘制为正方形):

下面是我的尝试,但输出结果并不完全相同

代码语言:javascript
复制
const cv = require('./lib/opencv4nodejs');

const blank = new cv.Mat(400, 500, cv.CV_8UC4);
blank.drawRectangle(new cv.Rect(10, 10, 50, 50), new cv.Vec4(0, 255, 0, 255), 2, cv.LINE_8);
cv.imwrite('blankjs.png', blank);

blankjs.png (透明,但不是正方形):

如果我像这样稍微修改一下,输出是不透明的,但是正方形就在那里。

代码语言:javascript
复制
const cv = require('./lib/opencv4nodejs');

const emptyMat = new cv.Mat(400, 500, cv.CV_8UC3);
emptyMat.drawRectangle(new cv.Rect(10, 10, 50, 50), new cv.Vec3(0, 255, 0), 2, cv.LINE_8);
cv.imwrite('blankjs.png', emptyMat);

blankjs.png (绿色正方形,但背景不透明):

EN

回答 1

Stack Overflow用户

发布于 2020-10-01 13:03:50

我的解决方法:

代码语言:javascript
复制
const cv = require('./lib/opencv4nodejs');

const emptyMat = new cv.Mat(400, 500, cv.CV_8UC4, [0,0,0,255]);
emptyMat.drawRectangle(new cv.Rect(10, 10, 50, 50), new cv.Vec3(255, 0, 255), 2);
const invertedEmptyMat = emptyMat.bitwiseNot();

cv.imwrite('blankjs.png', invertedEmptyMat);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64085037

复制
相关文章

相似问题

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