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滑动条变换轨迹而图像变化后不能归位的问题 -> 正文阅读

[人工智能]解决OpenCV滑动条变换轨迹而图像变化后不能归位的问题

今天使用 OpenCV 进行车道线检测时,为了快速找到合适的 Canny 算子高、低阈值以及 Sobel 算子?threshold 阈值,决定采用?OpenCV 中的?createTrackbar 和 getTrackbarPos 方法。结果一个问题的出现使我措手不及:调整阈值画车道线只能在前一时刻图像基础上变化,也就是只能使得识别出的车道线变多,不能变少,更不能恢复到没有识别出车道线的那张图像。

就像这样,变多的时候好好的,回不去了!!?

?下面说一下解决办法:

这是最开始写的关键代码 :

imgpath = "图片路径"
img = cv.imread(imgpath)
img_crop = img[500:, :]

img_blur = cv.GaussianBlur(img_crop, (11, 11), 0)
img_sobel = my_sobel(img_blur)

def my_hough():
    min = cv.getTrackbarPos('min', 'hough image')
    max = cv.getTrackbarPos('max', 'hough image')
    threshold = cv.getTrackbarPos('hough', 'hough image')
    img_canny = cv.Canny(img_sobel, min, max)
    lines = cv.HoughLines(img_canny, 1, np.pi / 180, threshold)

    for line in lines:
        rho, theta = line[0]

        a = np.cos(theta)
        b = np.sin(theta)
        x0 = a * rho
        y0 = b * rho

        x1 = int(x0 + 1000 * (-b))
        y1 = int(y0 + 1000 * (a))
        x2 = int(x0 - 1000 * (-b))
        y2 = int(y0 - 1000 * (a))
        cv.line(img_crop, (x1, y1), (x2, y2), (0, 0, 255), 2)

    cv.imshow('hough image', img_crop)

这是因为滑动条滑动导致阈值变换,处理的图片一直都是在上一时刻停留那个位置的阈值处理出的图片基础上运行的,简单来讲,就是一种叠加作用,然后当变换阈值使得识别出车道线变少,也就看不出来了。

解决办法是创建一个新图像,这个图像用于获得处理前的图像,相当于是复制处理前的那个图像,用的是关于图像复制的?.copy() 方法。

按照此思路变换后的关键代码是:

imgpath = "图片路径"
img = cv.imread(imgpath)
img_crop = img[500:, :]

img_blur = cv.GaussianBlur(img_crop, (11, 11), 0)
img_sobel = my_sobel(img_blur)

def my_hough():
    min = cv.getTrackbarPos('min', 'hough image')
    max = cv.getTrackbarPos('max', 'hough image')
    threshold = cv.getTrackbarPos('hough', 'hough image')
    dst = img_crop.copy()                 # 加这一句
    img_canny = cv.Canny(img_sobel, min, max)
    lines = cv.HoughLines(img_canny, 1, np.pi / 180, threshold)

    for line in lines:
        rho, theta = line[0]

        a = np.cos(theta)
        b = np.sin(theta)
        x0 = a * rho
        y0 = b * rho

        x1 = int(x0 + 1000 * (-b))
        y1 = int(y0 + 1000 * (a))
        x2 = int(x0 - 1000 * (-b))
        y2 = int(y0 - 1000 * (a))
        dst = cv.line(dst, (x1, y1), (x2, y2), (0, 0, 255), 2)

    cv.imshow('hough image', dst)

这就达到了想要的结果(可复原):

?

?

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:26:17  更:2021-07-24 11:30:22 
 
开发: 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/17 20:46:27-

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