Opencv
2022-08-31 14:12:51 1 举报
AI智能生成
Opencv常规知识
作者其他创作
大纲/内容
图像基本操作
图像构成
一般分为有颜色图像和无颜色图像
像素点在[0,255]之间,值越小越黑(像素值为0),反之亦然
彩色图像:有颜色通道,一般读取的图像即为(h,w,c),如RGB,BGR
灰度图像:即无通道,一般读取的图像即为(h,w)
数据读取-图像
opencv读取的彩色图片的颜色通道格式是BGR,所以如果要用其他函数展示opencv读取的图片,最好要转变成相同的格式,如RGB,BGR等
读取函数:img = cv2.imread(filepath,cv2.IMREAD_COLOR) 其中cv2.IMREAD_COLOR:彩色图像 ,cv2.IMREAD_GRAYSCALE:灰度图像
显示图像:
数据读取-视频
cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。
如果是视频文件,直接指定好路径即可
代码模板:
截取部分图像数据
处理nparray数据,对应位置切片即可,cat=img[0:50,0:200]
颜色通道提取
b,g,r=cv2.split(img) or b1,g1,r1=img[:,:,0],img[:,:,1],img[:,:,2]
边界填充
cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType)
图像融合
要相同大小的图片才可以进行,img_dog = cv2.resize(img_dog, (500, 414))
R = ax1+bx2+b 融合的方式:有权重有偏置 res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.6, 0)
重新改变大小,进行比值计算 x4倍,y4倍扩大 res = cv2.resize(img, (0, 0), fx=4, fy=4) plt.imshow(res)
R = ax1+bx2+b 融合的方式:有权重有偏置 res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.6, 0)
重新改变大小,进行比值计算 x4倍,y4倍扩大 res = cv2.resize(img, (0, 0), fx=4, fy=4) plt.imshow(res)
图像展示
展示所有的图片,使用np的堆叠功能:
水平堆叠:hsres = np.hstack((blur,aussian,median))
垂直堆叠:vsres = np.vstack((blur,aussian,median))
水平堆叠:hsres = np.hstack((blur,aussian,median))
垂直堆叠:vsres = np.vstack((blur,aussian,median))
.图像处理
图像阈值
ret, dst = cv2.threshold(src, thresh, maxval, type)
图像平滑(类似卷积操作)
均值滤波=简单的平均卷积操作 ; blur = cv2.blur(img, (3, 3))
方框滤波=基本和均值一样,可以选择归一化,只是多了一个参数;box = cv2.boxFilter(img,-1,(3,3), normalize=True)
高斯滤波=高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的
中值滤波=相当于用中值代替; median = cv2.medianBlur(img, 5)
形态学
腐蚀操作(cv2.erode)
膨胀操作(cv2.dilate)
开运算与闭运算(cv2.morphologyEx)
梯度运算, 梯度=膨胀-腐蚀,也就相当于找图片不同像素点之间的差异大小,类似求导的感觉,所以叫梯度 ,cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)
礼帽与黑帽((cv2.morphologyEx))
图像梯度
Sobel算子
Scharr算子
Laplacian算子
Canny边缘检测(cv2.Canny)
图像金字塔:也即对图像进行提取特征的操作,放大或者缩小图像
高斯金字塔
拉普拉斯金字塔
图像轮廓
提取轮廓:cv2.findContours(img,mode,method)
绘制轮廓: 1、先复制;2、调用 cv2.drawContours
轮廓特征(contours)
轮廓近似(cv2.approxPolyDP)
轮廓-边界矩形(cv2.boundingRect)
轮廓-外接圆(cv2.minEnclosingCircle)
模板匹配
概念
函数(cv2.matchTemplate)
详解
可视化
匹配多个对象
直方图
概念: 统计图像中相同像素点值的个数
直方图直方图均衡化:cv2.equalizeHist
自适应直方图均衡化: cv2.createCLAHE
傅里叶变换
概念和作用
函数(cv2.dft()和cv2.idft())
图像特征
Harris角点检测
尺度不变特征变换-Scale Invariant Feature Transform(SIFT)
图像尺度空间
多分辨率金字塔: 不同尺度(大小)下的图片都要获取图像尺度空间
高斯差分金字塔(DOG)
DOG空间极值检测
关键点精确定位
消除边界响应
特征点的主方向
实现(cv2.xfeatures2d.SIFT_create())
特征匹配
概念:能够获得图像的SIFT特征后,可以对多幅图像进行特征匹配,获取需要的信息
Brute-Force蛮力匹配
随机抽样一致算法(Random sample consensus,RANSAC)
单应性矩阵
0 条评论
下一页