OpenCV基础知识学习 -- 第二弹

获取图像像素指针
  •  CV_Assert(myImage.depth() == CV_8U )
  • Mat.ptr<uchar> (int i=0) 获取像素矩阵的指针,索引 i 表示第几行,从 0 开始计行数
  • 获得当前行指针 const uchar *current = myImage.ptr<uchar>(row)
  • 获取当前像素点 p (row,col) 的像素值 p(row,col) = current[col]
 
像素范围处理 saturate_cast<uchar>
  • saturate_cast<uchar>(-100)  返回 0
  • saturate_cast<uchar>(288) 返回 255
  • saturate_cast<uchar>(100) 返回 100
  • 这个函数的功能是确保 RGB 值的范围在 0-255 之间
 
图像像素的运算操作
加法
add(m1, m2, img);
减法
subtract(m1, m2, img);
乘法
multiply(m1,m2,img);
除法
divide(m1, m2, img);
 
参数1:进行运算的图像1
参数2:进行运算的图像2
参数3:运算结果输出的图像
 
滚动条操作
int createTrackbar(const String& trackbarname, const String& winname,
                              int* value, int count,
                              TrackbarCallback onChange = 0,
                              void* userdata = 0);
 
    createTrackbar("Value", "滚动条", &lightValue,maxValue,onTrack);
参数1:滚动条名称
参数2:滚动条所在的窗口名称
参数3:随滚动条改变的数值变量
参数4:滚动条数值改变的最大值(最小值默认 0)
参数5:响应滚动条数值改变的函数
参数6:附加传递的参数(任意类型)
 
图像位运算
bitwise_and(InputArray src1, InputArray src2,
                              OutputArray dst, InputArray mask = noArray());
参数1:进行运算的 图像1
参数2:进行运算的图像2
参数3:输出结果的图像
       bitwise_and(m1,m2,img);
       imshow( "与运算", img);
       bitwise_or(m1, m2, img);
       imshow( "或运算", img);
       bitwise_xor(m1, m2, img);
       imshow( "异或运算", img);
       bitwise_not(m2, img);
       imshow( "非运算", img);
 
 
 
 
使用 rectangle 绘制图像
rectangle(InputOutputArray img, Rect rec,
                          const Scalar& color, int thickness = 1,
                          int lineType = LINE_8, int shift = 0);
 
参数1:要进行绘制的图像
参数2:要绘制的大小
参数3:图像的颜色
参数4:选择填充还是描边操作  <0 填充 >0描边
参数5:线型类型
参数6:对中心坐标和半径值中的小数位进行移位。
rectangle(m1, Rect(150,150,80,80), Scalar(255,255,0),-1, LINE_8,0);  // 绘制一个 左上角坐标为(150,150),宽80,高80,蓝色填充的图像
rectangle(m2, Rect(200, 200, 80, 80), Scalar(0, 255, 255), -1, LINE_8, 0);  // 绘制一个 左上角坐标为(200,200),宽80,高80,黄色描边的图像
 
 
split(InputArray m, OutputArrayOfArrays mv):分离图像的通道
参数1:要进行分离的图像
参数2:接收分离后的通道数组
 
mixChannels(InputArrayOfArrays src, InputOutputArrayOfArrays dst,
                            const int* fromTo, size_t npairs):将图像通道进行混合
参数1:要进行混合的图像
参数2:混合后的输出图像
参数3:混合数组  例: int channel[] = {1,2,0,0,2,1}   // 第一通道 1 2 混合,第二通道 0 0混合,第三通道 2 1混合
参数4:要混合的图像通道数
posted @ 2020-10-19 22:40  南南子  阅读(105)  评论(0)    收藏  举报