OpenCV 2学习笔记

本文是学习OpenCV 2的笔记,通过实例讲解在QT与VS环境下可能出现的不同行为,探讨整数除法与模运算的效率,并介绍如何正确使用矩阵步长和指针操作。同时,文章还涉及了图像处理中的对比度调整和颜色通道操作。

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



参考书目:《OpenCV 2 计算机视觉编程手册_中文版》

————————————————————————————————————————————————————————————————

chapter02


// *data++= *data/div*div + div/2;  这个在QT上跑会出错,在VS没事。可改成

*data = *data / div*div + div / 2;
data += 1; 


// 用模运算代替整数除法的  被除数整数倍数(总之也是缩小范围)

// 这个运算要存取像素的两次,所以比较慢
int v = *data;
//*data++ = v - v%div +div/2;
*data = v - v%div + div / 2;
data += 1;


// 这个我再QT得出的结果是错的,div=64。实际上是6,但我的QT里面确实5

 int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));


// step是矩阵中行的长度,单位为字节,可以用step和这个指针相加即得这个点的下一行元素
data += step;


// 这里不用*data++,这样可以不改变data的指针所指地址。确保

*(data + i) = *(data+i)&mask + div / 2;


// 在contrast.cpp里面,少了itout++

for (; it != itend; it++, itup++, itdown++,itout++)


// 我还没想出来为什么是.step1()

int step = image.step1();


指针所指地址不变,所指内容可以变

// const uchar* previous = image.data;


// mask要是灰度图像

logo.copyTo(imageROI, mask);


// logo应该一定是灰度图,所以这里加上在channels.at(1),那么logo就是蓝色的
imageROI = channels.at(1);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值