R Field - 2023年6月
type: channel
link: http://ramlife.org/2023/06/
description: 通玄小论
items: yahboom rosmaster x3, 其他课程 学习笔记
items: yahboom rosmaster x3, 语音控制系列课程 学习笔记
items: yahboom rosmaster x3, 深度相机系列课程 学习笔记
items: yahboom rosmaster x3, opencv系列课程 学习笔记

yahboom rosmaster x3, 其他课程 学习笔记
type: item
date: 2023-06-24T09:10:00+08:00

yahboom rosmaster x3, 语音控制系列课程 学习笔记
type: item
date: 2023-06-17T10:15:00+08:00

yahboom rosmaster x3, 深度相机系列课程 学习笔记
type: item
date: 2023-06-10T09:20:00+08:00

yahboom rosmaster x3, opencv系列课程 学习笔记
type: item
date: 2023-06-03T09:40:00+08:00
description: opencv 基础 基础 读取图片与展示 img = cv2.imread('yahboom.jpg', 0) cv2.IMREAD_UNCHANGED：保持原格式不变，-1； cv2.IMREAD_GRAYSCALE：以灰度模式读入图片，可以用0表示； cv2.IMREAD_COLOR：，读入一副彩色图片，可以用1表示； cv2.IMREAD_UNCHANGED：读入一幅图片，并包括其alpha通道，可以用2表示。 cv.imshow('frame', frame) 图片写入 cv2.imwrite('new_img_name', img) 摄像头读取与显示视频 capture=cv.VideoCapture(0) 参数是0，表示打开笔记本的内置摄像头，参数是视频文件路径则打开视频 ret,img = frame.read() 移动与缩放 图片缩放 cv2.resize(InputArray src,OutputArray dst, Size, fx, fy, interpolation) interpolation：插入方式，可选择 INTER_NEAREST（最近邻插值）， INTER_LINEAR（双线性插值（默认设置））， INTER_AREA（使用像素区域关系进行重采样）， INTER_CUBIC（4x4像素邻域的双三次插值）， INTER_LANCZOS4（8x8像素邻域的Lanczos插值） 图片剪切 dst = img[0:100,100:200] 图片平移 cv2.warpAffine(src, M, dsize[,dst[, flags[, borderMode[,borderValue]]]]) , M：变换矩阵, 作为仿射变换矩阵，一般反映平移或旋转的关系，为InputArray类型的2×3的变换矩阵。，只设置前三个参数的情况下，如cv2.warpAffine(img,M,(rows,cols))就可以实现基本的仿射变换效果。 dsize：输出图像的大小 flags：插值方法的组合（int 类型！） borderMode：边界像素模式（int 类型！） borderValue：（重点！）边界填充值; 默认情况下，它为0 matShift = np.float32([[1,0,10],[0,1,10]])# 2*3 dst = cv2.warpAffine(img, matShift, (width,height)) 图片镜像 for i in range(0,height): for j in range(0,width): dst[i,j] = img[i,j] dst[height*2-i-1,j] = img[i,j] 图像处理 图像灰度化处理 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 图像二值化处理 cv2.threshold（src, threshold, maxValue,thresholdType） threshold：当前阈值 maxVal：最大阈值，一般为255 thresholdType：阈值类型，一般有下面几个值， THRESH_BINARY = 0，#大于阈值的像素点的灰度值设定为maxValue(如8位灰度值最大为255)，灰度值小于阈值的像素点的灰度值设定为0。 THRESH_BINARY_INV = 1，#大于阈值的像素点的灰度值设定为0，而小于该阈值的设定为maxValue。 THRESH_TRUNC = 2，#大于阈值的像素点的灰度值设定为0，而小于该阈值的设定为maxValue。 THRESH_TOZERO = 3，#像素点的灰度值小于该阈值的不进行任何改变，而大于该阈值的部分，其灰度值全部变为0。 THRESH_TOZERO_INV = 4 #像素点的灰度值大于该阈值的不进行任何改变，像素点的灰度值小于该阈值的，其灰度值全部变为0。 返回值： retval：与参数thresh一致3 dst： 结果图像 img = cv2.imread('yahboom.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ret,thresh1=cv2.threshold(gray,180,255,cv2.THRESH_BINARY_INV) 图像边缘检测 Canny边缘检测算法可以分为以下5个步骤： 使用高斯滤波器，以平滑图像，滤除噪声 计算图像中每个像素点的梯度强度和方向 应用非极大值（Non-Maximum Suppression）抑制，以消除边缘检测带来的杂散响应 应用双阈值（Double-Threshold）检测来确定真实的和潜在的边缘 通过抑制孤立的弱边缘最终完成边缘检测 op…