Opencv step by step - 自适应阈值
上个博客提到的阈值化只是针对图像全局进行阈值化,opencv提供了一个更好的函数cvAdaptiveThreshold,可以做到局部特征的阈值化,这样一来,
整个图像的信息可以被更好的提取。
#include <cv.h>
#include <highgui.h>
#include "math.h" IplImage *img_gray = NULL, *img_thres = NULL, *img_adaptive = NULL; int main(int argc, char **argv)
{ double threadshould = 100.0;
int threadshould_type = CV_THRESH_BINARY;
int adaptive_method = CV_ADAPTIVE_THRESH_GAUSSIAN_C;
int block_size = 11;
double offset = 5; if(NULL == (img_gray = cvLoadImage(argv[1], CV_LOAD_IMAGE_GRAYSCALE)))
return -1; img_thres = cvCreateImage(cvGetSize(img_gray), img_gray->depth, 1);
img_adaptive = cvCreateImage(cvGetSize(img_gray), img_gray->depth, 1); cvThreshold(img_gray, img_thres, threadshould, 255, threadshould_type);
cvAdaptiveThreshold(img_gray, img_adaptive, 255, adaptive_method, threadshould_type, block_size, offset); cvNamedWindow("ORG", 1);
cvNamedWindow("THRES", 1);
cvNamedWindow("ADAPTIVE_THRES", 1); cvShowImage("ORG", img_gray);
cvShowImage("THRES", img_thres);
cvShowImage("ADAPTIVE_THRES", img_adaptive); while(1) { if(cvWaitKey(10) & 0x7f == 27)
break; } cvDestroyWindow("ORG");
cvDestroyWindow("THRES");
cvDestroyWindow("ADAPTIVE_THRES");
cvReleaseImage(&img_gray);
cvReleaseImage(&img_thres);
cvReleaseImage(&img_adaptive); }
这里使用了阈值化和自适应阈值的比较。可以简单的看效果,明显是自适应阈值比较容易提取特征(虽然左图好看一点):
Opencv step by step - 自适应阈值的更多相关文章
- opencv —— threshold、adaptiveThreshold 固定阈值 & 自适应阈值 进行图像二值化处理
阈值化 在对图像进行处理操作的过程中,我们常常需要对图像中的像素做出取舍与决策,直接剔除一些低于或高于一定值的像素. 阈值分割可以视为最简单的图像分割方法.比如基于图像中物体与背景之间的灰度差异,可以 ...
- opencv:自适应阈值
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- opencv——自适应阈值Canny边缘检测
前言 Canny边缘检测速度很快,OpenCV中经常会用到Canny边缘检测,以前的Demo中使用Canny边缘检测都是自己手动修改高低阈值参数,最近正好要研究点小东西时,就想能不能做个自适应的阈值, ...
- opencv中自适应阈值函数的实现(c++)
根据<面向飞机蒙皮接缝的线结构光检测技术研究_张卡>论文中的原理,编写了自适应阈值函数 原理: //计算灰度最大最小值 void MaxGrayValue(Mat image,int &a ...
- 自适应阈值分割—大津法(OTSU算法)C++实现
大津法是一种图像灰度自适应的阈值分割算法,是1979年由日本学者大津提出,并由他的名字命名的.大津法按照图像上灰度值的分布,将图像分成背景和前景两部分看待,前景就是我们要按照阈值分割出来的部分.背景和 ...
- WPF Step By Step 完整布局介绍
WPF Step By Step 完整布局介绍 回顾 上一篇,我们介绍了基本控件及控件的重要属性和用法,我们本篇详细介绍WPF中的几种布局容器及每种布局容器的使用场景,当 然这些都是本人在实际项目中的 ...
- python-opencv 图像二值化,自适应阈值处理
定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果. 一幅图像包括目标物体.背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用 ...
- OpenCV_基于局部自适应阈值的图像二值化
在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方 ...
- OpenCV学习笔记(7)——图像阈值
简单阈值,自适应阈值,Otsu's二值化等 1.简单阈值 当像素值高于阈值时,我们给这个像素赋予一个新值,否则给他赋予另一个值.这个函数就是cv2.threshhold().这个函数的第一个参数就是原 ...
随机推荐
- [QualityCenter]设置工作流脚本-缺陷字段值发生变化时的处理
需求:缺陷状态发生不同变化时,系统会的自动处理一些字段值的变化 在脚本编辑器找到Defects_Bug_FieldChange函数,然后填写以下代码: Sub Defects_Bug_FieldCha ...
- ruby直接底层连接数据库
class MysqlTest #Code here require "mysql" def testMysql dbc=Mysql.real_connect('localhost ...
- Eclipse報錯:Could not find or load main class
代碼正確,但在Eclipse中無法運行,一直報錯: Could not find or load main class
- 修复 Java 内存模型,第 2 部分——Brian Goetz
转自Java并发大师Brain Goetz:http://www.ibm.com/developerworks/cn/java/j-jtp03304/ (中文地址) http://www.ibm.co ...
- PL/SQL之--流程控制语句
一.简介 像编程语言一样,oracle PL/SQL也有自己的流程控制语句.通过流程控制语句,我们可以在PL/SQL中实现一下比较复杂的业务逻辑操作.而无需到程序中去控制,在一定程度上提高了效率,这也 ...
- nyoj 139 我排第几个--康拓展开
我排第几个 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说 ...
- confluence wiki搭建使用
1.准备工作 服务器环境:centos6.6x64 IP:172.16.0.203 1)软件包,地址下载 http://pan.baidu.com/s/1ntlBCQP ,把几个 软件包放在服务器上 ...
- php databases support off fail zabbix
php 安装参数./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable- ...
- IOS版本被拒的经历
IOS版本被拒的经历: 1,登陆方式依赖外部平台 因为我们的APP是只用微博登陆,想做成类似meerkat类型的,也能各种消息都同步微博. 结果当然行不通,这个确实是不听好人言,网上多个人都说过这个问 ...
- Reading WebSites
oracle http://www.eygle.com/archives/2006/02/the_sun_repays_industriously.html 蕃茄土豆: https://pomotod ...