当前位置: 首页 > news >正文

万网网站建设万网网站建设泉州网站建设培训

万网网站建设万网网站建设,泉州网站建设培训,网站如何提高排名,html网站结构解决方案角点检测:cornerHarris() cornerHarris()函数是OpenCV中用于执行Harris角点检测的函数。Harris角点检测是一种用于检测图像中角点的技术,通常用于特征检测和图像匹配。以下是cornerHarris()函数的用法: void cornerHarris(InputArray src, …

角点检测:cornerHarris()

cornerHarris()函数是OpenCV中用于执行Harris角点检测的函数。Harris角点检测是一种用于检测图像中角点的技术,通常用于特征检测和图像匹配。以下是cornerHarris()函数的用法:

void cornerHarris(InputArray src,            // 输入图像(单通道、8位或32位浮点类型)OutputArray dst,           // 输出角点响应图像,通常是32位浮点类型int blockSize,             // 角点检测中的邻域大小(建议为2-3)int ksize,                 // Sobel算子的孔径大小(建议为3)double k,                  // Harris检测方程中的自由参数,一般取0.04 - 0.06int borderType = BORDER_DEFAULT
);

以下是参数的解释:

  • src:输入图像,通常是单通道的8位或32位浮点型图像。

  • dst:输出角点响应图像,通常是一个32位浮点型图像,用于存储检测到的角点的响应值。

  • blockSize:指定角点检测时使用的邻域大小。它通常是2x2或3x3的小邻域。

  • ksize:Sobel算子的孔径大小,用于计算图像梯度。

  • k:Harris检测方程中的自由参数,一般取0.04到0.06之间的值。它决定了角点响应的敏感性。

  • borderType:边界类型,通常设置为BORDER_DEFAULT

cornerHarris()函数执行Harris角点检测,并将检测结果存储在dst中。通常,你可以检查dst中的响应值来确定图像中的角点位置。较高的响应值通常表示角点。

以下是一个简单的示例,演示如何使用cornerHarris()函数执行Harris角点检测:

#include "opencv2/opencv.hpp"using namespace cv;int main()
{Mat srcImage = imread("1.jpg", IMREAD_GRAYSCALE);if (srcImage.empty()){std::cout << "Could not open or find the image!" << std::endl;return -1;}Mat cornerResponse;cornerHarris(srcImage, cornerResponse, 2, 3, 0.04);Mat cornerMap = Mat::zeros(cornerResponse.size(), CV_8UC1);double maxResponse;minMaxLoc(cornerResponse, 0, &maxResponse);for (int i = 0; i < cornerResponse.rows; i++){for (int j = 0; j < cornerResponse.cols; j++){if (cornerResponse.at<float>(i, j) > 0.01 * maxResponse){circle(cornerMap, Point(j, i), 5, Scalar(255), 2);}}}imshow("Corner Map", cornerMap);waitKey(0);return 0;
}

在此示例中,我们加载了一个灰度图像,然后使用cornerHarris()函数进行角点检测。最后,我们在角点上绘制圆圈,将检测到的角点可视化。

在这里插入图片描述

使用本地相机进行角点检测

#include <opencv2/opencv.hpp>using namespace cv;// 滑块回调函数
void onTrackbar(int, void*);int main()
{VideoCapture cap(0);if (!cap.isOpened()){std::cerr << "Error: Could not open the camera." << std::endl;return -1;}Mat frame;Mat grayFrame;namedWindow("Harris Corner Detection", WINDOW_AUTOSIZE);int blockSize = 2;int ksize = 3;int k = 0.04;int thresholdValue = 100;int radius = 5;createTrackbar("Block Size", "Harris Corner Detection", &blockSize, 10, onTrackbar);createTrackbar("K-Size", "Harris Corner Detection", &ksize, 10, onTrackbar);createTrackbar("K Value", "Harris Corner Detection", &k, 100, onTrackbar);createTrackbar("Threshold", "Harris Corner Detection", &thresholdValue, 1000, onTrackbar);createTrackbar("Radius", "Harris Corner Detection", &radius, 20, onTrackbar);while (true){cap >> frame;if (frame.empty()){break;}cvtColor(frame, grayFrame, COLOR_BGR2GRAY);Mat cornerResponse;cornerHarris(grayFrame, cornerResponse, blockSize * 2 + 2, ksize * 2 + 1, k / 100.0);Mat cornerMap = Mat::zeros(cornerResponse.size(), CV_8UC1);double maxResponse;minMaxLoc(cornerResponse, 0, &maxResponse);for (int i = 0; i < cornerResponse.rows; i++){for (int j = 0; j < cornerResponse.cols; j++){if (cornerResponse.at<float>(i, j) > thresholdValue / 1000.0 * maxResponse){circle(cornerMap, Point(j, i), radius, Scalar(255), 2);}}}imshow("Harris Corner Detection", cornerMap);if (waitKey(30) >= 0){break;}}return 0;
}void onTrackbar(int, void*)
{// You can add custom behavior when trackbars are moved if needed.
}

使用本地相机进行二值图角点检测

#include <opencv2/opencv.hpp>using namespace cv;Mat frame; // 用于存储摄像头捕捉的帧
Mat cornerResponse; // 存储Harris角点响应
Mat cornerMap; // 二值图像
double maxResponse; // 最大响应值int main()
{VideoCapture cap(0); // 打开默认相机(通常是内置摄像头)if (!cap.isOpened()){std::cerr << "Error: Could not open the camera." << endl;return -1;}namedWindow("Harris Corner Map", WINDOW_AUTOSIZE);while (true){cap >> frame; // 从摄像头捕捉帧if (frame.empty()){break;}// 转换为灰度图像Mat gray;cvtColor(frame, gray, COLOR_BGR2GRAY);// Harris角点检测cornerHarris(gray, cornerResponse, 2, 3, 0.04);// 查找最大响应值minMaxLoc(cornerResponse, 0, &maxResponse);// 初始化二值图像cornerMap = Mat::zeros(cornerResponse.size(), CV_8UC1);// 根据阈值将角点标记为白色或黑色for (int i = 0; i < cornerResponse.rows; i++){for (int j = 0; j < cornerResponse.cols; j++){if (cornerResponse.at<float>(i, j) > 0.01* maxResponse){cornerMap.at<uchar>(i, j) = 255;}else{cornerMap.at<uchar>(i, j) = 0;}}}imshow("Harris Corner Map", cornerMap);if (waitKey(30) == 27) // 按下Esc键退出{break;}}cap.release();destroyAllWindows();return 0;
}
http://www.yayakq.cn/news/398608/

相关文章:

  • wordpress如何清缓存网站优化seo技术
  • 网站建设服务哪家好 价格多少钱wordpress登录下载文件
  • 网站拥有权营业执照怎么注销
  • 太原企业网站搭建国外电商平台
  • 商贸公司寮步网站建设长沙房地产集团
  • 做网站页面过大好加快网站速度吗
  • 济南优化seo网站建设公司长春建设集团股份有限公司网站
  • 个人网站的网页青岛高品质网站建设
  • 网站页面关键词都一样个人主页免费网站
  • 酒厂网站模板wordpress jenn 主题
  • 自网站EXCel数据导入怎么做上海网站建设知识 博客
  • 网站开发用什么简单注入漏洞网站源码
  • 二次开发客户优化wordpress速度
  • 域名查询官方网站媒体网站的品牌建设
  • 吉安知名网站建设书店商城网站建设方案
  • 广州做网站 汉狮网络校园网站
  • 卓老师建站网站后台如何直接登陆app界面设计模板图片
  • 河南省建设工程质监总站网站word上下页边距怎么调
  • 安徽工程建设信息网站qq中心官方网站
  • 建设销售网站的好处网上如何建网站
  • 重庆手机网站制作费用深圳app网站开发
  • 绵阳建设网站虚拟主机 域名 和网站关系
  • 手机网站制作吧深圳网站建设fantodo
  • 做蜂蜜上什么网站漳州注册公司
  • 手机网站建设西安asp制作网站
  • 网站建设用哪种语言好黑龙江 俄语网站制作
  • 网站百度地图生成器长链接转换成短链接工具
  • 做商品条形码的网站如何做网站的埋点
  • 沧州市任丘建设局网站wordpress汽车之家模板
  • 成都淮州新城建设投资有限公司网站宜兴市做网站