1、图像处理

1.1 模型与转换

1.1.1RGB:三色模型。

像素:从0到1表示;划分标准,如8UC3(8位无符号整数,3通道,2进制下2^8=256),
则像素划分成0-255。
RGBA模型,多了一个维度A,表示透明度。

1.1.2YUV模型

YUV模型用于电视信号系统较多。Y亮度,U红色分类与亮度Y的差值,V蓝色分量与像素Y的差值
亮度:由黑到白。
黑白电视只需要Y通道,而彩电,就取三通道信号。

1.1.3HSV模型

Hue 色度
Saturation饱和度
Value亮度

1.1.4Lab模型

1.1.5GRAY模型

1.1.6不同模型之间的转化:两个函数

第一个cvtColor()表示颜色模型的转化image.png
第二个convertTo表示数据类型的转换

image.png1.2多通道的合并与分离

split()和merge()

1.2.1split()

image.png
image.png

  1. char d[] = {1,2,3,4,5,6,7,8,9,10,11,12};
  2. Mat m(2, 2, CV_8UC3, d);
  3. Mat channels[3];
  4. split(m, channels);
  5. /*
  6. channels[0] =
  7. [ 1, 4;
  8. 7, 10]
  9. channels[1] =
  10. [ 2, 5;
  11. 8, 11]
  12. channels[2] =
  13. [ 3, 6;
  14. 9, 12]
  15. */

1.2.2merge()

image.png
image.png

  1. Mat m1 = (Mat_<uchar>(2,2) << 1,4,7,10);
  2. Mat m2 = (Mat_<uchar>(2,2) << 2,5,8,11);
  3. Mat m3 = (Mat_<uchar>(2,2) << 3,6,9,12);
  4. Mat channels[3] = {m1, m2, m3};
  5. Mat m;
  6. merge(channels, 3, m);
  7. /*
  8. m =
  9. [ 1, 2, 3, 4, 5, 6;
  10. 7, 8, 9, 10, 11, 12]
  11. m.channels() = 3
  12. */

操作一下:

  1. int main()
  2. {
  3. Mat img,output;
  4. img = imread("D:/OpenCV/ycy2.jpg");
  5. if (img.empty())
  6. {
  7. cout << "error!";
  8. }
  9. Mat channels[3];
  10. split(img, channels);
  11. imshow("1", channels[1]);
  12. imshow("2", channels[2]);
  13. imshow("3", channels[0]);
  14. merge(channels, 3,output);
  15. imshow("ycy", output);
  16. waitKey(0);
  17. return 0;
  18. }

image.png

1.3图像操作处理

1.3.1 寻找最大最小值

image.png
通过指针/引用 返回最大最小值以及位置

1.3.2 均值和方差

image.png
image.png

1.3.3 两图像之间的比较操作

max:两图像比较,取大
min

1.3.4 逻辑运算

image.png
image.png

1.3.5 图像二值化

函数1:threshold()
image.png
type:
image.png
THRESH_BINARY
THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO
THRESH_TOZERO_INV
THRESH_OSTU
THRESH_TRIANGLE
image.png
其中,
THRESH_OSTU
THRESH_TRIANGLE
是获取阈值的方法,而非阈值比较方法的标志,它俩可以和前面的五种方法混合使用,如“THRESH_BINARY|THRESH_OSTU”

这种方法是全局阈值,对于阴影之中的黑白无法有效的识别出来。据此,还有另一个函数可供使用:

adaptiveThreshold()
输入图像只能说U8C1 Mat格式。
image.png
image.png
adaptiveMethod分为ADAPTIVE_THRESH_MEAN:
image.png

image.png

1.3.6 图像连接

hconcat
vconcat
水平/竖直连接

1.3.7 图像尺寸变换

resize()
image.png
dsize和fx fy可以同时调整输出图像的参数,当两个参数不一致时,dsize优先级更高。

1.3.8 翻转变换

image.png
flipcode
image.png

1.3.9 旋转与仿射

旋转:
Mat getRotationMatrix()
获得旋转矩阵,此函数返回一个3*3的旋转矩阵。
image.png

仿射:warpAffine()
仿射,即放缩+旋转
image.png

1.3.10 透视变换

image.png
image.png
image.png
该函数返回一个3*3的透视矩阵
image.png
image.png

1.4在图像上绘制图形

2.页面交互

2.1进度条显示

函数:
image.png
value 创建后,滑块位置由此变量定义。
count滑动条的最大取值