在 24 位网络摄像头源上叠加具有透明背景的文本

发布于 2024-11-28 19:25:18 字数 361 浏览 4 评论 0原文

我正在使用 DirectShow.Net 库来显示来自网络摄像头的源。我使用 ISampleGrabber 接口创建了捕获图,该接口使用包含指向视频帧缓冲区的指针的回调。我使用此指针创建一个 .net 位图和 Graphics 对象,并使用 Graphics.DrawString 方法覆盖一些红色文本。这需要一个 Brush 对象参数。当我绘制文本时,它会以多色显示,而不是红色。画笔是正确的,因为我使用的是预设的 Brushes.Red。目前我认为这是由于画笔以 32bpp 绘制但网络摄像头图像为 24bpp 造成的。我可以创建一个临时 24bpp 位图,在其上绘制文本,然后将其覆盖在视频帧上,但这不会为我提供具有透明背景的文本。

有什么想法吗? (简单的更好)

谢谢

I'm using the DirectShow.Net library to display a feed from a web cam. I've created the capture graph with an ISampleGrabber interface which uses a callback containing a pointer to the video frame buffer. I use this pointer to create a .net bitmap, and Graphics object which I use to overlay some red text with the method Graphics.DrawString. This takes a Brush object parameter. When I draw the text, it gets displayed in multicolors instead of red. The Brush is correct because I'm using the preset Brushes.Red. At the moment I reckon this is caused by the fact that the Brush is painting in 32bpp but the web cam image is 24bpp. I could create a temporary 24bpp bitmap, draw the text onto that, then overlay it on the video frame, but this wont give me text with a transparent background.

Any ideas? (easy ones are more preferable)

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

漫漫岁月 2024-12-05 19:25:18

我认为有一个解决方案:创建一个 32bpp 的新位图,使用此位图图形在其上绘制网络摄像头图像“Graphics.FromImage(ourNewBitmap).Draw(theWebcam24Image)”,并使用相同的Graphics 来绘制字符串,之后创建一个新的 24 位图并将生成的位图绘制到其中,然后将最后生成的图像附加到网络摄像头。

I think there is a solution: Create a new Bitmap with 32bpp, use this bitmap graphics to draw the webcam image on it "Graphics.FromImage(ourNewBitmap).Draw(theWebcam24Image)", and use the same graphics to draw the string, after that create a new 24 bitmap and draw our generated bitmap to it then append the last generated image to the webcam.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文