namedWindow()方法中的WINDOW_AUTOSIZE

时间:2017-06-23 12:04:27

标签: opencv visual-c++

我想让用户能够在图像窗口中绘制矩形并定义区域。问题是图像必须严格为A4尺寸,这就是我在调用namedWindow时使用WINDOW_AUTOSIZE模式的原因。但这似乎弄乱了用于制作矩形的点P1和P2。这种方式在WINDOW_NORMAL模式下不会发生。

这是代码:     using namespace std;     使用namespace cv;

cv::Point P1;
cv::Point P2;
Mat temp;

void CallBack(int event, int x, int y, int flags, void* userdata) {
    if(event == CV_EVENT_LBUTTONDOWN) {
        P1.x = x;
        P1.y = y;
    }
    else if(event == CV_EVENT_LBUTTONUP) {
        P2.x = x;
        P2.y = y;
        rectangle(temp, P1, P2, Scalar(0, 0, 0), 1);
    }
}

int main() {
    temp = imread("template.png");
    namedWindow("Templating", CV_WINDOW_AUTOSIZE);
    imshow("Templating", temp);
    cv::setMouseCallback("Templating", CallBack, NULL);
    waitKey(0);
    imshow("Templating", temp);
    waitKey(0);
    return 0;
}

提前致谢!!

0 个答案:

没有答案