二值化区分前景和背景

简介:

场景

    单纯使用二值化函数处理图像,尝试获取前景的物体,存在如下的限制条件

1 前景和背景颜色有着鲜明的区别,可以通过二值化函数的阀值来调整


环境

    目前在进行车辆的边缘检测的过程中,道路和车辆连在一起,灰度化之后,进行二值化图像,其实如果能够获取道路的原始图片,进行差分,应该是能够非常轻松的提取车辆的轮廓的,不管如何进行阀值的调整,因此尝试使用Candy算子进行边缘的检测


代码

//图像的二值化

//By MoreWindows (http://blog.csdn.net/MoreWindows)

#include <opencv2/opencv.hpp>

using namespace std;


#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")


IplImage *g_pGrayImage = NULL;

IplImage *g_pBinaryImage = NULL;

const char *pstrWindowsBinaryTitle = "二值图";


void on_trackbar(int pos)

{

  // 转为二值图

  cvThreshold(g_pGrayImage, g_pBinaryImage, pos, 255, CV_THRESH_BINARY);

  // 显示二值图

  cvShowImage(pstrWindowsBinaryTitle, g_pBinaryImage);

}


int main( int argc, char** argv )

{

  const char *pstrWindowsSrcTitle = "原图";

  const char *pstrWindowsToolBarName = "二值图阈值";


  // 从文件中加载原图

  IplImage *pSrcImage = cvLoadImage("D:/20170601092226.png", CV_LOAD_IMAGE_UNCHANGED);


  // 转为灰度图

  g_pGrayImage =  cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1);

  cvCvtColor(pSrcImage, g_pGrayImage, CV_BGR2GRAY);


  // 创建二值图

  g_pBinaryImage = cvCreateImage(cvGetSize(g_pGrayImage), IPL_DEPTH_8U, 1);


  // 显示原图

  cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);

  cvShowImage(pstrWindowsSrcTitle, pSrcImage);

  // 创建二值图窗口

  cvNamedWindow(pstrWindowsBinaryTitle, CV_WINDOW_AUTOSIZE);


  // 滑动条

  int nThreshold = 0;

  cvCreateTrackbar(pstrWindowsToolBarName, pstrWindowsBinaryTitle, &nThreshold, 254, on_trackbar);


  on_trackbar(1);


  cvWaitKey(0);


  cvDestroyWindow(pstrWindowsSrcTitle);

  cvDestroyWindow(pstrWindowsBinaryTitle);

  cvReleaseImage(&pSrcImage);

  cvReleaseImage(&g_pGrayImage);

  cvReleaseImage(&g_pBinaryImage);

  return 0;

}



参考

http://blog.csdn.net/morewindows/article/details/8239678




    本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1738474,如需转载请自行联系原作者



相关文章
|
2月前
|
人工智能 Linux API
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
46 0
|
4月前
|
C++
[Halcon&定位] 解决Roi区域外的模板匹配成功
[Halcon&定位] 解决Roi区域外的模板匹配成功
58 0
|
4月前
[Halcon&图像] 图像、区域和轮廓相互转化
[Halcon&图像] 图像、区域和轮廓相互转化
79 1
|
8月前
|
文字识别 算法 Shell
突破边界:文本检测算法的革新与应用前景
突破边界:文本检测算法的革新与应用前景
突破边界:文本检测算法的革新与应用前景
|
9月前
|
存储 监控 计算机视觉
基于颜色特征的图像检索系统
基于颜色特征的图像检索系统。
83 0
|
11月前
|
Web App开发 编解码
生成高精细节,新方法AligNeRF解决NeRF对齐问题
生成高精细节,新方法AligNeRF解决NeRF对齐问题
112 0
|
11月前
|
机器学习/深度学习 编解码 vr&ar
一键生成山川、河流,风格多样,从2D图像中学习生成无限3D场景
一键生成山川、河流,风格多样,从2D图像中学习生成无限3D场景
128 0
|
11月前
|
自然语言处理 算法 测试技术
参数减半、与CLIP一样好,视觉Transformer从像素入手实现图像文本统一
参数减半、与CLIP一样好,视觉Transformer从像素入手实现图像文本统一
|
11月前
|
机器学习/深度学习 传感器 并行计算
马普所开源ICON,显著提高单张图像重建三维数字人的姿势水平 | CVPR 2022
马普所开源ICON,显著提高单张图像重建三维数字人的姿势水平 | CVPR 2022
114 0
|
11月前
|
机器学习/深度学习 编解码 定位技术
风格迁移 图像合成 图像重构 更换姿态和图像背景(使用交叉注意控制进行提示到图像编辑)GAN网络增强版
风格迁移 图像合成 图像重构 更换姿态和图像背景(使用交叉注意控制进行提示到图像编辑)GAN网络增强版
117 0