Opencv and drawing roi on mat



  • Hi...

    I try to draw a ROI (region of interest) on Mat with QMouseEvent and display it on QLabel.

    Got slot like this :
    @
    void mDisplay::draw_ROI(int& r1,int& r2,QPoint& position, cv::Mat& matsROI)
    {

    cv::Mat matfROI;
    matsROI.copyTo(matfROI);
    
    cv::Rect rectang = cv::Rect(r1,r2,position.x()-r1,position.y()-r2);
    cv::rectangle(matfROI,rectang,cv::Scalar(0,255,0),1,8,0);
    
    this->ShowMat(matfROI);
    
    matfROI.release();
    

    }

    @

    When mouseMoveEvent is triggered it emits signal with position of left button click (int& r1,int& r2) which works perfect,actual cursor position (QPoint& position) and matrix with picture (cv::Mat& matsRoi).All of that works great.
    The only problem is,that when I move cursor over QLabel, rectangle is drawn on same image which results in many rectangles.
    Shouldn't matfROI be copied again on every mouse move?

    I also declared int test = 0 just under declaration of matsROI and added to this slot
    @
    int c = test;

    c+=5;

    qDebug()<<c<<endl;
    @

    and it always shows 5 as expected,so why mat is not copied on each mouse move?

    PS. Tried to place this piece of code directly in mouseMoveEvent,but got same issue.

    Thanks in advance!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.