我很难搞清楚如何使用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文档正确调用了该函数。有没有人对此问题有任何见解?
答案 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等颜色的表达式稍微复杂一些。