opencv图像canny和二值化化的轮廓提取,并求外接矩形,画圆等

opencv 二值化_OpenCV二值图像案例分析精选 | 第二期 点击上方↑↑↑“OpenCV学堂”关注我整理了OpenCV研习社,问答社区上六个二值分析的代表性案例,对如何使用OpenCV解决实际问题带来更多启发与思考!大家好,之前发过一篇文章是知识星球上问题,选择了几个经典的二值图像分析问题,从思路到代码实现给大家分析一波,最近又总结收录了知识星球上的提问,实现了从思路分析到代码实现的完整,下面我们就来看看这几个案例思路分析、运行效果、实现的相关A... 阅读详情
#include "iostream" 
#include "highgui.h"
#include "cv.h"
#include "cxcore.h"
#include <opencv/cxcore.h>
#include "D:\Program Files\opencv\build\include\opencv2\core\core.hpp"
using namespace cv;
 CvBox2D  Box2D;
int main(int argc, char* argv[])
{  
IplImage *src=cvLoadImage("text.jpg",1);
///***************************************************
int data[16]=
 {
  0,0,0,0,
  0,0,1,0,     ///图像的腐蚀
  0,1,1,0,
  0,0,0,0
 };
IplConvKernel *Element= cvCreateStructuringElementEx(4,4,2,2,CV_SHAPE_RECT,data);;
cvErode(src,src,Element,2);
// ***********************************************/
IplImage *src_RGB=cvCreateImage(cvGetSize(src),8,3);
IplImage *ZeroImage=cvCreateImage(cvGetSize(src),8,3);
cvZero(ZeroImage);
src_RGB=cvCloneImage(src);   //copy Image
IplImage *src_gray=cvCreateImage(cvGetSize(src),8,1);
IplImage *Canny_Image=cvCreateImage(cvGetSize(src),8,1);
IplImage *Threshold=cvCreateImage(cvGetSize(src),8,1);
cvCvtColor(src,src_gray,CV_RGB2GRAY);
cvShowImage("GRAY",src_gray);//显示灰色图像


//转为二值化图像
cvThreshold(src_gray,Threshold,120,255,CV_THRESH_BINARY);


cvShowImage("Threshold",Threshold);
CvMemStorage *storage =cvCreateMemStorage(0);
CvSeq * Image_Seq;

//使用canny算法提取图像的轮廓
cvCanny(src_gray,Canny_Image,125,255,3);
//使用cvfindcontour函数提取轮廓
    cvFindContours(Canny_Image,storage,&Image_Seq,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_NONE);


cvDrawContours(src_RGB,Image_Seq,CV_RGB(200,65,45),CV_RGB(100,165,45),2,2,8);
cvDrawContours(ZeroImage,Image_Seq,CV_RGB(200,65,45),CV_RGB(255,2555,255),2,2,8);


CvSeq * Cal_Contours=Image_Seq;
    CvPoint2D32f Array[4];
for(;Cal_Contours!=0;Cal_Contours=Cal_Contours->h_next )
{    //show  Angle to Image
 CvSeq* InterCon = Cal_Contours->v_next;
for(;InterCon!=0;InterCon=InterCon->h_next)
{
     Box2D=cvMinAreaRect2(Cal_Contours);


  CvBox2D FitBox;
 FitBox= cvMinAreaRect2(Cal_Contours);
//  cvFitEllipse2(Cal_Contours);
// printf("Cal_Contours of angle %f",Box2D.angle);
 CvBox2D ellipse = cvFitEllipse2(Cal_Contours);
 cvBoxPoints(FitBox,Array);
 cvEllipseBox(src_RGB,ellipse,CV_RGB(255,255,0)); //在图上画椭圆  
 printf("%f %f ",Array[0].x ,Array[0].y );
 printf("\n" );
 cvLine(ZeroImage,cvPoint(Array[0].x,Array[0].y),cvPoint(Array[1].x,Array[1].y),CV_RGB(114,45,255),2,8);
 cvLine(ZeroImage,cvPoint(Array[1].x,Array[1].y),cvPoint(Array[2].x,Array[2].y),CV_RGB(114,45,255),2,8);
 cvLine(ZeroImage,cvPoint(Array[2].x,Array[2].y),cvPoint(Array[3].x,Array[3].y),CV_RGB(114,45,255),2,8);
 cvLine(ZeroImage,cvPoint(Array[3].x,Array[3].y),cvPoint(Array[0].x,Array[0].y),CV_RGB(114,45,255),2,8);
 //在图上画圆
     //cvCircle(ZeroImage,cvPoint((int)Box2D.center.x,(int)Box2D.center.y) ,50,CV_RGB(45,89,56),2,8);
////draw RectAngle to Image
// CvRect rect= cvBoundingRect(Cal_Contours);
   // cvRectangle(ZeroImage,cvPoint(rect.x,rect.y),cvPoint(rect.x+rect.width ,rect.y+rect.width),CV_RGB(114,45,255),2,8);
}
}


//显示图像
cvNamedWindow("ZeroImage",0);
cvShowImage("ZeroImage",ZeroImage);

    cvShowImage("src",Canny_Image);

cvShowImage("src_RGB",src_RGB);
cvWaitKey();
return 0;

}



作为初学者,有不对的地方请见谅和指教


圆 最小外包矩形_Opencv实现最小外接矩形和圆 本文实例为大家分享了Opencv实现最小外接矩形和圆的具体代码,供大家参考,具体内容如下步骤:将一幅图像先转灰度,再canny边缘检测得到二值化边缘图像,再寻找轮廓,轮廓是由一系列点构成的,要想获得轮廓的最小外接矩形,首先需要得到轮廓的近似多边形,用道格拉斯-普克抽稀(DP)算法,道格拉斯-普克抽稀算法,是将曲线近似表示为一系列点,并减少点的数量的一种算法。该算法实现抽稀的过程是:1)对曲线的首末... 阅读详情

相关推荐

OpenCV基础知识(8)— 图形检测(图像轮廓、轮廓拟合、Canny边缘检测和霍夫变换)

图形检测是计算机视觉的一项重要功能,本节课就介绍如何检测图像的形状、图像所占的区域,以及如何查找图像中出现的几何图形等!

小哥谈 4255

python二值化_python+opencv 二值化

算法核心:找阈值!!!参考文章:http://www.cnblogs.com/ssyfj/p/9272615.html#二全局阈值使用thresh_triangle三角形算法https://www.cnblogs.com/xiaomanon/p/4110006.html(重要)一. 局部自适应二值化采用了分块,效果比全局二值化只采用了一种threshold这种,效果要好很多二. 全局二值化算法:1...

weixin_39848347的博客 1301

Geoserver新手必看:5分钟搞定世界地图发布(附中国省市数据)

本文为Geoserver新手提供了快速发布世界地图的实战指南。从环境搭建、数据准备入手,详细讲解了如何创建工作区、添加数据存储、发布图层及配置关键参数,并最终通过创建图层组实现地图服务的整合与预览。文章旨在帮助用户快速掌握Geoserver发布地图服务的核心流程与实用技巧。

cola5的博客 223

图像二值化常用方法介绍

1.图像二值化常用方法原理介绍图像二值化是图像分析与处理中最常见最重要的处理手段,二值处理方法也非常多。越精准的方法计算量也越大。1.1基于RGB色彩空间(主要是阈值的选取) 方法一:该方法非常简单,对RGB彩色图像灰度化以后,扫描图像的每个像素值,值小于127的将像素值设为0(黑色),值大于等于127的像素值设为255(白色)。该方法的好处是计算量少速度快。缺点更多首先阈值为127没有任何理由可

青天白鹭的博客 1万+

【教程】安装 iterm2 打造漂亮且高性能的 mac 终端

最近电脑重新安装系统,开发环境和软件都需要重新安装和配置,其中终端工具是必不可少的,正好利用这个机会,介绍一下 macOS 终端神器 iTerm2 的安装和配置,并推荐几款好用的插件和工具。在IT领域中,工具的选择和使用对于开发者和运维人员来说至关重要。而在众多终端模拟器中,ITerm2无疑是一个出色的选择,希望本篇的文章能对你有些帮助,感兴趣的朋友可以登录官网查看官方文档。我是刘大大,持续分享AI相关领域的知识和工具,喜欢点点关注。

刘大大AI的博客 3399

海思HiMPP开发避坑指南:MMZ内存与系统内存傻傻分不清?一个例子讲透

本文深入解析海思HiMPP开发中MMZ内存与系统内存的关键差异与应用场景,帮助开发者避免常见的内存混淆问题。通过实际案例和性能对比,详细介绍了MMZ内存的特性和优化策略,提升多媒体处理效率。

weixin_30772105的博客 468

opencv 霍夫变换检测直线和圆

霍夫变换 霍夫变换原理及python实现 opencv 霍夫直线变换 OpenCV中用cv.HoughLines()在二值图上实现霍夫变换,函数返回的是一组直线的(r,θ)数据: 函数中: 参数1:要检测的二值图(一般是阈值分割或边缘检测后的图) 参数2:距离r的精度,值越大,考虑越多的线 参数3:角度θ的精度,值越小,考虑越多的线 参数4:累加数阈值,值越小,考虑越多的线 实验:检测图像中的直线...

Ibelievesunshine的博客 1090

Windows系统下AutoDock 4.2.6安装避坑指南(附MGLTools配置技巧)

本文详细介绍了在Windows系统下安装和配置AutoDock 4.2.6的完整流程,特别针对分子对接研究中常见的软件安装问题提供了解决方案。从环境准备、分步安装到常见报错处理,涵盖MGLTools配置技巧、工作目录设置和环境变量优化,帮助科研人员快速搭建稳定的分子对接平台。

weixin_29234239的博客 313

图像处理边缘处理:Roberts算子和canny算子,对圆与矩阵进行识别

目录 前言: 一、Roberts算子 运行结果展示: 二、canny算子 运行结果: 前言: 前几日处理亚太杯A题图像处理,匆忙学习了相关图片边缘处理的一些简单算子处理方法,奈何亚像素处理的水平不够。便就此搁浅,在这里简单分享一些学会的方法。 一、Roberts算子 Roberts算子是一种最简单的算子,利用局部差分算子寻找边缘的算子。采用对角线相邻两像素之差近似梯度幅值检测边缘。。检测垂直边缘的效果比斜向边缘要好,定位精度高,对噪声比较敏感,无法抑制噪声的影响。Roberts边缘算子

qq_52528413的博客 2779

GCJ02坐标系转WGS84坐标系(已实地测试基本无偏差)

坐标系转化,GCJ02坐标系,WGS84坐标系

Xiao_XianYu_的博客 1855

Ubuntu20.04运行Vins-fusion

因已安装ROS noetic,eigen,opencv及ceres等库,这部分环境配置就不细讲,直接下载VINS-FUSION的代码库 下载编译 cd ~/vins-fusion/src git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git cd ../ catkin_make source ~/catkin_ws/devel/setup.bash 编译时会发现一堆错误,别急,无非就是环境冲突问题,一个个解决 1)首先,ROS

xiaojinger_123的博客 1万+

边缘识别+轮廓识别+边框+二值化

机器视觉 图片处理一:图片二值化1. 什么是二值化2. 代码3. 结果展示二:寻找物体轮廓1. 主要函数2. 代码3.结果展示三:二值化+边框四:结语 边缘识别+轮廓识别+边框+二值化 环境:ubuntu+python 部分代码摘自网络 一:图片二值化 1. 什么是二值化 将图像上的像素点的灰度值设为0或255,整个图像呈现出黑白效果。 所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示, 否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。 2. 代码 #

qq_44668447的博客 1万+

EXCEL实现分层自定义比例随机抽样(图+文教程)

EXCEL实现分层自定义比例随机抽样(图+文教程) 单一字段分层自定义比例随机抽样 多字段分层自定义比例随机抽样 单一字段分层自定义比例随机抽样 首先数据源如下,我们想随机抽张三的金额数据10%、李四金额20%、王五5%、哈哈15%、李六10% 首先第一步,添加辅助列,随机数 =RAND() 对数据进行高级排序 升序、降序都可以 添加辅助列...

可乐联盟 2万+

OpenCV(图像处理)-基于Python-轮廓查找

OpenCV轮廓查找,描画轮廓

羊羊羊 7941

DMC-E 系列总线控制卡----雷赛板卡介绍(十七)

低的速度平稳地接近目标位置,降低运动部件对接触点的冲击。设置插补目标位置,插补方向,以确定插补动作。圆形区域限位,即运动仅在用户设定的圆形范围内进行,超出这个范围,运动会依据设定。首先,用户需要绑定两个轴进而确定该功能所处的坐标系。仅支持平面圆形限位,不支持空间圆形限位。径,可以确定该区域在坐标系中的位置。)运动开始前,用户应当将旋转轴调整到与插补曲线的起点位置相切的角度;可以配合椭圆插补或圆弧插补运动,实现跟随轴的旋转运动角度与曲线当前。外,其它运动形式若开始运动时在限位区域外,则禁止运动;

A_nanda的博客 652

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

利用OpenCV提取图像中的矩形区域(PPT屏幕等)

** 前言 ** 最近参加了大创项目,题目涉及到计算机视觉,学姐发了个修正图像的博客链接,于是打算用这个题目入门OpenCV。 分析问题 照片中的PPT区域总是沿着x,y,z三个轴都有倾斜(如下图),要想把照片翻转到平行位置,需要进行透视变换,而透视变换需要同一像素点变换前后的坐标。由此可以想到,提取矩形区域四个角的坐标作为变换前的坐标,变换后的坐标可以设为照片的四个角落,经过投影变换,矩形区域将会翻转并充满图像。 因此我们要解决的问题变为:提取矩形的四个角落、进行透视变换。 提取矩形角落坐标 矩形的检测主

思依_vr 的专栏 5917

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OpenCV-图像预处理③【图像梯度计算、边缘检测算法(如 Canny)、轮廓提取与分析、凸包特征检测,以及 轮廓的外接几何特征(如最小外接矩形、外接圆等)】

本文将深入探讨 **图像梯度计算**、**边缘检测算法(如 Canny)、轮廓提取与分析、凸包特征检测,以及 轮廓的外接几何特征(如最小外接矩形、外接圆等)**。

m0_74027965的博客 1044

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python3+Opencv 学习笔记(三)图像轮廓处理+描绘矩形框+ 矩形框加文字

上一篇文章的图片处理感觉效果不是很好,又找了个新算法,试了一下效果挺好 处理完轮廓就可以给轮廓加框框了 框框加完顺便顺便试了一下简单的视频读取 废话不多说直接上代码 #开运算操作 def open_mor(binary): kernel = np.ones((6,6),np.uint8) #8 8 数字可以自己改变加以调整效果 数字越大强度越高 opening = cv2.morphologyEx(binary,cv2.MORPH_OPEN,kernel, iterations=5)

辞的博客 3914

基于python+opencv的图像目标区域自动提取

向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayx一、提取纸张中的内容一张照片中的感兴趣区域总是沿着x,y,z三个轴都有一定倾斜(如下...

datayx的文章 1万+

opencv提取轮廓与抠图

自然图像抠图/视频抠像技术梳理(image matting, video matting)-计算机视视觉专题1 图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting http://download.youkuaiyun.com/detail/jlwyc/4676516          学习opencv ,图像分割中分水岭算法的感性认识

编程路上的野花 3万+

【OpenCV】Python用OpenCV进行图像处理和轮廓检测

Pycharm直接pip install安装opencv-python或opencv-contrib-python,注意的是安装opencv-python-headless会导致imshow等涉及UI的方法不能用。 其中,opencv-python只包含了OpenCV的主要模块,而opencv-contrib-python还包含了一些拓展模块,两者都适用于桌面环境,而opencv-python-headless是用于服务器环境的无头软件包,无UI界面,看需求安装即可。

xhltk316的博客 9673

二值化预处理+Canny边缘检测+轮廓提取+最小外接矩形

本文详细介绍了图像处理中的二值化预处理、Canny边缘检测、轮廓提取和最小外接矩形技术,特别适用于工业检测场景。通过实战案例和代码示例,展示了如何优化参数设置以提高边缘识别精度,解决光照不均、反光材质等特殊场景的处理难题,最终实现高效精准的物体测量与检测。

weixin_33824363的博客 448

图像处理之图像的边缘、轮廓检测

图像的边缘、轮廓检测在人类视觉和计算机视觉中均起着重要的作用。人类能够仅凭一张背景剪影或一张草图就能识别出物体的类型和姿态。OpenCV提供了许多边缘检测l滤波函数,包括Laplacian( )、Sobel()以及Scharr()。这些函数都能将边缘转化为白色或其他饱和的颜色,将非边缘转化为黑色,但是,这些函数不能有效的区分噪声错误的判断为边缘。解决这个问题的办法是对图像进行模糊处理。这里介绍一种

星影L的博客 2万+

图像轮廓提取与OpenCV实战技巧

图像轮廓是计算机视觉中物体形状分析的基础技术,通过连接具有相同颜色或灰度值的连续点形成闭合边界。与边缘检测不同,轮廓提取能获得有序的点序列和完整物体形状,在工业检测、医学影像等领域有广泛应用。OpenCV提供了多种轮廓检索模式,如RETR_EXTERNAL、RETR_TREE等,配合二值化预处理和几何特征提取,可实现高精度物体识别。在实际工程中,合理选择阈值和优化算法性能是关键,例如使用自适应阈值处理光照不均,通过Douglas-Peucker算法简化轮廓。这些技术在零件尺寸测量、表面缺陷检测等场景中展现出

chenshixi3325的博客 410

opencv---边沿检测、轮廓、轮廓特征、轮廓层级

边缘检测,框出物体的轮廓(使用opencv-python) OpenCV 中的轮廓应用 感兴趣区域的移动物体检测,框出移动物体的轮廓 (固定摄像头, opencv-python) OpenCV图像处理-轮廓和轮廓特征 相关概念: 数学形态学操作 OpenCV图像处理|1.11 形态学操作 图像卷积、边缘提取和滤波去噪 图像边缘检测 - 图像梯度与Canny算子 OpenCV—python 图像显著性检测算法—HC/RC/LC/FT 轮廓处理的一般流程: 知识点1: 需要注意的是cv2.findConto

xys430381_1的专栏 3091

Android Opencv 轮廓提取

1.把图片转成灰度图 2.再转成黑白 3.用canny检查边缘 4.查找轮廓 这里查找的是图片中最大的矩形 Mat src=new Mat(); Mat grayMat=new Mat(); Mat edge=new Mat(); Utils.bitmapToMat(bitmap_src, src); I...

Aaron121314的博客 3590
上一篇: opencv的cvCvtColor问题
下一篇: HoughLines2霍夫直线的提取
C_ROS
博客等级 码龄12年 9粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值