python - 在opencv4nodejs中如何在调用drawRectangle时设置Alpha

标签 python node.js opencv opencv4nodejs

我想要一个透明的PNG,除了在正方形上绘制。我可以使用Python来实现,但是我想使用Node来实现。
如何使用opencv4nodejs将Python代码转换为Node代码?

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(透明和绘制的正方形):
enter image description here
这是我的尝试,但输出并不完全相同
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(透明,但没有正方形):
enter image description here
如果我像这样稍微改变它,则输出不是透明的,但是正方形在那。
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(绿色正方形,但背景不透明):
enter image description here

最佳答案

我的解决方法:

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);

关于python - 在opencv4nodejs中如何在调用drawRectangle时设置Alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64085037/

相关文章:

python - 在 Python 中将类放在不同的文件中是否很昂贵?

python - 视频在 VLC gui 中播放,但在使用 python libvlc 时不播放

node.js - sails js 中的当前 session ID

opencv - 将openCV与openVINO一起使用的正确方法是什么?

python - YTick 在 Matplotlib 中重叠

python - 正则表达式 findall 在 python3 中产生奇怪的结果

javascript - 开 Jest : Testing for type or null

node.js - 如何确定我的 Kinesis 事件触发了哪个特定 Lambda 请求?

python - 如何在灰色图像上覆盖红色的热图 numpy 数组?

c++ - 在 C++ 中从 Mat 中提取 Y、Cb、Cr 并创建仅包含 Y 值的 Mat