wxWidgets + сбой прямоугольника OpenCV OnButtonClick () - PullRequest
1 голос
/ 14 февраля 2012

Я пытаюсь нарисовать простой прямоугольник в мате OpenCV при нажатии кнопки wx, но происходит сбой программы при вызове функции прямоугольника.

void wxFrameFrame::OnButton1Click(wxCommandEvent& event) 
{
    Mat A(480,640,CV_32F);
    Point p1(10, 10);
    Point p2(20,200);
    rectangle(A, p1, p2, Scalar(255,0,255,0), 0);

    // Show what you got
    namedWindow( "src", CV_WINDOW_AUTOSIZE );
    imshow( "src", A );
}

Я пробовал этот код в консольном приложении и работает нормально. Я также попытался поместить этот код в конструктор wxFrame и тоже отлично работает. Если я прокомментирую функцию прямоугольника, все в порядке (показывает черное изображение).

У меня есть эта проблема в течение двух дней, моя первоначальная проблема была в том, что я не мог деформировать изображение, потому что оно тоже зависало.

Я могу нарисовать изображение с помощью

A.at<uchar>(0,0)=255 

и я знаю, что могу сделать цикл для рисования прямоугольника.

Моя среда - 64-битная Windows 7, OpenCv 2.3.1, wxWidgets 2.8.12 и CodeBlocks 10.05

Любая помощь и идея приветствуются, Спасибо.

--- редактировать ----

Я попробовал функции rectangle, warpAffine и putText, и три из них потерпели крах при вызове из OnButtonClick. Функции линии и круга работают нормально.

1 Ответ

0 голосов
/ 14 февраля 2012

Похоже, проблема в процедуре прямоугольника. Это что-то в OpenCV? или метод wxFrameFrame?

Первое, что я бы попробовал, это посмотреть, есть ли у прямоугольника проблема с передачей автоматики, которая выходит из области видимости, как только он вызывается.

Попробуйте это

void wxFrameFrame::OnButton1Click(wxCommandEvent& event) 
{
    static Mat A(480,640,CV_32F);
    static Point p1(10, 10);
    static Point p2(20,200);
    static Scaler s(255,0,255,0);
    static int n = 0;
    rectangle(A, p1, p2, s, n);

    ...
...