opencv实战从0到N (8)—— 积分图求解

opencv实战从0到N (8)—— 积分图求解

求积分图及任意区域像素和

1,积分图就是图像上一点(x,y)的左上面积之和,利用积分图可以对图像中的任意矩形区域,

利用其四个点的积分值的加减运算即可求出此区域的像素之和,对于图像需要求和的特征可以加快运算速度,

只需计算一次积分图,后续即可使用查询(结合加减运算)的方式获得特征值。

2,函数:integral(image, imageIntegral, CV_32F);

计算任意区域的像素和:

float integra_rect(Mat& image,int x1,int y1,int x2,int y2)

{

float dst_val = image.at<float>(x2,y2)+ image.at<float>(x1, y1) - image.at<float>(x1, y2) - image.at<float>(x2, y1);

return dst_val;

}

3,测试:


void main()

{

Mat src = imread("2.jpg");

Mat image;

cvtColor(src, image, CV_RGB2GRAY); //原图像是三通道,积分图也是三通道

Mat imageIntegral;

integral(image, imageIntegral, CV_32F); //计算积分图

normalize(imageIntegral, imageIntegral, 0, 255, CV_MINMAX); //归一化,方便显示

Mat imageIntegralNorm;

convertScaleAbs(imageIntegral, imageIntegralNorm); //精度转换为8位int整型



imshow("src", image);

imshow("dst", imageIntegralNorm);

cvWaitKey(0);



}

更多内容关注微信公众号:ML_Study

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arthur.AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值