Opecv-Python常用算子库(总结)

文章目录

  • [1 常用算子梗概](#1 常用算子梗概)

1 常用算子梗概

python 复制代码
1.1 读取图像 cv2.imread(filename, flags)
1.2 显示图像 cv2.imshow(winname, mat)
1.3 保存图像 cv2.imwrite(filename, mat)
1.4 改变图像大小 cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)
```python
import cv2
image = cv2.imread("input_image.jpg")
new_width = 200
new_height = 300
resized_image = cv2.resize(image, (new_width, new_height)

cv2.imshow("Resize Image", resized_image)
cv2.waitKey(0)
cv2.destoryAllWindows()

1.5 灰度化 cv2.cvtColor(src, code, dst=None)
1.6 二值化 cv2.threshold(src, thresh, maxval, type)

这里边的type几种形式:

(1)cv2.THRESH_BINARY:大于阈值的像素值设置为maxval,小于等于阈值的像素值设为0

(2)cv2.THRESH_BINARY_INV:大于阈值的像素值设为0,小于等于阈值的像素值设为maxval

(3)cv2.THRESH_TRUNC:大于阈值的像素值设为阈值,小于等于阈值的像素值保持不变

(4)cv2.THRESH_TOZERO:大于阈值的像素值保持不变,小于等于阈值的像素值设为0.

(5)cv2.THRESH_TOZERO_INV:大于阈值的像素值设为0,小于等于阈值的像素值保持不变。

实例:

python 复制代码
import cv2
image = cv2.imread("input_image.jpg", cv2.IMREAD_GRAYSCALE)
thresh_value=28
ret, thresholded_image = cv2.threshold(image, thresh_value, 255, cv2.THRESH_BINARY)
cv2.imshow("Threshold Image",thresholded_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

1.7 边缘检测 cv2.Canny(image, threshold1, threshold2)

1.8 高斯模糊 cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

1.9 中值操作 cv2.medianBlue(src, ksize)

1.10 腐蚀操作 cv2.erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

1.11 膨胀操作 cv2.dilate(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

1.12 开运算 cv2.morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

1.13 闭运算 cv2.morphologyEx()

1.14 寻找轮廓 cnt = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

1.15 图像旋转 cv2.getRotationMatrix2D(center, angle, scale)

1.16 透视变换 cv2.getPerspectiveTransform(src, dst)

1.17 均值滤波 cv2.blur(src, size)

1.18 高斯双边滤波 cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace)

1.19 图像金字塔 cv2.pyrDown(), cv2.pyrUp()

1.20 图像阈值化 cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

1.21 轮廓面积 cv2.contourArea(cnt)

1.22 轮廓周长 cv2.arcLength(cnt, closed)

1.23 图像融合 cv2.addWeighted(src1, alpha, src2, beta, gamma)

1.24 边缘增强 cv2.Sobel(src, ddepth, dx, dy, ksize)

1.25 图像直方图 cv2.calcHist(images, channels, mask, histSize, ranges)

1.26 直方图均衡化 cv2.equalizeHist(src)

1.27 颜色空间转换 cv2.cvtColor(src, code)

1.28 图像梯度 cv2.Scharr(src, ddepth, dx, dy)

1.29 图像尺寸 cv2.getSize(src)

1.30 通道分离 cv2.split(src)

1.31 通道合并 cv2.merge(channels)

1.32 轮廓近似 cv2.approxPolyDP(curve, epsilon, closed)

1.33 图像修补 cv2.inpaint(src, inpaintMask, inpaintRadius, flags)

1.34 绘制直线 cv2.line(img, pt1, py2, color, thickness)

1.35 绘制矩形 cv2.rectangle(img, pt1, pt2, color, thickness)

1.36 绘制圆形 cv2.circle(img, center, radius, color, thickness)

1.37 绘制多边形 cv2.polylines(img, pts, isClosed, color, thickness)

1.38 文字绘制 cv2.putText(img, text, org, fontFace, fontScale, color, thickness)

1.39 图像旋转 cv2.warpAffine(src, M, dsize)

1.40 透视变换 cv2.warpPerspective(src, M, dsize)

1.41 得到图像通道数 cv2.getNumChannels(src)

1.42 图像类型 cv2.getType(src)

1.43 图像平移 cv2.warpAffine(src, M, dsize)

1.44 图像修剪 img[startY:endY, startX:endX]

1.45 图像拼接 cv2.vconcat(src1, src2)

1.46 图像填充 cv2.copyMakeBorder(src, top, bottom, left, right, borderType, value)

1.47 图像反转 cv2.flip(src, flipCode)

1.48 图像模板匹配 cv2.matchTemplate(image, templ, method)

1.49 图像统计 cv2.mean(src)

1.50 图像分割 cv2.grabCut(img, mask, rect, bgdMode, fgdMode, iterCount, mode)

1.51 图像直方图比较 cv2.compareHist(H1, H2, method)

1.52 图像轮廓绘制 cv2.drawContours(image, contours, contourldx, color, thickness)

1.53 图像轮廓矩 cv2.moments(cnt)

1.54 图像轮廓近似 cv2.approxPolyDP(curve, epsilon, closed)

1.55 图像轮廓外接矩形 cv2.boundingRect(cnt)

1.56 图像轮廓最小外接矩形 cv2.minAreaRect(cnt)

1.57 图像轮廓最小闭圆 cv2.minEnclosingCircle(cnt)

1.58 图像轮廓最小闭椭圆 cv2.FitEllipse(cnt)

1.59 图像角点检测 cv2.goodFeaturesToTrack(image, maxCorners, quelityLevel, minDistance)

1.60 图像透视变换 cv2.getPerspectiveTransform(src, dst)

1.61 图像直方图归一化 cv2.normalize(src, dst, alpha, beta, norm_type, dtype, mask)

1.62 图像直方图反向投影 cv2.calcBackProject(images, channels, hist, ranges, scale)

1.63 图像自适应直方图均衡化 cv2.createCLAHE(clipLimit, tileGridSize)

1.64 图像边缘连接 cv2.connectedComponents(image, connectivity, Itype)

复制代码
# 2 实际项目中的总结
```python
2.1 blanck_image = np.zero_like(img)	# 创建空图像
2.2 cv2.drawContours(blanck_image, filterd_contours, -1, (255, 255, 255), thickness=cv2.FILLED)
	在blanck_image上绘制filtered_contours轮廓,-1表示全部绘制,用白色,填充绘制。
2.3 cnt = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
	寻找轮廓
2.4 Cropped = result_img[10:375, 25:560]
	裁剪图像
2.5 result_img = four_point_transform(image, docCnt.reshape(4, 2))  
# 对原始图像进行四点透视变换
在此之前,需要对得到的轮廓进行降序,然后获取近似的轮廓,得到四个角的点。
(1)得到轮廓,对轮廓降序
Contours = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
Contours = contours[1] if imutils.is_cv2 else contours[0]
# 按照面积来降序排序
Contours = sorted(contours, key=cv2.contourArea, reverse=True)
(2)先对近似轮廓降序,再拟合近似轮廓
for c in contours:
peri = cv2.arcLength(c, True)						// 求轮廓的周长
Approx = cv2.approxPolyDP(c, 0.02*peri, True)		// 获取近似的轮廓
If len(Approx)==4:
	docCnt = approx.
	break
(3)确定近似轮廓的四个点
Import imutils.perspective import four_point_transform
Result_img = four_point_transform(image, docCnt.reshape(4, 2))
相关推荐
sali-tec2 天前
C# 基于OpenCv的视觉工作流-章27-图像分割
图像处理·人工智能·opencv·算法·计算机视觉
saoys2 天前
Opencv 学习笔记:腐蚀操作 + 轮廓标记 + 分水岭分割
笔记·opencv·学习
saoys2 天前
Opencv 学习笔记:距离变换(DIST_L1 算法实战 + 归一化)
笔记·opencv·学习
guygg882 天前
图像匹配技术:相关匹配、Hausdorff距离匹配与基于距离变换的Hausdorff距离匹配
图像处理·opencv·计算机视觉
AI科技星2 天前
物理世界的几何建构:论统一场论的本体论革命与概念生成
人工智能·opencv·线性代数·算法·矩阵
fie88893 天前
基于Matlab实现的指纹识别系统流程
opencv·计算机视觉·matlab
sali-tec3 天前
C# 基于OpenCv的视觉工作流-章26-图像拼接
图像处理·人工智能·opencv·算法·计算机视觉
智驱力人工智能3 天前
机场鸟类活动智能监测 守护航空安全的精准工程实践 飞鸟检测 机场鸟击预防AI预警系统方案 机场停机坪鸟类干扰实时监测机场航站楼鸟击预警
人工智能·opencv·算法·安全·yolo·目标检测·边缘计算
Σίσυφος19003 天前
OpenCV 之双线性插值
人工智能·opencv·计算机视觉
格林威3 天前
Baumer相机金属粉末铺粉均匀性评估:用于增材制造过程监控的 7 个实用技巧,附 OpenCV+Halcon 实战代码!
人工智能·opencv·视觉检测·制造·工业相机·智能相机·堡盟相机