网站漏洞以及找后台入口 等功能.,有哪些tp5做的网站,网站的三大因素,wp网站模板利用图像特征的keypoints和descriptor来实现图像的匹配与定位。图像匹配算法主要有暴力匹配和FLANN匹配#xff0c;而图像定位是通过图像匹配结果来反向查询它们在目标图片中的具体坐标位置。
以QQ登录界面为例#xff0c;将整个QQ登录界面保存为QQ.png文件#xff0c;QQ登…
利用图像特征的keypoints和descriptor来实现图像的匹配与定位。图像匹配算法主要有暴力匹配和FLANN匹配而图像定位是通过图像匹配结果来反向查询它们在目标图片中的具体坐标位置。
以QQ登录界面为例将整个QQ登录界面保存为QQ.png文件QQ登录界面是在计算机的1920×1080分辨率下截图保存的再把计算机的分辨率改为1280×1024将QQ登录界面的用户头像保存并对图像进行旋转处理最后保存为portrait.png文件
两张图片文件的像素分辨率和图像位置都发生了变化如果要通过portrait.png去匹配定位它在QQ.png所在的坐标位置自动化工具PyAutoGUI肯定是无法实现的。若想解决这种复杂的图像识别问题只能使用计算机视觉技术。在OpenCV里面QQ.png称为目标图像portrait.png称为训练图像
实现过程
1分别对两张图片的图像进行特征检测图像特征检测算法有SURF、SIFT和ORB两张图片必须使用同一种特征检测算法。 2根据两张图片的特征描述符即变量descriptor进行匹配匹配算法有暴力匹配和FLANN匹配不同的匹配算法所产生的匹配结果存在一定的差异。 3对两张图片的匹配结果进行数据清洗去除一些错误匹配。错误匹配是由于在图片不同区域内出现多处相似的特征而导致的。 4在匹配结果里抽取中位数利用中位数来反向查询它在目标图片所对应像素点的坐标位置这个坐标位置也是自动化开发中使用的图片定位坐标。 线面是让chatgpt把上面图片里的代码修改为了c。没仔细看是否正确。 #include opencv2/opencv.hpp
#include vectorint main() {// Load imagescv::Mat img1 cv::imread(QQ.png);cv::Mat img2 cv::imread(portrait.png);// Use SIFT algorithm to get keypoints and descriptorscv::Ptrcv::SIFT sift cv::SIFT::create();std::vectorcv::KeyPoint kp1, kp2;cv::Mat des1, des2;sift-detectAndCompute(img1, cv::noArray(), kp1, des1);sift-detectAndCompute(img2, cv::noArray(), kp2, des2);// Define FLANN matchercv::Ptrcv::FlannBasedMatcher flann cv::FlannBasedMatcher::create();std::vectorstd::vectorcv::DMatch matches;flann-knnMatch(des1, des2, matches, 2);// Filter good matchesstd::vectorcv::DMatch goodMatches;for (size_t i 0; i matches.size(); i) {if (matches[i][0].distance 0.5 * matches[i][1].distance) {goodMatches.push_back(matches[i][0]);}}// Get coordinates of a pointsize_t index goodMatches.size() / 2;float x kp1[goodMatches[index].queryIdx].pt.x;float y kp1[goodMatches[index].queryIdx].pt.y;// Draw rectangle on img1 at (x, y) and display imagecv::rectangle(img1, cv::Point2f(x, y), cv::Point2f(x 5, y 5), cv::Scalar(0, 255, 0), 2);cv::imshow(QQ, img1);cv::waitKey(0);cv::destroyAllWindows();return 0;
}