В OpenCV, кажется, действие двойного щелчка также вызывает событие с одним щелчком мыши. Вот пример кода. Функция single_click() всегда вызывается перед double_click().Как различать щелчок и двойной щелчок в opencv
Возможно ли запустить double_click() без запуска single_click()?
Спасибо!
void double_click() {
std::cout << "Double click.\n";
}
void thisMouseCallBack(int event, int x, int y, int flags, void *param) {
if (event == cv::EVENT_LBUTTONDOWN) {
single_click();
}
if (event == cv::EVENT_LBUTTONDBLCLK) {
double_click();
}
}
int main() {
cv::Mat testImg(100, 500, CV_8UC3);
cv::namedWindow("thisWindow");
cv::setMouseCallback("thisWindow", thisMouseCallBack, NULL);
cv::imshow("thisWindow", testImg);
cv::waitKey(-1);
return 0;
}
Двойной щелчок должен * всегда * включать один клик; в конце концов, невозможно щелкнуть дважды, не щелкая один раз. Альтернативой является медленное реагирование на однократное нажатие, потому что ваша программа должна ждать после каждого щелчка, если за ним последует другой щелчок. Это заставит ваших клиентов думать, что ваша программа вялая. Кроме того, клики, как правило, не регистрируются до тех пор, пока не будет отпущена кнопка мыши, поэтому вызов вашей функции после получения уведомления о снижении мыши заставит вашу программу немного нервничать. Обратите особое внимание на другие программы, которые вы используете каждый день. –
Получил это. Благодаря! – Vince