《学习OpenCV》练习3-7

本文介绍了一个使用OpenCV库进行图像处理的技术示例。通过加载图片并将其转换为灰度图,然后采用阈值处理方法来突出图像中的特征。具体步骤包括获取图像的最大最小灰度值,计算阈值,并根据该阈值对图像进行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "cv.h"
#include "highgui.h"
#include "stdio.h"

int main()
{
	IplImage* img = cvLoadImage( "homework_3-7.jpg" );
	IplImage* clone1, *clone2;
	IplImage* dst = cvCreateImage( cvGetSize(img), img->depth, 1 );	//创建一与原图像img大小和数据类型上一致、单通道的图像dst
	cvNamedWindow( "homework_3-7", CV_WINDOW_AUTOSIZE );
	cvSplit( img, dst, 0, 0, 0 );									//将img图像分割至dst,NULL,NULL,NULL中
//	cvShowImage( "homework_3-6", dst );
	clone1 = cvCloneImage( dst );									//克隆dst两次
	clone2 = cvCloneImage( dst );
	double max, min;
	cvMinMaxLoc( dst, &min, &max );									//将dst中的最小值、最大值分别写入min,max
	double thresh = ( max - min )/2;
	printf( "max = %f\nmin = %f\nthresh = %f\n", max, min, thresh );
	cvSet( clone1, cvScalar( thresh ));								//利用内联函数cvScalar为结构体CvScalar赋值thresh,利用cvSet将clone1的所有通道所有值设置为thresh
	cvZero( clone2 );
	cvCmp( dst, clone1, clone2, CV_CMP_GE );						//compare函数,比较dst与clone1,若dst>=clone1,则该点写入clone2
	cvSubS( dst, cvScalar( thresh/2 ), dst, clone2 );

	/*若dst < clone1的点,则dst减去thresh/2,即整个程序作用是将dst中的某点小于dst所有点的中间值/2,则该点减去该中间值thresh/2*/
	cvShowImage( "homework_3-7", dst );
	cvWaitKey( 0 );
	cvReleaseImage( &dst );

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值