【辅助驾驶】透视变换、仿射变换(包含鸟瞰图、俯视图、正视图)[2]——俯视图

本文介绍了一种基于OpenCV库和imutils库的图像处理方法,实现了图像的鸟瞰图转换与文本识别功能。首先,通过Python代码进行边缘检测、轮廓识别,找到图像四角并转换为鸟瞰视角。其次,利用C++代码实现相似功能,展示了不同编程语言在图像处理上的应用。最后,介绍了GitHub上一个开源项目,该项目集成了图像裁剪自动化、鸟瞰图转换和光学字符识别功能。

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

一、效果

二、代码实现

1、python代码,基于opencv库和imutils库

来源:https://blog.youkuaiyun.com/qq_34199383/article/details/79571318

from imutils import perspective
from skimage.filters import threshold_local
import cv2
import imutils
 
# 边缘扫描
image = cv2.imread("./picture/5.png")
ratio = image.shape[0] / 500.0                                 # 比例
orig = image.copy()
image = imutils.resize(image, height = 500)
 
# 灰度转换及边缘查找
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(gray, 75, 200)                               # 边缘检测
 
# 只保留轮廓
cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)#通过边缘图像找到轮廓
cnts = cnts[0] if imutils.is_cv2() else cnts[1]                # 用以区分OpenCV2.4和OpenCV3
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:5] # 保留最大轮廓
 
for c in cnts:
    peri = cv2.arcLength(c, True)
    approx = cv2.approxPolyDP(c, 0.02 * peri, True)            # 轮廓点    
    if len(approx) == 4:                                       # 表明找到四个轮廓点
        screenCnt = approx
        break
    
# 转为鸟瞰图
warped = perspective.four_point_transform(orig, screenCnt.reshape(4, 2) * ratio)
warped = cv2.cvtColor(warped, cv2.COLOR_BGR2GRAY)              # 灰度转换
T = threshold_local(warped, 11, offset = 10, method = "gaussian")
warped = (warped > T).astype("uint8") * 255
 
cv2.imshow("Original", imutils.resize(orig, height = 650))
cv2.imshow("Scanned", imutils.resize(warped, height = 650))
cv2.waitKey(0)

2、C++实现

基于opencv的getPerspectiveTransform()函数和warpPerspective()函数

代码:https://blog.youkuaiyun.com/t6_17/article/details/78729097

效果:

3、Image perspective transformation and text recognition

功能:

  •  Image cropping automation
  •  Bird's eye view transformation
  • Optical character recognition

Github:https://github.com/linghugoogle/cv-birdview

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值