目标:通过openCv加载图像,通过捕获用户在图像上的鼠标点击位置获取像素点坐标,并对该点进行可视化标记。
代码如下:
std::vector<cv::Point> points;
cv::Mat image;
void onMouse(int action, int x, int y, int, void*) {
if (action == cv::EVENT_LBUTTONDOWN) {
points.push_back(cv::Point{ x, y });
}
}
int main(int argc, char** argv) {
const auto mainWindow = "Main Window";
cv::namedWindow(mainWindow);
image = cv::imread("F:\\heart_register\\surface_init_06\\260.bmp");
cv::setMouseCallback(mainWindow, onMouse);
cv::imshow(mainWindow, image);
while (true) {
for (const auto& point : points) {
cv::circle(image, point, 5, cv::Scalar{ 0, 200, 0 }, -1);
}
cv::imshow(mainWindow, image);
cv::waitKey(25);
}
// cv::imshow(mainWindow, image);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}