iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ OpenCV标记点检测怎么实现
  • 113
分享到

C++ OpenCV标记点检测怎么实现

2023-06-29 15:06:47 113人浏览 独家记忆
摘要

这篇文章主要介绍“c++ OpenCV标记点检测怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++ OpenCV标记点检测怎么实现”文章能帮助大家解决问题。效果如下:导

这篇文章主要介绍“c++ OpenCV标记点检测怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++ OpenCV标记点检测怎么实现”文章能帮助大家解决问题。

效果如下:

导入原图:

C++ OpenCV标记点检测怎么实现

截取ROI

C++ OpenCV标记点检测怎么实现

进行自适应阈值化与Canny边缘提取

C++ OpenCV标记点检测怎么实现

进行闭运算,然后轮廓检测,然后计算点集面积,通过面积阈值去除杂点

C++ OpenCV标记点检测怎么实现

再次进行轮廓检测,拟合椭圆

C++ OpenCV标记点检测怎么实现

C++ OpenCV标记点检测怎么实现

代码如下:

#include <opencv2\highgui\highgui.hpp>#include <opencv2\imgproc\imgproc.hpp>#include <opencv2\core\core.hpp>#include <iOStream>#define scale 2//图像缩放因子#define cannythreshold 80typedef struct _ROIStruct{cv::Point2d ROIPoint;cv::Mat ROIImage;}ROIStruct;ROIStruct getROI(cv::Mat src,bool flag = false){ROIStruct ROI_Struct;cv::Rect2d ROIrect = selectROI(src);ROI_Struct.ROIPoint = ROIrect.tl();//获取ROI区域左上角的点ROI_Struct.ROIImage = src(ROIrect);if (flag == true){cv::imshow("ROI", ROI_Struct.ROIImage);}return ROI_Struct;}int main(){cv::Mat srcImage = cv::imread("7.jpg");//读取待处理的图片cv::resize(srcImage, srcImage, cv::Size(srcImage.cols / scale, srcImage.rows / scale));//图像缩放,否则原来图像会在ROI时显示不下ROIStruct ROI = getROI(srcImage);//选择ROI区域cv::Mat DetectImage, thresholdImage;ROI.ROIImage.copyTo(DetectImage);cv::imshow("ROI", DetectImage);cv::cvtColor(DetectImage, thresholdImage, CV_RGB2GRAY);cv::adaptiveThreshold(thresholdImage, thresholdImage, 255, CV_ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY,11,35);//自适应阈值cv::Canny(thresholdImage, thresholdImage, cannythreshold, cannythreshold * 3, 3);cv::imshow("thresholdImage", thresholdImage);std::vector<std::vector<cv::Point>> contours1;std::vector<cv::Vec4i> hierarchy1;cv::Mat element = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(3, 3));cv::morphologyEx(thresholdImage, thresholdImage, cv::MORPH_CLOSE, element,cv::Point(-1,-1),2);cv::Mat findImage = cv::Mat::zeros(thresholdImage.size(), CV_8UC3);cv::findContours(thresholdImage, contours1, hierarchy1,CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);for (int i = 0; i <contours1.size();i++){double area = cv::contourArea(contours1[i]);//std::cout << i << "点集区域面积:" << area << std::endl;if (area < 120){continue;}else{drawContours(findImage, contours1, i, cv::Scalar(255, 255, 255), -1, 8, cv::Mat(), 0, cv::Point());}}cv::imshow("drawing", findImage);cv::Mat CircleImage(findImage.size(),CV_8UC1);findImage.copyTo(CircleImage);cv::cvtColor(CircleImage, CircleImage, CV_RGB2GRAY);std::vector<std::vector<cv::Point>> contours2;std::vector<cv::Vec4i> hierarchy2;cv::Mat resultImage(CircleImage.size(), CV_8UC3);cv::findContours(CircleImage, contours2, hierarchy2, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);std::vector<cv::Point> points1, points2;cv::Mat compareImage;DetectImage.copyTo(compareImage);for (int j = 0; j <contours2.size();j++){cv::RotatedRect box = cv::fitEllipse(contours2[j]);points1.push_back(box.center);ellipse(resultImage, box, cv::Scalar(0, 0, 255), 1, CV_AA);ellipse(compareImage, box, cv::Scalar(0, 0, 255), 1, CV_AA);}for (int i = 0; i < points1.size(); i++){cv::Point ans;ans.x = ROI.ROIPoint.x + points1[i].x;ans.x = ans.x*scale;ans.y = ROI.ROIPoint.y + points1[i].y;ans.y = ans.y*scale;points2.push_back(ans);}std::cout << points1 << std::endl;std::cout << ROI.ROIPoint << std::endl;std::cout << points2 << std::endl;cv::imshow("resultImage", resultImage);cv::imshow("compareImage", compareImage);cv::waiTKEy(0);return 0;}

关于“C++ OpenCV标记点检测怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网其他教程频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: C++ OpenCV标记点检测怎么实现

本文链接: https://www.lsjlt.com/news/325408.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ OpenCV标记点检测怎么实现
    这篇文章主要介绍“C++ OpenCV标记点检测怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++ OpenCV标记点检测怎么实现”文章能帮助大家解决问题。效果如下:导...
    99+
    2023-06-29
  • C++OpenCV实战之标记点检测的实现
    在实际应用中,能够直接利用霍夫圆检测这些理想方法的应用场景是非常少的,更多的是利用拟合的办法去寻找圆形。 大致思路如下,首先先选择要处理的ROI部分,记录下该图的左上点在原图的坐标,...
    99+
    2024-04-02
  • opencv实现角点检测
    本文实例为大家分享了opencv实现角点检测的具体代码,供大家参考,具体内容如下 1、特征点的作用:使用特征点代表图像内容 运动目标跟踪物体识别图像配准全景图像拼接三维重建 2、Ha...
    99+
    2022-11-13
    opencv 角点检测
  • opencv-python+yolov3怎么实现目标检测
    这篇文章给大家分享的是有关opencv-python+yolov3怎么实现目标检测的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。目标检测概况目标检测是?目标检测,粗略来说就是:输入图片/视频,经过处理,得到:目标...
    99+
    2023-06-15
  • opencv-python+yolov3实现目标检测
    目录目标检测概况目标检测是?目标检测算法?yolov3模型简介性能介绍架构介绍opencv-python实现why opencv?正文因为最近的任务有用到目标检测,所以昨天晚...
    99+
    2024-04-02
  • Qt+OpenCV实现目标检测详解
    目录一、创建项目&UI设计二、代码与演示演示效果拓展阅读一、创建项目&UI设计 创建项目,UI设计如下 文件类型判断 简单的判断文件类型 QString file(...
    99+
    2024-04-02
  • Python+OpenCV实现边缘检测与角点检测详解
    目录一、边缘检测1.1、读取图像1.2、图像转换成灰度图像1.3、Sobel算子1.4、Canny算子1.5、显示正常中文的标签1.6、边缘检测结果二、角点检测2.1、读取图像2.2...
    99+
    2023-02-03
    Python OpenCV边缘检测 Python OpenCV角点检测 Python OpenCV 检测
  • OpenCV角点检测的实现示例
    目录Harris 角点检测算法1. 角点角点检测算法的基本思想: 2. 流程3. 实现Harris 角点检测算法 1. 角点 角点是水平方向、垂直方向变化都很大的像素。 角...
    99+
    2024-04-02
  • C++ OpenCV如何实现车道检测
    这篇文章主要为大家展示了“C++ OpenCV如何实现车道检测”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++ OpenCV如何实现车道检测”这篇文章吧。一、获取车道RO...
    99+
    2023-06-28
  • Android基于OpenCV实现Harris角点检测
    目录什么是角点? 为什么要检测角点? Harris角点检测 API操作效果 源码 什么是角点? 角点就是极值点,即在某方面属性特别突出的点。当然,你可以自己定义角点的属性(设置特定...
    99+
    2024-04-02
  • C++ OpenCV实现二维码检测功能
    目录前言一、二维码检测二、二维码识别三、二维码绘制四、源码总结前言 本文将使用OpenCV C++ 进行二维码检测。 一、二维码检测 首先我们要先将图像进行预处理,通过灰度、滤波、...
    99+
    2024-04-02
  • C++OpenCV实战之网孔检测的实现
    目录前言一、HSV通道转换二、图像修复2.1 OpenCV函数实现2.2 MyFunction三、轮廓提取四、效果显示五、源码总结前言 前段时间,有位粉丝私信我,给我发了一张图片,如...
    99+
    2024-04-02
  • opencv实现颜色检测
    本文实例为大家分享了opencv实现颜色检测的具体代码,供大家参考,具体内容如下 若要在OPencv 中实现颜色检测,首先要将待检测图像转换到HSV颜色空间中,但因为颜色是一个特定的...
    99+
    2024-04-02
  • OpenCV实现直线检测
    本文实例为大家分享了OpenCV实现直线检测的具体代码,供大家参考,具体内容如下 1 介绍 本文主要介绍OpenCV自带的直线检测函数HoughLines()的用法,这个函数的第一个...
    99+
    2024-04-02
  • OpenCV基于ORB算法实现角点检测
    本文实例为大家分享了OpenCV基于ORB算法实现角点检测的具体代码,供大家参考,具体内容如下 ORB算法是FAST算法和BRIEF算法的结合,ORB可以用来对图像中的关键点快速创建...
    99+
    2024-04-02
  • C++利用Opencv实现多个圆形检测
    主要是利用霍夫圆检测、面积筛选等完成多个圆形检测,具体代码及结果如下。 第一部分是头文件(common.h): #pragma once #include<opencv2/op...
    99+
    2022-11-13
    C++ Opencv圆形检测 C++ 原型检测
  • C++ OpenCV实战之车道检测
    目录前言一、获取车道ROI区域二、车道检测1.灰度、阈值2.获取非零像素点3.绘制车道线总结前言 本文将使用OpenCV C++ 进行车道检测。 一、获取车道ROI区域 原图如图所...
    99+
    2024-04-02
  • 怎么用Python+OpenCV实现猫脸检测
    这篇文章主要介绍了怎么用Python+OpenCV实现猫脸检测的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python+OpenCV实现猫脸检测文章都会有所收获,下面我们一起来看看吧。开发工具Pytho...
    99+
    2023-06-27
  • 怎么使用opencv实现车道线检测
    这篇“怎么使用opencv实现车道线检测”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用opencv实现车道线检测”文...
    99+
    2023-06-29
  • opencv实现棋盘格检测
    本文实例为大家分享了opencv实现棋盘格检测的具体代码,供大家参考,具体内容如下 代码: #include <iostream> #include <vector...
    99+
    2022-11-13
    opencv棋盘格检测 opencv棋盘检测 opencv检测
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作