IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【opencv-python】 HSV抠图-智能车拟合道路边界和中线 -> 正文阅读

[人工智能]【opencv-python】 HSV抠图-智能车拟合道路边界和中线

1、实战项目(找中线)

?目标是从面对这种简单环境用opencv画出中线,下面是过程实现

?

2、opencv-python基于HSV抠图

这种环境看似简单,但是用灰度处理二值化的效果奇差,最后选择用HSV进行分割。

先导入包:

import cv2
import cv2 as cv
import numpy as np

然后把图片用cvtColor转化成HSV格式

img=cv.imread("1.png")



img=cv.cvtColor(img,cv.COLOR_BGR2HSV)

关于HSV :

HSV模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)
色调H用角度度量,取值范围为0~360,从红色开始按逆时针方向计算,红色为0,绿色为120,蓝色为240,他们的补色是:
黄色为60,青色为180,紫色为300
如果直接使用opencv中cvtColor函数,并设置参数为CV_BGR2HSV,那么所得的HSV范围分别是【0,180】【0,255】【0,255】
lower=np.array([0,0,137])
upper=np.array([120,255,255])


mask = cv2.inRange(img,lowerb=lower,upperb=upper)

?关于cv2.inRange方法

mask = inRange(hsv,lower_red,upper_red)
hsv:原图
lower_red指的是图像中低于这个lower_red的值,图像值变为0
upper_red指的是图像中高于这个upper_red的值,图像值变为0

阈值的选择

阈值的选择比较烦人,上面的数值是匹配第一张图片分割的。下面提供一个可视化工具,帮助你找到合适的阈值。

import cv2
import numpy as np


# 滑动条的回调函数,获取滑动条位置处的值
def empty(a):
    h_min = cv2.getTrackbarPos("Hue Min", "TrackBars")
    h_max = cv2.getTrackbarPos("Hue Max", "TrackBars")
    s_min = cv2.getTrackbarPos("Sat Min", "TrackBars")
    s_max = cv2.getTrackbarPos("Sat Max", "TrackBars")
    v_min = cv2.getTrackbarPos("Val Min", "TrackBars")
    v_max = cv2.getTrackbarPos("Val Max", "TrackBars")
    print(h_min, h_max, s_min, s_max, v_min, v_max)
    return h_min, h_max, s_min, s_max, v_min, v_max


path = '1.png'
# 创建一个窗口,放置6个滑动条
cv2.namedWindow("TrackBars")
cv2.resizeWindow("TrackBars", 640, 240)
cv2.createTrackbar("Hue Min", "TrackBars", 0, 120, empty)
cv2.createTrackbar("Hue Max", "TrackBars", 19, 120, empty)
cv2.createTrackbar("Sat Min", "TrackBars", 110, 255, empty)
cv2.createTrackbar("Sat Max", "TrackBars", 240, 255, empty)
cv2.createTrackbar("Val Min", "TrackBars", 153, 255, empty)
cv2.createTrackbar("Val Max", "TrackBars", 255, 255, empty)

while True:
    img = cv2.imread(path)
    imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    # 调用回调函数,获取滑动条的值
    h_min, h_max, s_min, s_max, v_min, v_max = empty(0)
    lower = np.array([h_min, s_min, v_min])
    upper = np.array([h_max, s_max, v_max])
    # 获得指定颜色范围内的掩码
    mask = cv2.inRange(imgHSV, lower, upper)
    # 对原图图像进行按位与的操作,掩码区域保留
    imgResult = cv2.bitwise_and(img, img, mask=mask)

    cv2.imshow("Mask", mask)
    cv2.imshow("Result", imgResult)

    cv2.waitKey(1)

边界轮廓线拟合 :

contours_,h_ = cv.findContours(mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
mask = cv2.cvtColor(mask,cv2.COLOR_GRAY2BGR)
cv2.drawContours(mask,contours_,-1,(0,255,0),3)

这里拟合出边界轮廓线并且直接画出来,线的厚度可以在drawContours的最后一个参数3的地方修改。这里contours_的数据类型如下,如果有相关操作注意:

?最后展示图片

cv2.imshow("result",mask)
cv2.waitKey(0)

?完整代码如下:

import cv2
import cv2 as cv
import numpy as np


img=cv.imread("1.png")

img=cv.cvtColor(img,cv.COLOR_BGR2HSV)


lower=np.array([0,0,137])
upper=np.array([120,255,255])
mask = cv2.inRange(img,lowerb=lower,upperb=upper)


contours_,h_ = cv.findContours(mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
mask = cv2.cvtColor(mask,cv2.COLOR_GRAY2BGR)
cv2.drawContours(mask,contours_,-1,(0,255,0),3)



cv2.imshow("result",mask)



cv2.waitKey(0)

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:15:46  更:2021-09-29 10:17:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:36:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码