cvThreshold
看了很多很坑的文章。
呵呵哒。而且基本上都是一个地方转载的,英文翻译我用你单独给一个词条么?就不能负点儿责?
cvThreshold(img4, img3, 0, 128, CV_THRESH_OTSU);
过于这个函数搜索的结果,真的是哪哪儿都是同样的描述,而且根本不是给人写的。
下面是亲测的实验结果。
/* Applies fixed-level threshold to grayscale image.把固定阈值应用到灰度图上
This is a basic operation applied before retrieving contours
在检索轮廓前这是一个基本操作。
第一个参数表示灰度图中可以被判定为白色的最低标准,如果灰度图中的数值大于threshold那么就可以被认定为白色。
max_value决定越过阈值的点的亮度,或者说是从0-255中间挑一个亮度进行显示。如果是255就是白的。如果是0就是黑的,中间表示不同程度的灰
threshold_type
0是亮度过线的按照max_value进行显示
1是亮度没过线的按找到max_value显示
2是 值大于阈值的话,是阈值,也就是不能最亮按照阈值显示
3 值大于阈值的话是值,否则是0,也就是限了能通过的最低限,你有多亮,就显示多亮,就像成绩一样,可以不合格,不合格就悲剧,但是成绩合格的话,有多高算多高。不限高分
4高分按0显示,低分有多低显示多低。
7 那个参数不是给这个设计的,进去会报错
CV_THRESH_OTSU 是8 进去的话,通过 Otsu 算法自行选择阈值,此时对于threshold的设定不在起作用。
*/
CVAPI(double) cvThreshold( const CvArr* src, CvArr* dst,
double threshold, double max_value,
int threshold_type );
#include <cv.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>//这句代码出现在第一行会报错,你信不信!!! using namespace cv;
using namespace std; int main()
{
// 读入一张图片(游戏原画)
//Mat img = imread("1.png",1);
//Mat img2 = cvCreateMat(img.rows, img.cols, CV_8UC1); //IplImage * img = cvLoadImage("1.png");
IplImage *img = cvLoadImage("lena.jpg");
IplImage * img2 = cvCreateImage(cvSize(img->width,img->height), , );//
IplImage * img3 = cvCreateImage(cvSize(img->width, img->height), , );//
IplImage * img4 = cvCreateImage(cvSize(img->width, img->height), , ); cvCvtColor(img, img2, CV_BGR2GRAY);//要亮一些
cvCvtColor(img, img4, CV_RGB2GRAY);
cvThreshold(img4, img3, , , CV_THRESH_OTSU);
cvShowImage("s", img);
cvShowImage("s2", img2);
cvShowImage("s3", img3);
//1.png 165646
//1.jpg 9437184
// 创建一个名为 "游戏原画"窗口
//cout << img->depth << endl;
//cout << img.elemSize() << endl;
//cout << img.size().width << endl;
//cout << img.cols << endl;
//cout << img.depth() << endl; waitKey(); }
cvThreshold(img4, img3, 0, 128, CV_THRESH_OTSU);
为了自己能够跑起来这样一个函数建议输入的数值顺序是:
100 128 0
然后只更改第一个参数50、150 200
然后基本了解第一个所谓阈值的参数
然后更改第二个参数
50 255
了解第二个参数max_value
第三个是类型。
这个先试0然后试1 然后 条件表达式就能理解了。
cvThreshold的更多相关文章
- OpenCV中对图像进行二值化的关键函数——cvThreshold()。
函数功能:采用Canny方法对图像进行边缘检测 函数原型: void cvThreshold( const CvArr* src, CvArr* dst, double threshold, doub ...
- cvThreshold()函数理解
对图像二值化函数cvThreshold的理解 Threshold 对数组元素进行固定阈值操作 void cvThreshold( const CvArr* src, CvArr* dst, doubl ...
- 二值化函数cvThreshold()参数CV_THRESH_OTSU的疑惑【转】
查看OpenCV文档cvThreshold(),在二值化函数cvThreshold(const CvArr* src, CvArr* dst, double threshold, double max ...
- opencv图像二值化的函数cvThreshold()。 cvAdaptiveThreshol
OpenCV中对图像进行二值化的关键函数——cvThreshold(). 函数功能:采用Canny方法对图像进行边缘检测 函数原型: void cvThreshold( const CvArr* sr ...
- cvthreshold 的运用
什么是阈值? 最简单的图像分割的方法. 应用举例:从一副图像中利用阈值分割出我们需要的物体部分(当然这里的物体可以是一部分或者整体).这样的图像分割方法是基于图像中物体与背景之间的灰度差异,而且此分割 ...
- 自己在总结前人经验下弄的几个opencv封装函数
第一个是增加对比度的函数,就是变亮. IplImage* EqualizeHistColorImage(IplImage *pImage) { IplImage *pEquaImage = cvCre ...
- opencv二值化处理
#include "stdafx.h"//对一张图片进行二值化处理 IplImage *pSrclmg =NULL;//载入的图片IplImage *pDeclmg =NULL;/ ...
- opencv 抠图联通块(c接口)
#include "stdio.h" #include "iostream" #include "opencv/cv.h" #include ...
- OpenCV 3.0函数库索引
================================== 前言:值的个数: cvCrossProduct:计算两个三维向量的向量积(叉积): cvCvtColor:将数组的通道从一个颜色空 ...
随机推荐
- selenium 调用JS操作滚动条(java)来解决element not clickable的问题
今天在运行自动化用例的时候,发现总是某个元素提示not clickable.分析原因有可能是页面右下角那个大大的top图标,刚好挡住了我要点击的元素.要解决就得拉动页面,就需要操作页面上的滚动条. ...
- C++基类和派生类之间的转换
本文讲解内容的前提是派生类继承基类的方式是公有继承,关键字public 以下程序为讲解用例. #include<iostream> using namespace std; class A ...
- SqlServer将日期格式DateTime转换成varchar类型
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE( ...
- 怎么保存退出vi编辑
按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件并退出vi:wq! 强制保存文件,并退出v ...
- C语言基础--结构体对齐,位域,联合体
结构体对齐 1--结构体对齐的原因与意义 许多计算机系统对基本数据类型的可允许地址做出了一些限制,要求某种类型的对象的地址必须是某个值K(通常是2,4,8)的倍数,而这个k则被称为该数据类型的对齐模数 ...
- 不适用临时空间,交换变量a和b
方法1: a = a + b; b = a - b; a = a - b; 方法2: a ^= b; b ^= a; a ^= b; 方法3: a = a * b; b = a / b; a = a ...
- Java 的集合框架
Java集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一 ...
- Android实例-为程序创建快捷方式(未测试)
结果: 1.因为只有小米手机,没有三星手机,没法测试.如果哪位神测试过的话,记得M我哦,谢了. 实例代码: unit Unit1; interface uses System.SysUtils, S ...
- Umbraco中的权限体系结构
分为管理用户体系,和成员用户体系,也就是 Users(用户)和Members(成员). 2.1. Users(用户) 用户是对功能操作权限定义的,首先看一下所有Action的Permissions: ...
- [支付]银联支付(对jdk有要求,最好直接使用jdk7)
数据打包发送到银联服务端,银联返回一个html页面,打开这个页面会自动跳转到银联的支付界面,支付完成后会有前台通知和后台通知,需要注意的是后台通知地址的ip必须是公网ip(广域网ip).这个时候需要配 ...