2019年3月9日
- 指针地址向后走
int a[5] ={1,100,200,300}
int *p=a
–>*p==1
–>*p++100 指针移动
–> p0x00000000 内存地址
int a=1
int *p=&a 指针赋值常量,需要加寻址符号
–>*p==1
–>*p++
CV_8UC1,CV_8UC2,CV_8UC3。
(最后的1、2、3表示通道数,譬如RGB3通道就用CV_8UC3)
3.InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。
2019年11月19日11:12:26
1.用normalize可以归一化图像,在光照有梯度的时候,可以指定一定范围来归一化,使得本来有梯度的图像像素值都归类同一个像素值。
equalHist直方图均衡化无法消除光照影响。
2.领域生长法
3.在opencv中,坐标的原点在左上角,与x轴平行的方向为角度为0,逆时针旋转角度为负,顺时针旋转角度为正。
数据类型
CV_(S|U|F)C
S = 符号整型
U = 无符号整型
F = 浮点型
C:代表一张图片的通道数,比如:
1–灰度图片–grayImg 单通道图像
2–RGB彩色图像 3通道图像
3–带Alph通道的RGB图像 4通道图像
CV_8UC1 是指一个8位无符号整型单通道矩阵,
CV_32FC2是指一个32位浮点型双通道矩阵
cv::Mat是一个类(Class),而CvMat是一个Struct
CvMat结构体中比较常用的成员
1.宽度(width)
2.高度(height)
3.行长度(step,单位为字节)
4.指向图像块的数据指针(data)。
cv::Mat中提供ptr函数访问任意一行像素的首地址
用指针遍历
int nl = image.rows; //行数
int nc = image.cols * image.channels();
for (int j = 0; j<nl; j++)
{
uchar* data = image.ptr(j);
for (int i = 0; i<nc; i++)
{
data[i] = data[i] / div*div + div / 2;
}
}
CV_32F 用 Mat.at(y,x)