我正在使用 c# 和 OpenCV。我有一个位图,我想使用 OpenCV 提供的 VideoWriter 将其写入视频帧。我已经用 Python 完成了这个,所以知道它会起作用。我只需要从 Bitmap 到 Mat 的转换步骤。
我的(部分)代码看起来大致是这样的......
VideoWriter video = new VideoWriter(filename, fps, frameSize, false);
Bitmap image = SomethingReturningABitmap();
// NEED CONVERT FROM Bitmap to Mat
Mat frame = new Mat();
video.Write(frame);
Run Code Online (Sandbox Code Playgroud) 我需要对 2 张大小不同的图像进行 alpha 混合。我已经设法通过将它们调整为相同的大小来合成它们,所以我得到了部分逻辑:
import cv2 as cv
def combine_two_color_images_composited(foreground_image, background_image):
foreground = cv.resize(foreground_image, (400,400), interpolation=cv.INTER_CUBIC).copy()
background = cv.resize(background_image, (400,400), interpolation=cv.INTER_CUBIC).copy()
alpha =0.5
# do composite of foreground onto the background
cv.addWeighted(foreground, alpha, background, 1 - alpha, 0, background)
cv.imshow('composited image', background)
cv.waitKey(10000)
Run Code Online (Sandbox Code Playgroud)
我想知道是否需要制作一个与较大图像大小相同的蒙版,然后将其用于我的第一张图像。如果是这样,我还不知道如何在 CV2 中进行掩蔽……这只是我项目的一小部分,因此我无法花费大量时间研究掩蔽的工作原理。
我已经搜索了所有内容,但我找到的代码执行诸如将图像“添加”在一起(并排)之类的操作。