资源简介
这是一段基于OpenCV的图像二值化实例代码,阈值可以通过滑动条来调节,可以观察不同阈值。具体分析见博客http://blog.csdn.net/primetong/article/details/79211648
代码片段和文件信息
//- 图像的二值化 -
//- by 陈胃痛 -
//cvThreshold()函数功能:采用Canny方法对图像进行边缘检测
//函数原型:
//void cvThreshold( //函数说明:
//const CvArr* src //第一个参数表示输入图像,必须为单通道灰度图。
//CvArr* dst //第二个参数表示输出的边缘图像,为单通道黑白图。
//double threshold //第三个参数表示阈值
//double max_value //第四个参数表示最大值。
//int threshold_type //第五个参数表示运算方法。
//);
//在OpenCV的imgproc\types_c.h中可以找到运算方法的定义。
///* Threshold types ↓*/
//enum
//{ CV_THRESH_BINARY = 0 /* value = value > threshold ? max_value : 0 */
// CV_THRESH_BINARY_INV = 1 /* value = value > threshold ? 0 : max_value */
// CV_THRESH_TRUNC = 2 /* value = value > threshold ? threshold : value */
// CV_THRESH_TOZERO = 3 /* value = value > threshold ? value : 0 */
// CV_THRESH_TOZERO_INV = 4 /* value = value > threshold ? 0 : value */
// CV_THRESH_MASK = 7
// CV_THRESH_OTSU = 8 /* use Otsu algorithm to choose the optimal threshold value; combine the flag with one of the above CV_THRESH_* values */
// 最后一个是自适应算法取阈值(最大类间方差法),这样前面的第四个参数threshold会无效
//};
#include
using namespace std;
IplImage *g_pGrayImage = NULL;
IplImage *g_pBinaryImage = NULL;
const char *pstrWindowsBinarytitle = “二值化之后的图像“;
void on_trackbar(int val)
{
// 转为二值图
cvThreshold(g_pGrayImage g_pBinaryImage val 255 CV_THRESH_BINARY);
// 显示二值图
cvShowImage(pstrWindowsBinarytitle g_pBinaryImage);
}
int main(int argc char** argv)
{
const char *pstrWindowsSrctitle = “原图 - by Lenna“;
const char *pstrWindowsToolBarName = “二值化阈值“;
// 从文件中加载原图
IplImage *pSrcImage = cvLoadImage(“Lenna.jpg“ CV_LOAD_IMAGE_UNCHANGED);
// 转为灰度图 Gray = R*0.299 + G*0.587 + B*0.114 (通道顺序B->G->R)
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 = 63;
cvCreateTrackbar(pstrWindowsToolBarName pstrWindowsBinarytitle &nThreshold 254 on_trackbar);
on_trackbar(63); //初始阈值的设置,初步调试设为63
cvWaitKey(0);
cvDestroyWindow(pstrWindowsSrctitle);
cvDestroyWindow(pstrWindowsBinarytitle);
cvReleaseImage(&pSrcImage);
cvReleaseImage(&g_pGrayImage);
cvReleaseImage(&g_pBinaryImage);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7353 2017-10-08 21:56 Binarization\Binarization\Binarization.vcxproj
文件 945 2017-10-08 21:56 Binarization\Binarization\Binarization.vcxproj.filters
文件 93609 2017-10-08 20:32 Binarization\Binarization\Lenna.jpg
文件 2725 2018-03-14 20:22 Binarization\Binarization\main.cpp
文件 1124 2017-09-17 14:56 Binarization\Binarization\OpenCV3.3_VS2013_x64_Debug.props
文件 1865 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.log
文件 175 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.tlog\Binarization.lastbuildstate
文件 1342 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.tlog\cl.command.1.tlog
文件 59752 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.tlog\CL.read.1.tlog
文件 1150 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.tlog\CL.write.1.tlog
文件 4054 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.tlog\li
文件 10480 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.tlog\li
文件 1122 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.tlog\li
文件 483212 2018-03-14 20:22 Binarization\Binarization\x64\Debug\main.obj
文件 1428480 2018-03-14 20:22 Binarization\Binarization\x64\Debug\vc120.idb
文件 2019328 2018-03-14 20:22 Binarization\Binarization\x64\Debug\vc120.pdb
文件 17563648 2018-03-14 20:34 Binarization\Binarization.sdf
文件 1336 2017-10-08 21:56 Binarization\Binarization.sln
..A..H. 24064 2018-03-14 20:34 Binarization\Binarization.v12.suo
文件 105984 2018-03-14 20:22 Binarization\x64\Debug\Binarization.exe
文件 578768 2018-03-14 20:22 Binarization\x64\Debug\Binarization.ilk
文件 2886656 2018-03-14 20:22 Binarization\x64\Debug\Binarization.pdb
目录 0 2018-03-14 20:22 Binarization\Binarization\x64\Debug\Binarization.tlog
目录 0 2018-03-14 20:22 Binarization\Binarization\x64\Debug
目录 0 2018-03-14 20:09 Binarization\Binarization\x64
目录 0 2018-03-14 20:09 Binarization\x64\Debug
目录 0 2018-03-14 20:22 Binarization\Binarization
目录 0 2018-03-14 20:09 Binarization\x64
目录 0 2018-03-14 20:34 Binarization
----------- --------- ---------- ----- ----
............此处省略2个文件信息
相关资源
- 基于UDP协议的视频传输
-
convert_cascade 转换xm
l文件 含dll文件 - 基于OPENCV的多种特征提取总结
- 运动车辆检测跟踪系统vc源码opencv
- opencv数码管识别程序
- OpenCV2.4.3 windows版本
- opencv stitching拼接
- OpenCV自带视频测试文件vtest.avi
- Mastering OpenCV with Practical Computer Visio
- opencv-3.4.0编译失败需要的boostdesc_bgm
- VS2015+Opencv310的X86动态库lib
- 基于OpenCV的红外运动目标检测与跟踪
- 手势检测基于OpenCV
- opencv 红绿灯识别 运动物体识别
- freeglut,包括.dll、.h和.lib文件,完美
- Opencv摄像头校正
- OpenCV识别出两张图片的人脸,并比较
- 基于QtOpenCV实现GraphCuts算法
- 基于颜色识别的火焰检测算法的open
- opencv红绿灯识别样本北京市的红绿灯
- 基于OpenCV的火灾视频识别方法研究
- opencv人脸检测训练用到的正样本图像
- opencv haartraining 合并.vec文件的工具
- OpenCV3入门pdf
- 基于OpenCV的红点识别
- slam 开源代码ptam and ptamm
- opencv3.4.3 mingw32编译
- 圆形公章的定位检测
-
haarcascade_mcs等所有识别xm
l文件 - 利用OpenCV在VS2015平台下对进行人脸识
评论
共有 条评论