当前位置: 首页 > wzjs >正文

权重查询站长工具苏州关键词优化怎样

权重查询站长工具,苏州关键词优化怎样,优秀的网站建设解决方案,网站建设方案设计心得完整版:Python----计算机视觉处理(Opencv:道路检测完整版:透视变换,提取车道线,车道线拟合,车道线显示) 一、透视变换 将透视变换之后的图像再继续透视变换为原图像 可参考Python----计算机视…

完整版:Python----计算机视觉处理(Opencv:道路检测完整版:透视变换,提取车道线,车道线拟合,车道线显示)

一、透视变换 

        将透视变换之后的图像再继续透视变换为原图像

可参考Python----计算机视觉处理(Opencv:道路检测之道路透视变换)

 导入模块

import numpy as np
import cv2

输入图像 

img=cv2.imread('img_to_wrp.png')

 获得透视变换矩阵

height, width, _ = img.shape
src = np.float32([[width // 2 - 75, height // 2],[width // 2 + 100, height // 2],[0, height],[width, height]])
dst = np.float32([[0, 0],[width, 0],[0, height],[width, height]])
M = cv2.getPerspectiveTransform(dst,src )

 创建一个三通道背景图

wrp_zero=np.zeros_like(img_road1).astype(np.uint8)
color_wrp=np.dstack((wrp_zero,wrp_zero,wrp_zero))

组合车道线坐标

pts_left = np.transpose(np.vstack([left_fitx, ploty]))
pts_right = np.transpose(np.vstack([right_fitx, ploty]))
pts_middle = np.transpose(np.vstack([middle_fitx, ploty]))

绘制车道线

cv2.polylines(color_wrp, np.int32([pts_left]), isClosed=False, color=(202, 124, 0), thickness=15)
cv2.polylines(color_wrp, np.int32([pts_right]), isClosed=False, color=(202, 124, 0), thickness=15)
cv2.polylines(color_wrp, np.int32([pts_middle]), isClosed=False, color=(202, 124, 0), thickness=15)

将得到的车道线的像素点根据逆透视变换映射到原始图像中

newwarp = cv2.warpPerspective(color_wrp, M, (img.shape[1], img.shape[0]))

二、图像融合 

 将逆透视变换后的结果和原始图像进行融合

result1 = cv2.addWeighted(img, 1, newwarp, 1, 0)

创建一个灰色背景三通道图像

background_zero = np.zeros_like(img).astype(np.uint8) + 127

将原始图像和灰色背景融合 

result = cv2.addWeighted(background_zero, 1, newwarp, 1, 0)

图像合并 

concatenate_image1 = np.concatenate((img, img_wrp), axis=1)
concatenate_image2 = np.concatenate((result1, result), axis=1)
concatenate_image = np.concatenate((concatenate_image1,concatenate_image2), axis=0)

输出图像 

cv2.imshow('concatenate_image', concatenate_image) 
cv2.waitKey(0)

三、完整代码

# 读取图像  
img = cv2.imread('road_polyfit.png')  
height, width, _ = img.shape  # 获取图像的高度和宽度  # 定义源点(src)和目标点(dst)进行透视变换  
src = np.float32(  [  [width // 2 - 75, height // 2],  # 左侧车道线的源点  [width // 2 + 100, height // 2],  # 右侧车道线的源点  [0, height],  # 底部左侧点  [width, height]  # 底部右侧点  ]  
)  
dst = np.float32(  [  [0, 0],  # 目标左上角  [width, 0],  # 目标右上角  [0, height],  # 目标左下角  [width, height]  # 目标右下角  ]  
)  # 计算透视变换矩阵  
M = cv2.getPerspectiveTransform(dst, src)  # 创建一个与原图像同样大小的全黑图像用于保存透视变换后的车道线  
wrp_zero = np.zeros_like(img).astype(np.uint8)  # 创建一个颜色图像,用于绘制车道线  
color_wrp = np.dstack((wrp_zero, wrp_zero, wrp_zero))  # 将黑色图像复制成三个通道  # 组合车道线坐标  
pts_left = np.transpose(np.vstack([left_fitx, ploty]))  # 左侧车道线的坐标  
pts_right = np.transpose(np.vstack([right_fitx, ploty]))  # 右侧车道线的坐标  
pts_middle = np.transpose(np.vstack([middle_fitx, ploty]))  # 中间车道线的坐标  # 绘制车道线,使用指定的颜色和线宽  
cv2.polylines(color_wrp, np.int32([pts_left]), isClosed=False, color=(202, 124, 0), thickness=15)  
cv2.polylines(color_wrp, np.int32([pts_right]), isClosed=False, color=(202, 124, 0), thickness=15)  
cv2.polylines(color_wrp, np.int32([pts_middle]), isClosed=False, color=(202, 124, 0), thickness=15)  # 将得到的车道线的像素点根据逆透视变换映射到原始图像中  
newwarp = cv2.warpPerspective(color_wrp, M, (img.shape[1], img.shape[0]))  # 将逆透视变换后的结果和原始图像进行加权融合,显示最终效果  
result1 = cv2.addWeighted(img, 1, newwarp, 1, 0)  # 创建一个灰色背景图像,用于显示结果  
background_zero = np.zeros_like(img).astype(np.uint8) + 127  # 创建一幅灰色图像  # 经过加权融合得到结果  
result = cv2.addWeighted(background_zero, 1, newwarp, 1, 0)  # 拼接图像以便进行可视化  
concatenate_image1 = np.concatenate((img, img_wrp), axis=1)  # 拼接原始图像和变换后的图像  
concatenate_image2 = np.concatenate((result1, result), axis=1)  # 拼接加权融合的结果  
concatenate_image = np.concatenate((concatenate_image1, concatenate_image2), axis=0)  # 纵向拼接完整图像  cv2.imshow('concatenate_image', concatenate_image)  # 所有结果拼接的图像  
cv2.waitKey(0)  # 等待按键以结束  

四、库函数 

4.1、transpose()

返回轴转d 的数组。

对于一维数组,这将返回原始数组的未更改视图,因为转置d 向量只是相同的向量。 要将一维数组转换为二维列向量,需要一个额外的维度 必须添加,例如,实现此目的,就像 . 对于 2-D 数组,这是标准矩阵转置。 对于 n-D 数组,如果给定了轴,则它们的顺序表示 轴被置换(参见 Examples)。如果未提供 axes,则 。np.atleast_2d(a).Ta[:, np.newaxis]transpose(a).shape == a.shape[::-1]

numpy.transpose(a, axes=None)
方法描述
aInput 数组。
axes如果指定,则它必须是包含排列的 Tuples 或 List 的 [0, 1, ..., N-1] 其中 N 是 a 的轴数。阴性 indices 还可用于指定轴。返回的 数组将对应于输入的轴编号。 如果未指定,则默认为 ,这将反转 轴的顺序。axes[i]range(a.ndim)[::-1]

4.2、concatenate()

        沿现有轴连接数组序列。

numpy.concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")
方法描述
a1, a2, …数组必须具有相同的形状,但维度 对应于 axis (默认情况下是第一个)。
axis数组将沿其连接的轴。如果 axis 为 None,则 数组在使用前被展平。默认值为 0。
out如果提供,则为放置结果的目标。形状必须为 correct,匹配 concatenate 在 no out 参数。
dtype如果提供,目标数组将具有此 dtype。不能 与 out 一起提供。
casting控制可能发生的数据类型转换。默认为 'same_kind'。 有关选项的描述,请参阅铸造。

4.3、polylines()

        绘制多条多边形曲线。

cv.polylines(	img, pts, isClosed, color[, thickness[, lineType[, shift]]]	) ->	img
方法描述
img图像。
pts多边形曲线数组。
isClosed指示绘制的多段线是否闭合的标志。如果它们是闭合的,则该函数将从每条曲线的最后一个顶点到其第一个顶点绘制一条线。
color多段线颜色。
thickness多段线边线的粗细。
lineType线段的类型。请参阅线型
shift顶点坐标中的小数位数。

4.4、addWeighted()

cv.addWeighted(	src1, alpha, src2, beta, gamma[, dst[, dtype]]	) ->	dst
方法描述
src1first input 数组。
alpha第一个数组元素的权重。
src2第二个输入数组的大小和通道号与 src1 相同。
beta第二个数组元素的权重。
gamma添加到每个 sum 的标量。
dstoutput 数组,该数组具有与 input 数组相同的大小和通道数。
dtype输出数组的可选深度;当两个输入数组具有相同的深度时,可以将 dtype 设置为 -1,这相当于 src1.depth()。
http://www.dtcms.com/wzjs/176956.html

相关文章:

  • 网站开发一般用什么数据库推广文案怎么写吸引人
  • 做网站网络公司无收入外链工具
  • 青岛网站建设公司有哪些跨境电商平台排行榜前十名
  • 设计制作小车的基本步骤北京seo分析
  • 另一更新正在进行 wordpressseo网络推广怎么做
  • 网站模板如何使用刷关键词要刷大词吗
  • 建立平台需要什么seo代码优化步骤
  • 最新免费网站收录提交入口大连网站制作
  • 在线设计网站源码百度下载安装2021最新版
  • 做网站企业的发展前景河南企业站seo
  • 专注建设高端网站合肥网络推广培训学校
  • 安徽省住房和城乡建设厅网站西安seo阳建
  • 北京电商网站建设seo下拉优化
  • 广州建设网站下载淘宝指数查询官网手机版
  • 凡科做网站有什么用游戏推广怎么快速拉人
  • 深圳好的网站建设公司哪家好千锋培训机构官网
  • 政府网站建设教程百度网址大全首页
  • 网站建设全流程图谷歌官方网站登录入口
  • 网站策划书我与音乐西安网站设计开发
  • 网站建设通沈阳seo排名收费
  • 网站建设开发方式包括哪些方面长春网站优化页面
  • 传统文化网站设计全球网站流量查询
  • 制造业网站开发优化的概念
  • 代理做网站怎么样重庆seo技术教程博客
  • wordpress导入sql失败阜阳seo
  • 内蒙建设信息网站百度推广代理商查询
  • 衡阳网站优化外包价格搜索推广公司
  • 网站建设的几点体会网络推广发展
  • 张家港网站建设门店百度快照是怎么做上去的
  • 为什么网站要友情链接59软文网