cvsnakeimage 的例子

OpenCv 中Snake程序的例子 #include "cv.h"#include "highgui.h"#include #include #pragma comment(lib,"highgui.lib")#pragma comment(lib,"cv.lib") #pragma comment(lib,"cvaux.lib") #pragma comment(lib,"cxcore.lib") 阅读详情

opencv例子里没有提供cvsnakeimage的使用方法,在此整理一个例子,可以形象的看看snake算法的结果,大致做法是:

首先设定域值分割,把基本的轮廓找出来,见图中蓝色轮廓线,再将轮廓点传入cvSnakeImage函数,计算出绿色的snake轮廓线。

其中参数alpha代表点相互靠拢的权值(0-1.0),beta表示弯曲能量(越小越容易弯曲)(0-1.0),gamma表示整体能量(0-1.0)。其中参数我自己也不确定具体的范围,最好自己更改不同的范围试试.

 

 

 

// TrainingTools.cpp : 定义控制台应用程序的入口点。
//

#include 
"stdafx.h"
#include 
<iostream>
#include 
<string.h>
#include 
<cxcore.h>
#include 
<cv.h>
#include 
<highgui.h>
#include 
<fstream>


IplImage 
*image = 0 ; //原始图像
IplImage *image2 = 0 ; //原始图像copy

using namespace std;
int Thresholdness = 141;
int ialpha = 20;
int ibeta=20; 
int igamma=20; 

void onChange(int pos)
{
    
    
if(image2) cvReleaseImage(&image2);
    
if(image) cvReleaseImage(&image);

    image2 
= cvLoadImage("grey.bmp",1); //显示图片
    image= cvLoadImage("grey.bmp",0);

    cvThreshold(image,image,Thresholdness,
255,CV_THRESH_BINARY); //分割域值    

    CvMemStorage
* storage = cvCreateMemStorage(0);
    CvSeq
* contours = 0;

    cvFindContours( image, storage, 
&contours, sizeof(CvContour), //寻找初始化轮廓
        CV_RETR_EXTERNAL , CV_CHAIN_APPROX_SIMPLE );

    
if(!contours) return ; 
    
int length = contours->total;    
    
if(length<10) return ; 
    CvPoint
* point = new CvPoint[length]; //分配轮廓点

    CvSeqReader reader;
    CvPoint pt
= cvPoint(0,0);;    
    CvSeq 
*contour2=contours;    

    cvStartReadSeq(contour2, 
&reader);
    
for (int i = 0; i < length; i++)
    {
        CV_READ_SEQ_ELEM(pt, reader);
        point[i]
=pt;
    }
    cvReleaseMemStorage(
&storage);

    
//显示轮廓曲线
    for(int i=0;i<length;i++)
    {
        
int j = (i+1)%length;
        cvLine( image2, point[i],point[j],CV_RGB( 
0, 0, 255 ),1,8,0 ); 
    }

    
float alpha=ialpha/100.0f; 
    
float beta=ibeta/100.0f; 
    
float gamma=igamma/100.0f; 

    CvSize size; 
    size.width
=3; 
    size.height
=3; 
    CvTermCriteria criteria; 
    criteria.type
=CV_TERMCRIT_ITER; 
    criteria.max_iter
=1000; 
    criteria.epsilon
=0.1; 
    cvSnakeImage( image, point,length,
&alpha,&beta,&gamma,CV_VALUE,size,criteria,0 ); 

    
//显示曲线
    for(int i=0;i<length;i++)
    {
        
int j = (i+1)%length;
        cvLine( image2, point[i],point[j],CV_RGB( 
0, 255, 0 ),1,8,0 ); 
    }
    delete []point;

}

int main(int argc, char* argv[])
{

    
    cvNamedWindow(
"win1",0); 
    cvCreateTrackbar(
"Thd", "win1", &Thresholdness, 255, onChange);
    cvCreateTrackbar(
"alpha", "win1", &ialpha, 100, onChange);
    cvCreateTrackbar(
"beta", "win1", &ibeta, 100, onChange);
    cvCreateTrackbar(
"gamma", "win1", &igamma, 100, onChange);
    cvResizeWindow(
"win1",300,500);
    onChange(
0);

    
for(;;)
    {
        
if(cvWaitKey(40)==27) break;
        cvShowImage(
"win1",image2);
    }
    
    
return 0;
}
opencv学习篇(3)snake轮廓检测 opencv例子里没有提供cvsnakeimage的使用方法,在此整理一个例子,可以形象的看看snake算法的结果,大致做法是: 首先设定域值分割,把基本的轮廓找出来,见图中蓝色轮廓线,再将轮廓点传入cvSnakeImage函数,计算出绿色的snake轮廓线。 其中参数alpha代表点相互靠拢的权值(0-1.0),beta表示弯曲能量(越小越容易弯曲)(0-1.0),gamma表示整体 阅读详情

相关推荐

OPENCV改进的蛇形算法C++代码

该程序对原有的蛇形算法进行了改进,通过使用OPENCV的库函数实现了图像边界的很好的提取,效果比较好

opencv主动轮廓模型

前言 主动轮廓线模型,又叫做Snake模型。它对噪声和对比度不敏感,能够将矿堆从具有复杂车辙等噪声的地面背景中提取出来。Snake的主要原理是在我们提供一个原始轮廓以后,对其定义能量函数,使轮廓沿着能量降低的方向靠近,当能量函数达到最小的时候,我们就认为原始轮廓已经收敛到矿堆的真实轮廓。Snake的能量函数分为内部能量函数和外部能量函数,其中内部能量控制轮廓的平滑和连续。外部能量控制着收敛。具体公...

我的博客 3644

OpenCv_Snake

用OPENCV实现的活动轮廓提取,速度较快,对于简单物体轮廓提取效果良好

【OpenCV 基础知识 15】蛇形处理算法

函数 cvSnakeImage 更新 snake 是为了最小化 snake 的整个能量,其中能量是依赖于轮廓形状的内部能量(轮廓越光滑,内部能量越小)以及依赖于能量场的外部能量之和,外部能量通常在哪些局部能量极值点中达到最小值(这些局部能量极值点与图像梯度表示的图像边缘相对应)。如果在迭代中去掉的点数目小于 criteria.epsilon 或者函数达到了最大的迭代次数 criteria.max_iter ,则终止函数。

记录日常技术经验 1052

opencv3.0移植cvSnakeImage

最近做一个项目,用到了opencv3.0,又需要用cvSnakeImage函数,但是opencv3.0中删除了这个函数,于是花了几天的时间把这个函数移植过来了,经测试可用,本代码中附带一个可用的SnakePlus类,可直接使用。

图像分割-snake算法 python版本

python版本的形态学snake算法,里面包含测试图片,可以运行测试

主动轮廓线模型Snake模型简介&openCV中cvSnakeImage()函数代码分析

主动轮廓线模型又称为Snake模型,自Kass于1987年提出以来,已广泛应用于数字图像分析和计算机视觉领域。由于Snake模型具有良好的提取和跟踪特定区域内目标轮廓的能力,因此非常适合于医学图像如CT和MR图像的处理,以获得特定器官及组织的轮廓。简单的来讲,Snake模型就是一条可变形的参数曲线及相应的能量函数,以最小化能量目标函数为目标,控制参数曲线变形,具有最小能量的闭合曲线就是目标轮廓。 Snake模型具有一些经典方法所无法比拟的优点:图像数据、初始估计、目标轮廓及基于知识的约束统一于一个过程中;经

天下对手教会少林武僧 2664

opencv使用snake活动轮廓,人机交互的

opencv中,使用snake活动轮廓 人工可以手动调节参数的 希望大家喜欢

【主动轮廓模型(一)】《Snakes: Active Contour Models》算法原理与OpenCV实现

1 概述 主动轮廓模型(也称Active Contour Model、Snake)是Kass等人在1988年提出的,该算法将图像分割问题转换为求解能量泛函最小值的问题。主要思路是通过构造能量泛函,经过算法迭代,轮廓曲线由初始位置逐渐向使能量函数最小(或局部极小)的图像边缘逼近,最终分割出目标。 2 算法原理 首先需要人为地在图像上给出初始轮廓曲线,确切的说是一组用于控制曲线形状的控制点:v(s)=[x(s),y(s)]s∈[0,1]v(s)=[x(s),y(s)] s\in[0,1]v(s)=[x(s),y

CCC的专栏 1万+

【FOC无刷电机控制】六步换向、FOC,STM32cubemx从零开始搭建BLDC六步换相代码、FOC代码(基于霍尔传感器)

FOC、六步换相,无刷电机控制

xifan的博客 3万+

《哥谭神话-工程篇》01.Palantir 平台架构解析-混乱数据如何转化唯一真相源?

Palantir 平台的架构哲学可以概括为将洞察落地为行动,其核心是将“获取唯一真相”能力深度嵌入现有的、复杂的工作流程中,成为提升运营效率和决策质量的倍增器。

897

图像分割之cvSnakeImage

基本概念         OpenCV之前有个cvSnakeImage函数实现了Snakes活动轮廓模型,但是cvSnakeImage函数在opencv2中已经被去掉。由于没有无法得知其依据的论文,这里根据源代码简单介绍它的原理。遍历每个轮廓的点,计算该点邻域内每个点的能量E,将能量最小的点代替当前点。E= alpha...

阿兵-AI医疗的专栏 1659

AIGC实战:用ComfyUI和Lora微调打造专属原神角色(含完整工作流)

本文详细介绍了如何利用ComfyUI和Lora微调技术打造专属原神风格角色,涵盖从环境配置、数据集准备到工作流构建和Lora训练的全过程。通过模块化节点设计和高级控制技术,创作者可实现高度个性化的AIGC艺术创作,提升二次元角色生成的效率与质量。

weixin_29185199的博客 348

cvSnakeImage

cvSnakeImage函数更新snake用于最小化它的总能量,并在梯度能量场情况下的,使其对应图像边缘的局部能量极值达到最小。它的能量包括依赖于轮廓形状的内部能量(轮廓越平滑,能量越小),依赖于能量场的外部能量。 void cvSnakeImage( const IplImage* image, CvPoint* points, int length,

tangketan的专栏 1648

【顾邦小讲堂】第十九期 RC Snubber吸收电路详解:抑制MOSFET振铃现象与过冲的设计技巧!

通过RC Snubber电路有效抑制MOSFET DS端的过冲及振铃现象,帮助工程师们在设计中提升电路的稳定性和可靠性

GBupupup的博客 3785

【YOLOv12改进trick】高效多尺度卷积注意力EMCAD_Block模块引入YOLOv12,实现涨点和效率提升,含创新点Python代码

EMCAD引入YOLOv12模块,实现高效多尺度注意力模块引入到YOLOv12中的快速涨点及效率提升

向上生长的程序媛的博客 851

关于cvSnakeImage函数的问题

1.初始轮廓为圆,但演化后的轮廓内部却总有线 原因:输入cvSnakeImage的初始轮廓点是有序的,但我输入的轮廓因为用的中点生成圆算法,所以是无序的。 换一种圆生成算法就不会出现这种错误了。   2.cvSnakeImage中的三个参数alpha, beta,  gamma (1)范围都是0~1 (2)gamma是图像越大越好 (3) CvSize win是搜索范围,越大得到的点

u013089125的专栏 1582

【TCAD】Sentaurus 中的“陷阱trap”仿真设置

允许使用有限的数据集名称 SFactor 规范,例如 DeepLevels , xMoleFraction , 和 yMoleFraction (从兴奋剂档案中读取) eTrappedCharge 和 hTrappedCharge (从指定的文件中读取 DevFields 在 File 部分)或 PMI 用户字段 PMIUserField0...10 (从指定的文件中读取 PMIUserFields 在 File 部分)。给定的陷阱截面 eNeutral 陷阱是多种多样的 Xsec 项目参数。

荷塘阅色 1307

图像处理之其他杂项(三)之cvSnakeImage改进升级兼容 适用于opencv2,,在opencv3.0以上版本中测试通过

cvSnakeImage改进升级兼容   cvSnakeImage函数在opencv2中已经被去掉,现在函数仅有C接口版本,把函数源代码作为独立函数整合进程序中,并对其中包含的opencv2中不存在的函数宏定义进行更改替换,适合opencv2环境使用,测试环境VS2015+opencv3.2。   原源代码:蚂蚁搬家 http://blog.youkuaiyun.com/hongxingabc/a

coming_is_winter的博客 2902

【推荐100个unity插件】基于节点的程序化无限地图生成器 —— MapMagic 2

MapMagic 2是一款基于节点的程序化地形生成工具,可快速创建无限地图。主要功能包括:通过图形化节点编辑器构建地形逻辑;支持四个核心模块(对象、样条线、生物群落和笔刷);提供完整的操作指南,包括创建资产、使用编辑器窗口、节点操作等。工具具有直观的UI界面,支持节点连接、参数调整、图层管理等功能,并能实时生成地形。适合游戏开发者快速构建高质量的可玩地形环境。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3120

2、实时DSP编程技术及其应用

本文详细介绍了实时数字信号处理(DSP)技术及其应用,涵盖三种流行的浮点DSP处理器系列的特点、开发工具和优化方法。通过具体的应用实例,如语音压缩、音乐信号处理和雷达信号处理,展示了如何在实际项目中应用这些技术,帮助工程师提高系统的性能和可靠性。

cicd6pipeline的博客 838

“cvSnakeImage”: 找不到标识符

1&gt;g:\project\opencv\helloopencv\helloopencv\helloopencv.cpp(74) : error C2065: “CV_VALUE”: 未声明的标识符 1&gt;g:\project\opencv\helloopencv\helloopencv\helloopencv.cpp(74) : error C3861: “cvSn...

weixin_34291004的博客 141

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 双目视觉简单测试
下一篇: 使用harrTraining进行电池的识别实验
hardVB
博客等级 码龄26年 257粉丝 58原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值