使用emgu cv C ++绘制图像

时间:2015-01-09 18:12:39

标签: emgucv

我很难搞清楚如何使用emgu cv在图像上绘制一个简单的矩形。我正在使用VS 2010 Express。我有一个用户界面,我在其中使用.net框架创建的面板上的图片框中显示实时视频。现在我想在这个feed的中间绘制一个清晰的矩形,因为这是我的代码所关注的,我需要用户看看如何排列相机和感兴趣的对象,以便它在长方形。这就是我到目前为止在相机的帧上绘制矩形

cv::Scalar red(0,0,255);
System::Drawing::Rectangle Rect = System::Drawing::Rectangle(120, 160, 150, 150);
frameColorDisplay->Draw(Rect, red, 2);

这是我收到的错误

BAOTFISInterface.cpp(1067): error C2664: 'void     Emgu::CV::Image<TColor,TDepth>::Draw(Emgu::CV::Seq<T> ^,Emgu::CV::Structure::Bgr,int)' : cannot convert parameter 1 from 'System::Drawing::Rectangle' to 'Emgu::CV::Seq<T> ^'
5>          with
5>          [
5>              TColor=Emgu::CV::Structure::Bgr,
5>              TDepth=unsigned char,
5>              T=System::Drawing::Point
5>          ]
5>          and
5>          [
5>              T=System::Drawing::Point
5>          ]
5>          No user-defined-conversion operator available, or
5>          No user-defined-conversion operator available that can perform this conversion, or    

the operator cannot be called

我不确定为什么要尝试从Rectangle转换为Sequence?据我所知,我根据Emgu CV文档正确调用了该函数。有没有人对此问题有任何见解?

2 个答案:

答案 0 :(得分:1)

你需要TColor而不是标量:

来自文档     C#

public virtual void Draw(
    Rectangle rect,
    TColor color,
    int thickness
)

答案 1 :(得分:0)

要查找TColor的选项(如GPPK的答案),请查看EMGU.CV.Structure。例如,对于灰度值,您可以传递

new Gray(0)

表示黑色或

new Gray(255)

白色。 HLS,HLV等颜色的表达式稍微复杂一些。