例5-2 cvThreshold函数的用法

本篇博客介绍了一个使用C语言实现的RGB图像处理程序。该程序通过将彩色图像转换为灰度图像并应用阈值化处理来展示基本的图像处理技术。首先分离出图像的红绿蓝三个颜色通道,然后计算每个像素的加权平均值以生成灰度图像,并应用阈值化以突出显示特定亮度级别的像素。
#include "stdio.h"
#include "cv.h"
#include "highgui.h"
void sum_rgb(IplImage*src, IplImage* dst){
 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);
 cvSplit(src, r, g, b,NULL);
 IplImage* s =cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
 cvAddWeighted(r,1./3., g, 1./3., 0.0, s);
 cvAddWeighted(s, 2./3., b, 1./3., 0.0,s);
 cvThreshold(s, dst,100, 100, CV_THRESH_TRUNC);
 cvReleaseImage(&r);
 cvReleaseImage(&g);
 cvReleaseImage(&b);
 cvReleaseImage(&s);
}
int main(){
 cvNamedWindow("lena");
 IplImage* src = cvLoadImage("lena.bmp");
 IplImage* dst = cvCreateImage(cvGetSize(src),src->depth, 1);
 sum_rgb(src,dst);
 cvShowImage("lena",dst);
 while(1){
  if((cvWaitKey(10)&0x7f)== 27)
   break;
 }
 cvDestroyWindow("lena");
 cvReleaseImage(&src);
 cvReleaseImage(&dst);
 return0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值