图像处理总结:Canny边缘检测(二)

news/2025/1/15 17:43:30/

前言

上节已经讲了图像处理中Canny边缘检测算法原理

https://blog.csdn.net/Aidam_Bo/article/details/86099421

 

这节主要依据原理,代码佐证

话不多说,直接上码

一、源码

#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;//指向原始图像和处理后图像的指针
IplImage *OriginalImage, *GrayImage, *CannyImage;
//原始图像窗口和后期窗口名字
const char *OriginalWindowsNmae = "边缘检测Img_Original";
const char *GrayWindowsName = "边缘检测Img_Gray";
const char *CannyWindowsName = "边缘检测Img_Canny";//trackbar回调函数,当trackbar滑条值发生改变时就会触发该函数
void on_trackbar(int Threshold)
{cvCanny(GrayImage, CannyImage, Threshold, Threshold * 3, 3);cvShowImage(CannyWindowsName, CannyImage);
}
int main()
{//图像(彩色)char *OriginalImageName = "nini2.jpg";char *WindowsToolBar = "Threshold";//原始图像(0:灰度图)OriginalImage = cvLoadImage(OriginalImageName, 260);GrayImage = cvLoadImage(OriginalImageName, 0);CannyImage = cvCreateImage(cvGetSize(GrayImage), IPL_DEPTH_8U, 1);//创建显示原图的窗口cvNamedWindow(OriginalWindowsNmae, 1);//创建显示原图的窗口cvNamedWindow(GrayWindowsName, 1);//创建显示处理后图像的窗口cvNamedWindow(CannyWindowsName, 1);//创建滑条int ThresholdEdge = 1;cvCreateTrackbar(WindowsToolBar, CannyWindowsName, &ThresholdEdge, 100, on_trackbar);//显示原始图像(彩色图)cvShowImage(OriginalImageName,OriginalImage);//显示原始图像(灰度图) cvShowImage(GrayWindowsName, GrayImage);on_trackbar(1);cvWaitKey();//销毁窗口cvDestroyWindow(OriginalWindowsNmae);cvDestroyWindow(GrayWindowsName);cvDestroyWindow(CannyWindowsName);//释放图像cvReleaseImage(&OriginalImage);cvReleaseImage(&GrayImage);cvReleaseImage(&CannyImage);return 0;
}

二、效果图

对 (倪妮版) >=-=<

原图:

OriginalImage

灰度图:

GrayImage
​​​​​


Canny算法处理后:
 

Canny算法

阀值=15时

阀值=15

 

 

.阀值=30时

.阀值=30时

阀值=60时

阀值=60时

阀值=100时


 

阀值=100时

 


完工~


http://www.ppmy.cn/news/486242.html

相关文章

JAVA7 NIO2基础

为什么80%的码农都做不了架构师&#xff1f;>>> package com.mime;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java…

NOI1.12 (02)

02:短信计费 总时间限制: 1000ms 内存限制: 65536kB 描述 用手机发短信&#xff0c;一条短信资费为0.1元&#xff0c;但限定一条短信的内容在70个字以内&#xff08;包括70个字&#xff09;。如果你一次所发送的短信超过了70个字&#xff0c;则会按照每70个字一条短信的限…

2.JNI

JNI注册 静态注册和动态注册 动态注册的实现 c JNIEXPORT jint JNICALL JNI_Onload(JavaVM *vm , void *reserved){} System.load()和System.loadLibrary()区别 System.load()必须是全路径 绝对路径 System.loadLibrary() 参数为文件名 JNIEnv 代表Java环境 通过JNIEnv*…

UI自动化测试-Selenium的使用

文章目录 1. 环境搭建1.1 入门示例1.2 元素操作常用方法1.3 浏览器操作常用方法1.4 获取元素信息常用方法1.5 鼠标操作常用方法1.6 键盘操作常用方法1.7 下拉选择框操作2. 元素定位2.1 id定位2.2 name定位2.3 class_name定位2.4 tag_name定位2.5 link_text定位2.6 partail_link…

Nyoj 252

dp[k]&#xff0c;表示长度为k满足题目条件的‘01’串&#xff0c;有几个。如果第k位为0&#xff0c;则dp[k] dp[k-1],如果第k位为1,那么第k-1位一定为0&#xff0c;则dp[k] dp[k-2]; #include <iostream> #include <cstring> #include <cstdio>using name…

.NET开源类库Nini手册(INI、XML、注册表的配置应用)-中文翻译

目录 1.简介1.1什么是应用程序配置数据&#xff1f;1.2问题1.3介绍Nini 2.入门2.1一个简单的例子2.2默认值2.3设置、保存和删除键2.4添加和删除配置2.5键值扩展 3.高级主题3.1合并3.2价值别名3.3键值清单3.4活动 4.配置类型4.1 Ini文件4.2 XML文件4.3 Windows注册表配置4.4 .NE…

Java NIO.2

Java NIO.2 NIO.2Path&#xff0c; Paths&#xff0c; FilesFileVisitorWatchService文件属性 NIO.2 Java7 对NIO进行了改进&#xff1a; 新增java.nio.file 包&#xff0c;提供全面的文件IO和文件系统访问&#xff1b;基于异步Channel的IO&#xff0c;在java.nio.channels下…

【BZOJ 2819】 Nim

2819: Nim Time Limit: 20 Sec Memory Limit: 128 MB Submit: 926 Solved: 355 [ Submit][ Status] Description 著名游戏设计师vfleaking&#xff0c;最近迷上了Nim。普通的Nim游戏为&#xff1a;两个人进行游戏&#xff0c;N堆石子&#xff0c;每回合可以取其中某一堆的任…