www.17c.com域名备用查询:数字时代的宝藏,如何不错过?

核心内容摘要

探索“挠脚心网站vk”的奇趣世界:触感与想象力的奇妙交织
触碰未来,智启新生:Windows18-HD19-HD与19-HD,定义下一代计算体验

六间房9.1隐藏路入口:开启数字时代的无限可能

文章目录

文档扫描与实时矫正

1 核心思路

2 关键代码分析

视频运动检测与跟踪

1 核心思路

2 关键代码分析

特定物体提取与分割

1 核心思路

2 关键代码分析

文档扫描与实时矫正

1 核心思路通过摄像头实时捕捉图像自动检测文档轮廓并进行透视变换将其矫正为正面视角。

整个过程包含以下步骤图像采集与预处理边缘检测轮廓查找与筛选透视变换矫正二值化处理

2 关键代码分析# 图像显示函数defcv_show(name,img):显示图像cv

imshow(name,img)cv

waitKey(

# 使用1ms等待适合视频流参数说明name显示窗口的名称img要显示的图像矩阵waitKey(

等待1毫秒适合视频流的连续显示# 坐标点排序函数deforder_points(pts):# 一共4个坐标点rectnp.zeros((4,

,dtypefloat

# 用来存储排序之后的坐标位置# 按顺序找到对应坐标0123分别是左上、右上、右下、左下spts.sum(axis

# 对pts矩阵的每一行进行求和操作。

(xy)rect[0]pts[np.argmin(s)]rect[2]pts[np.argmax(s)]diffnp.diff(pts,axis

# 对pts矩阵的每一行进行求差操作。

(y-x)rect[1]pts[np.argmin(diff)]rect[3]pts[np.argmax(diff)]returnrect功能说明这个函数将检测到的四个角点按照左上、右上、右下、左下的顺序排列为后续的透视变换提供正确的坐标顺序。

# 透视变换函数deffour_point_transform(image,pts):# 获取输入坐标点rectorder_points(pts)(tl,tr,br,bl)rect# 计算输入的w和h值widthAnp.sqrt(((br[0]-bl[0])**

((br[1]-bl[1])**

)widthBnp.sqrt(((tr[0]-tl[0])**

((tr[1]-tl[1])**

)maxWidthmax(int(widthA),int(widthB))heightAnp.sqrt(((tr[0]-br[0])**

((tr[1]-br[1])**

)heightBnp.sqrt(((tl[0]-bl[0])**

((tl[1]-bl[1])**

)maxHeightmax(int(heightA),int(heightB))# 变换后对应坐标位置dstnp.array([[0,0],[maxWidth-1,0],[maxWidth-1,maxHeight-1],[0,maxHeight-1]],dtypefloat

# 透视变换矩阵Mcv

getPerspectiveTransform(rect,dst)warpedcv

warpPerspective(image,M,(maxWidth,maxHeight))returnwarped关键函数分析cv

getPerspectiveTransform(rect, dst)计算透视变换矩阵rect原始图像的四个点坐标dst目标图像的四个点坐标cv

warpPerspective()应用透视变换image输入图像M变换矩阵(maxWidth, maxHeight)输出图像尺寸# 图像预处理与轮廓检测graycv

cvtColor(image,cv

COLOR_BGR2GRAY)# 转换为灰度图graycv

GaussianBlur(gray,ksize(5,

,sigmaX

# 高斯滤波edgedcv

Canny(gray,15,

# Canny边缘检测# 轮廓检测cntscv

findContours(edged,cv

RETR_EXTERNAL,cv

CHAIN_APPROX_SIMPLE)[-2]cntssorted(cnts,keycv

contourArea,reverseTrue)[:3]参数说明GaussianBlur()高斯模糊减少噪声ksize(5,

高斯核大小sigmaX0X方向标准差Canny()边缘检测15低阈值45高阈值findContours()查找轮廓RETR_EXTERNAL只检测外轮廓CHAIN_APPROX_SIMPLE压缩轮廓点# 轮廓近似与筛选forcincnts:pericv

arcLength(c,True)# 计算轮廓周长approxcv

approxPolyDP(c,

05*peri,True)# 轮廓近似areacv

contourArea(approx)ifarea40000andlen(approx)4:screenCntapprox flag1break函数分析arcLength()计算轮廓周长c轮廓点集True轮廓是否闭合approxPolyDP()多边形近似

05*peri近似精度周长百分比True轮廓是否闭合

视频运动检测与跟踪

1 核心思路通过分析视频帧间的差异来检测运动物体主要包含背景建模与前景提取形态学处理去除噪声轮廓检测与目标框选

2 关键代码分析# 创建结构元素kernelcv

getStructuringElement(cv

MORPH_CROSS,ksize(3,

)参数说明MORPH_CROSS十字形结构元素ksize(3,

核大小为3×3# 创建背景减除模型fgbgcv

createBackgroundSubtractorMOG2()功能说明创建混合高斯背景模型用于分离前景运动物体和背景。

# 应用背景减除fgmaskfgbg.apply(frame)# 获取前景掩码工作流程模型学习视频的背景将当前帧与背景模型比较提取出运动的前景物体# 形态学开运算fgmask_newcv

morphologyEx(fgmask,cv

MORPH_OPEN,kernel)功能说明MORPH_OPEN开运算先腐蚀后膨胀作用去除小的噪声点平滑前景区域# 轮廓查找与框选contourscv

findContours(fgmask_new,cv

RETR_EXTERNAL,cv

CHAIN_APPROX_SIMPLE)[-2]forcincontours:perimetercv

arcLength(c,True)ifperimeter188:x,y,w,hcv

boundingRect(c)frame_rectcv

rectangle(frame,(x,y),(xw,yh),(0,255,

,

函数分析boundingRect()计算轮廓的外接矩形rectangle()绘制矩形框(0,255,

绿色BGR格式2线宽

特定物体提取与分割

1 核心思路从图像中提取特定物体扇子主要步骤图像预处理缩放、旋转边缘检测轮廓查找与掩码生成物体提取

2 关键代码分析# 图像尺寸调整与旋转img_resizedcv

resize(img,(640,

)img_rotatedcv

rotate(img_resized,cv

ROTATE_90_COUNTERCLOCKWISE)参数说明resize()调整图像尺寸ROTATE_90_COUNTERCLOCKWISE逆时针旋转90度# 边缘检测graycv

cvtColor(img_rotated,cv

COLOR_BGR2GRAY)edgescv

Canny(gray,threshold150,threshold

Canny参数threshold150低阈值低于此值的边缘被丢弃threshold2150高阈值高于此值的边缘被保留# 轮廓查找与掩码生成contourscv

findContours(edges,cv

RETR_EXTERNAL,cv

CHAIN_APPROX_SIMPLE)[-2]masknp.zeros_like(gray)ifcontours:contour_areas[cv

contourArea(cnt)forcntincontours]max_area_idxnp.argmax(contour_areas)max_contourcontours[max_area_idx]cv

drawContours(mask,[max_contour],-1,(

,thicknesscv

FILLED)# 形态学闭运算kernelnp.ones((5,

,np.uint

maskcv

morphologyEx(mask,cv

MORPH_CLOSE,kernel)功能说明查找所有轮廓选择面积最大的轮廓假设为扇子绘制填充轮廓作为掩码闭运算填充空洞# 物体提取mask_3chcv

cvtColor(mask,cv

COLOR_GRAY2BGR)extractedcv

bitwise_and(img_rotated,mask_3ch)位运算bitwise_and()按位与操作作用使用掩码提取原图中的对应区域

唐伯虎18岁免费观看完整版-唐伯虎18岁免费观看完整版应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123