opencv目标检测常用方法
opencv目标检测常用方法
- 读图,显示图片,关闭窗口
img_ori = cv2.imread( './11.png ' )
cv2.imshow( 'img_ori', img_ori)
cv2.waitKey (1000)
cv2.destroyAllWindows()
- 灰度值转化
gray_image = cv2.cvtColor(img_ori, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray', gray_image)
- 二值化
# 二值化 cv2.THRESH_OTSU
threshold, binary_image = cv2.threshold(gray_image, 0, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('bin', binary_image)
函数
- cv2.THRESH_OTSU
cv2.threshold(gray_image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
Otsu’s可以自己找到一个认为最好的阈值。并且Otsu’s非常适合于图像灰度直方图具有双峰的情况,他会在双峰之间找到一个值作为阈值,对于非双峰图像,可能并不是很好用。
- cv2.findContours
(32条消息) cv2.findContours()函数用法_wzh111wzh的博客-CSDN博客_findcontours
image, contours, hierarchy cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])
cv2.findContours()函数返回两个值,一个是轮廓本身(countours),还有一个是每条轮廓对应的属性(hierarchy)。
cv2.findContours()函数首先返回一个list,list中每个元素都是图像中的一个轮廓,用numpy中的ndarray表示。每个轮廓是一个ndarray,每个ndarray是轮廓上的点的集合。
-
inrange
void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);
根据上下的三位RGB数组来进行二值化
主要是将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0),该功能类似于之间所讲的双阈值化操作
- 形态学运算算子
MORPH_OPEN – 开运算(Opening operation)
MORPH_CLOSE – 闭运算(Closing operation)
MORPH_GRADIENT - 形态学梯度(Morphological gradient)
MORPH_TOPHAT - 顶帽(Top hat)
MORPH_BLACKHAT - 黑帽(Black hat)
- 开运算:
先腐蚀,再膨胀,可清除一些小东西(亮的),放大局部低亮度的区域 - 闭运算:
先膨胀,再腐蚀,可清除小黑点 - 形态学梯度:
膨胀图与腐蚀图之差,提取物体边缘 - 顶帽:
原图像-开运算图,突出原图像中比周围亮的区域 - 黑帽:
闭运算图-原图像,突出原图像中比周围暗的区域
- 轮廓检测
根据二值化图像提取轮廓
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现