opencv图片处理基本函数整合2019.12.24

这篇博客详细介绍了OpenCV库在图像处理中的基本操作,包括边缘检测、轮廓检测及其应用,如轮廓面积比较、图片上的绘图功能(如画点、圆、线和矩形)以及颜色提取和阈值分割。此外,还涉及到多点拟合中的直线拟合技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

opencv

1.边缘检测

cv2.Canny(img,min_thresh,max_thresh)

在进行边缘检测时,最好先进行高斯模糊  cv2.GaussianBlur(img,(3,3),0,0)
img 单通道图像 
min_thresh 最小阈值
max_thresh最大阈值
返回值为提取边缘后的图片

2.轮廓检测

contours = cv2.findContours(edges_,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)

返回值: 为一个个轮廓组成的list ,每个轮廓都由许多点构成

第一个参数

是寻找轮廓的图像;

第二个参数

表示轮廓的检索模式,有四种(本文介绍的都是新的cv2接口):
cv2.RETR_EXTERNAL 表示只检测外轮廓
cv2.RETR_LIST 检测的轮廓不建立等级关系
cv2.RETR_CCOMP 建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。
cv2.RETR_TREE 建立一个等级树结构的轮廓。

第三个参数

method为轮廓的近似办法
cv2.CHAIN_APPROX_NONE 存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1
cv2.CHAIN_APPROX_SIMPLE 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法

3.轮廓面积比较

area_d = cv2.contourArea(contour)单个轮廓面积的计算

ret = map(area.index,heapq.nlargest(1,area))获取所有轮廓中面积最大的索引

for contour in contours_all:
	area_d = cv2.contourArea(contour)
	area.append(area_d)
ret = map(area.index,heapq.nlargest(1,area))

4.图片上的绘图

画点或圆

cv2.circle(img,dian,2,(50,50,50),1)

img 原图像
dian 圆心坐标(x,y)
2 圆半径
(50,50,50) 颜色
1 线的宽度   -1 则为实心圆

划线

cv2.line(img,(10,10),(200,200),(0,255,0),3)  

img 原图像   

(10,10) (200,200) 线的俩端点 

(0,255,0) 线的颜色

画矩

cv2.rectangle(img,(10,10),(30,40),(134,2,34),1)

img 原图像   
(10,10) (30,40) 左上角与右下角的坐标 
(134,2,34) 线颜色
1 线宽度

添加文字

font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,’OpenCV’,(80,90), font, 2,(255,255,255),3)
绘制的文字,位置,字型,字体大小,文字颜色,线型

5.颜色提取

img_lab = cv2.cvtColor(img,cv2.COLOR_BGR2LAB)    rgb --> lab    b黄色通道 提取黄色比较明显
img_hls = cv2.cvtColor(img,cv2.COLOR_BGR2HLS)    rgb --> hls   l白色通道   提取白色比较明显
以上返回值 为三通道的图像
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  rgb --> gray   灰度图象  单通道图像

6.阈值分割

retval,dst  = cv2.threshold(img,180,255,cv2.THRESH_BINARY)
返回值  dst为二值化后的灰度图
src::单通道图象
thresh:阈值
maxval:最大值
type:阈值类型 如下所示

img

7.多点拟合和

a.直线拟合

[vx,vy,x_,y_] = cv2.fitLine(contour,cv2.DIST_L2,0.2,0.01,0.01) 
返回值处理    斜率为 vy/vx   (x_,y_) 直线上的一点  
点集 拟合方式  剩余参数默认即可

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值