Candy算子 分割 车辆
2014-12-28 12:23
232 查看
场景
鉴于仅仅使用二值化函数对图像进行处理,无法对车辆和道路进行完全的轮廓分割,因此通过Candy算子在阀值在19的情况下,一定程度上,对车辆的轮廓进行了分割,达到了不错的效果
代码
//图像的Canny边缘检测
//By MoreWindows (http://blog.csdn.net/MoreWindows)
#include <opencv2/opencv.hpp>
using namespace std;
IplImage *g_pSrcImage, *g_pCannyImg;
const char *pstrWindowsCannyTitle = "边缘检测图(http://blog.csdn.net/MoreWindows)";
//cvCreateTrackbar的回调函数
void on_trackbar(int threshold)
{
//canny边缘检测
cvCanny(g_pSrcImage, g_pCannyImg, threshold, threshold * 3, 3);
cvShowImage(pstrWindowsCannyTitle, g_pCannyImg);
}
int main()
{
const char *pstrImageName = "001.jpg";
const char *pstrWindowsSrcTitle = "原图(http://blog.csdn.net/MoreWindows)";
const char *pstrWindowsToolBar = "Threshold";
//从文件中载入图像的灰度图CV_LOAD_IMAGE_GRAYSCALE - 灰度图
g_pSrcImage = cvLoadImage("D:/20170601092226.png", CV_LOAD_IMAGE_GRAYSCALE);
g_pCannyImg = cvCreateImage(cvGetSize(g_pSrcImage), IPL_DEPTH_8U, 1);
//创建窗口
cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);
cvNamedWindow(pstrWindowsCannyTitle, CV_WINDOW_AUTOSIZE);
//创建滑动条
int nThresholdEdge = 1;
cvCreateTrackbar(pstrWindowsToolBar, pstrWindowsCannyTitle, &nThresholdEdge, 100, on_trackbar);
//在指定窗口中显示图像
cvShowImage(pstrWindowsSrcTitle, g_pSrcImage);
on_trackbar(1);
//等待按键事件
cvWaitKey();
cvDestroyWindow(pstrWindowsSrcTitle);
cvDestroyWindow(pstrWindowsCannyTitle);
cvReleaseImage(&g_pSrcImage);
cvReleaseImage(&g_pCannyImg);
return 0;
}
参考 http://blog.csdn.net/morewindows/article/details/8239625
鉴于仅仅使用二值化函数对图像进行处理,无法对车辆和道路进行完全的轮廓分割,因此通过Candy算子在阀值在19的情况下,一定程度上,对车辆的轮廓进行了分割,达到了不错的效果
代码
//图像的Canny边缘检测
//By MoreWindows (http://blog.csdn.net/MoreWindows)
#include <opencv2/opencv.hpp>
using namespace std;
IplImage *g_pSrcImage, *g_pCannyImg;
const char *pstrWindowsCannyTitle = "边缘检测图(http://blog.csdn.net/MoreWindows)";
//cvCreateTrackbar的回调函数
void on_trackbar(int threshold)
{
//canny边缘检测
cvCanny(g_pSrcImage, g_pCannyImg, threshold, threshold * 3, 3);
cvShowImage(pstrWindowsCannyTitle, g_pCannyImg);
}
int main()
{
const char *pstrImageName = "001.jpg";
const char *pstrWindowsSrcTitle = "原图(http://blog.csdn.net/MoreWindows)";
const char *pstrWindowsToolBar = "Threshold";
//从文件中载入图像的灰度图CV_LOAD_IMAGE_GRAYSCALE - 灰度图
g_pSrcImage = cvLoadImage("D:/20170601092226.png", CV_LOAD_IMAGE_GRAYSCALE);
g_pCannyImg = cvCreateImage(cvGetSize(g_pSrcImage), IPL_DEPTH_8U, 1);
//创建窗口
cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);
cvNamedWindow(pstrWindowsCannyTitle, CV_WINDOW_AUTOSIZE);
//创建滑动条
int nThresholdEdge = 1;
cvCreateTrackbar(pstrWindowsToolBar, pstrWindowsCannyTitle, &nThresholdEdge, 100, on_trackbar);
//在指定窗口中显示图像
cvShowImage(pstrWindowsSrcTitle, g_pSrcImage);
on_trackbar(1);
//等待按键事件
cvWaitKey();
cvDestroyWindow(pstrWindowsSrcTitle);
cvDestroyWindow(pstrWindowsCannyTitle);
cvReleaseImage(&g_pSrcImage);
cvReleaseImage(&g_pCannyImg);
return 0;
}
参考 http://blog.csdn.net/morewindows/article/details/8239625
相关文章推荐
- opencv 图像处理 形态学操作 腐蚀 膨胀 开闭运算 阈值二值化 图像卷积 图像金字塔 Sobel算子 Laplacian 算子 candy边缘检测 霍夫变换 直方图
- 车辆牌照字符分割——matlab
- 灰度图像--图像分割 边缘检测算子 综述
- 灰度图像--图像分割 Sobel算子,Prewitt算子和Scharr算子平滑能力比较
- Halcon一日一练:阈值分割的几个算子
- junctions_skeleton——通过该算子获取骨架的交点和端点,可判断前景的几何简单性(二次分割定位)
- poj 3083 Children of the Candy Corn(DFS+BFS)
- 车辆云诊断构思
- 图像边缘检测——二阶微分算子(上)Laplace算子、LOG算子、DOG算子(Matlab实现)
- hdu 4465 Candy
- BZOJ 1044 HAOI 2008 木棍分割 二分 贪心 动态规划
- 图像分割之(四)OpenCV的GrabCut函数使用和源码解读
- “Linux文件的合并、排序和分割” 之 split 命令
- Caffe 源码的修改(用于车辆的定位)
- Java将一段逗号分割的字符串转换成一个数组
- joj 2453 candy 网络流建图的题
- poj3038 Children of the Candy Corn DFS+BFS
- 有人开源了Mask R-CNN对象检测和分割的Keras和TensorFlow代码
- VB.net 字符串 分割 及 重新倒序组装
- 杭电2050折线分割平面