我想让用户能够在图像窗口中绘制矩形并定义区域。问题是图像必须严格为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;
}
提前致谢!!