2015-01-09 4 views
0

У меня возникли трудности с выяснением того, как нарисовать простой прямоугольник на изображении, используя emgu cv. Я использую VS 2010 Express. У меня есть пользовательский интерфейс, в котором я показываю живой видео-канал в окне изображения на панели, которую я создал с использованием .net-структуры. Теперь я хотел бы нарисовать четкий прямоугольник в середине этого фида, поскольку именно здесь сосредоточен мой код, и мне нужен пользователь, чтобы посмотреть, как выстроить камеру и объект интереса, чтобы он находился в прямоугольник. Это то, что я до сих пор в плане рисования прямоугольника на кадрах из камерыРисунок на emgu cv C++

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 в последовательность? Насколько я знаю, я правильно называю эту функцию в соответствии с документацией Emgu CV. Кто-нибудь может понять это?

ответ

1

Вам нужен TColor не скаляр:

От Docs C#

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

Чтобы найти параметры для TColor (как в ответ GPPK в) смотреть в EMGU.CV.Structure. Например, для значения градации серого вы можете передать

new Gray(0) 

для черного или

new Gray(255) 

белого. Выражения для цветов HLS, HLV и т. Д. Немного сложнее.