使用C++代码直接在IMFMediaBuffer上画一个矩形
Posted
技术标签:
【中文标题】使用C++代码直接在IMFMediaBuffer上画一个矩形【英文标题】:Directly draw a rectangle on IMFMediaBuffer using C++ code 【发布时间】:2012-10-17 05:49:08 【问题描述】:目前,我尝试从Media Foundation Transform 修改样本。我倾向于实现以下目标
在 C++ 代码中执行人脸检测。 将检测到的人脸坐标传回 C# 代码。 让 C# 在屏幕上绘制检测到的人脸矩形。我完成了第 1 步。但是,我被第 2 步所吸引。我面临着类似的问题:How to get feedback from MediaCapture API in Windows 8。我找不到方法,让我的 C++ MFT 代码与 C# 代码交谈。
我正在考虑另一种解决方法。 使用 C++ 代码直接在IMFMediaBuffer
上绘制一个矩形。
但是,我没有看到 Microsoft 提供此类 API 来执行此操作。如果没有,我可以使用的正确方法是什么?
【问题讨论】:
你能在那个缓冲区中设置像素颜色吗? 是的。我可以在缓冲区中设置像素值。但是,通过将像素 1 填充 1 来绘制形状(矩形、圆形、...)会很繁琐。 也许并不乏味,但如果您以前从未这样做过,则需要一些思考。 【参考方案1】:如果您可以设置像素颜色,那么用循环绘制一个矩形应该相当简单。
for (int y = top; y <= bottom; y++)
for (int x = left; x <= right; x++)
pixels[y * width + x] = color; // pseudocode
仅绘制矩形的边框只是 4 个单独的循环。
画圆的最简单方法:
for (int y = -r; y <= r; y++)
for (int x = -r; x <= r; x++)
if (x * x + y * y < r * r)
pixels[(center.y + y) * width + center.x + x] = color; // pseudocode
【讨论】:
以上是关于使用C++代码直接在IMFMediaBuffer上画一个矩形的主要内容,如果未能解决你的问题,请参考以下文章
使用android studio查看c或者c++代码是,无法在某个类或者方法上直接跳转到声明或者定义的地方.