一、Opencv入门
第一节:图片的读取和展示
import cv2
img = cv2.imread('image0.jpg',1)
cv2.imshow('image',img)
cv2.waitKey (0)
第二节:Opencv模块组织结构
D:\opencv3.4\opencv\build\include\opencv2中
calib3d:相机的校准和3D内容
core:非常重要,完全掌握。记录的opencv中的基本矩阵操作,绘图操作
dnn:神经网络相关的模块
features2d:图像角点检测相关,图像匹配会用到
flann:聚类相关,邻域搜索相关的
highgui:图形相关交互比较重要
imgcodecs/imgproc:滤波处理直方图统计都要用到
ml:机器学习模块
objdetect:物体检测模块了解即可
photo:图片修复、去噪
shape:很少用到
stitching:拼接模块:360全景相机
video/videoio/videostab:视频模块
第三节:图片写入
import cv2
# 1 文件的读取 2 封装格式解析 3 数据解码 4 数据加载
img = cv2.imread('image0.jpg',1)
cv2.imshow('image',img)
# jpg png 1 文件头 2 文件数据
cv2.waitKey (0)
# 1.14M 130k
import cv2
img = cv2.imread('image0.jpg',1)
cv2.imwrite('image1.jpg',img) # 1 name 2 data
第一个为文件写入名 第二是解码后的原始图片数据
第四节:不同图片质量保存
1)jpg的操作
import cv2
img = cv2.imread('image0.jpg',1)
cv2.imwrite('imageTest.jpg',img,[cv2.IMWRITE_JPEG_QUALITY,50])
#1M 100k 10k 0-100 有损压缩
cv2.imwrite的第三个参数设置图片质量 范围0-100(有损压缩)
尝试改为20查看图片大小:
100k还能保证图片的质量,如果到10K以下就会出现马赛克,
2)png的操作
# 1 无损 2 透明度属性
import cv2
img = cv2.imread('image0.jpg',1)
cv2.imwrite('imageTest.png',img,[cv2.IMWRITE_PNG_COMPRESSION,0])
# jpg 0 压缩比高0-100 png 0 压缩比低0-9
png:压缩是无损的还有透明度属性
设置为0的时候数字比越小压缩比最低
总结:
对于jpg:数字越小 压缩比越高图片损失严重 范围:0-100
对于png:数字越小,png压缩比低 范围:0-9
第五节:像素操作
1.像素:一个个放大的小方块
2.RGB 256种
3.颜色深度 8bit:0-255 256的三次方这么多颜色
4.图片的宽高 640*480:宽有640个像素点,高有480个像素点
5.一个图片1.14M如何计算得来 1.14M=720 * 547 * 3 * 8 bit / 8 =1.14M
宽 * 高 * RGB三个颜色分量 * 每个颜色分量有8bit
得到的是bit 在/8得到(B)
6.RGB alpha就是描绘透明度信息
在这个函数中 cv2.imread(‘image0.jpg’,1) 0代表灰度 1代表彩色 2就代表有alpha通道的
7.颜色存储格式除了RGB 还有bgr 第一个b排的不是红色而是蓝色
第六节:像素读取写入
import cv2
img = cv2.imread('image0.jpg',1)
(b,g,r) = img[100,100]
print(b,g,r)# bgr
#10 100 --- 110 100
for i in range(1,100):
img[10+i,100] = (255,0,0)
cv2.imshow('image',img)
cv2.waitKey(0) #0就是一直等待,1000就等待1000 ms
打印出100,100这个像素点的b g r的值为39 46 49
这里是bgr颜色不是rgb
并且从x=10到x=100,y不变画一条竖线。因为我们是bgr方式存储所以255,0,0是蓝色