利用OpenCV实现图像的阈值分割
来源:互联网 发布:wifi网络优化大师 编辑:程序博客网 时间:2024/05/16 07:59
对lena、baboon图像进行阈值分割,像素大于100的被赋值为255,小于100被赋为0.
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
void sum_rgb( IplImage* src, IplImage* dst ) {
// Allocate individual image planes.
IplImage* r = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
IplImage* g = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
IplImage* b = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
// Temporary storage.
IplImage* s = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
// Split image onto the color planes.
cvSplit( src, r, g, b, NULL );
// Add equally weighted rgb values.
cvAddWeighted( r, 1./3., g, 1./3., 0.0, s );
cvAddWeighted( s, 2./3., b, 1./3., 0.0, s );
// Truncate values above 100.
cvThreshold( s, dst, 100, 255, CV_THRESH_BINARY );
cvReleaseImage( &r );
cvReleaseImage( &g );
cvReleaseImage( &b );
cvReleaseImage( &s );
}
int main(int argc, char** argv)
{
// Create a named window with a the name of the file.
cvNamedWindow( argv[1], 1 );
// Load the image from the given file name.
IplImage* src = cvLoadImage( argv[1] );
IplImage* dst = cvCreateImage( cvGetSize(src), src->depth, 1);
sum_rgb( src, dst);
// Show the image in the named window
cvShowImage( argv[1], dst );
// Idle until the user hits the "Esc" key.
while( 1 ) { if( (cvWaitKey( 10 )&0x7f) == 27 ) break; }
// Clean up and don’t be piggies
cvDestroyWindow( argv[1] );
cvReleaseImage( &src );
cvReleaseImage( &dst );
return 0;
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
void sum_rgb( IplImage* src, IplImage* dst ) {
// Allocate individual image planes.
IplImage* r = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
IplImage* g = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
IplImage* b = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
// Temporary storage.
IplImage* s = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
// Split image onto the color planes.
cvSplit( src, r, g, b, NULL );
// Add equally weighted rgb values.
cvAddWeighted( r, 1./3., g, 1./3., 0.0, s );
cvAddWeighted( s, 2./3., b, 1./3., 0.0, s );
// Truncate values above 100.
cvThreshold( s, dst, 100, 255, CV_THRESH_BINARY );
cvReleaseImage( &r );
cvReleaseImage( &g );
cvReleaseImage( &b );
cvReleaseImage( &s );
}
int main(int argc, char** argv)
{
// Create a named window with a the name of the file.
cvNamedWindow( argv[1], 1 );
// Load the image from the given file name.
IplImage* src = cvLoadImage( argv[1] );
IplImage* dst = cvCreateImage( cvGetSize(src), src->depth, 1);
sum_rgb( src, dst);
// Show the image in the named window
cvShowImage( argv[1], dst );
// Idle until the user hits the "Esc" key.
while( 1 ) { if( (cvWaitKey( 10 )&0x7f) == 27 ) break; }
// Clean up and don’t be piggies
cvDestroyWindow( argv[1] );
cvReleaseImage( &src );
cvReleaseImage( &dst );
return 0;
}
- 利用OpenCV实现图像的阈值分割
- 利用最大熵进行阈值分割从而实现灰度图像的二值化的原理概要及OpenCV代码
- opencv 图像阈值分割图像
- opencv阈值法分割图像
- 《光照不均匀图像的灰度波动局部阈值分割》opencv编码实现
- Matlab实现图像阈值分割
- python+opencv实现阈值分割
- 图像阈值分割---基本的全局阈值
- 基于opencv的阈值分割
- Opencv 图像分割: 阈值化分割 区域分割 边缘分割
- OpenCV实现图像阈值化
- 批量图像自动分割 grabcut+阈值分割 opencv
- OpenCV图像的阈值化
- opencv图像的阈值操作
- OpenCV实现局部动态阈值分割
- 基于阈值法的图像分割技术
- 基于阈值法的图像分割技术
- 图像分割自适应阈值的求取
- Ufw使用指南
- android布局属性
- nutch与hadoop
- Linux USB驱动框架分析(三)
- wifi 驱动 进阶11
- 利用OpenCV实现图像的阈值分割
- Windows 常用API汇总
- FSBII(四)class CWebBrowser2 : public CWnd
- 如何在独立服务器上安装和配置 SharePoint 集成
- Linux USB驱动框架分析(四)
- jade template 学习笔记
- 开发管理 CheckLists(20) -敏捷开发 Scrum每日例会
- Linux USB驱动框架分析(五)
- 嵌入式开发环境的搭建