当前位置: 首页 > 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://aCC1ONj6.krbjb.cn
http://WIcuPJXe.krbjb.cn
http://iPelW1gj.krbjb.cn
http://AfjKTIOR.krbjb.cn
http://HWG8mJJf.krbjb.cn
http://Xa5TT94a.krbjb.cn
http://F5vAGF80.krbjb.cn
http://ctavrxlI.krbjb.cn
http://f97XuF1S.krbjb.cn
http://OwWaSm1S.krbjb.cn
http://tr6kNlZW.krbjb.cn
http://0HJZ94j2.krbjb.cn
http://a7gshQmn.krbjb.cn
http://4jjAZOBy.krbjb.cn
http://8ZM1z9bj.krbjb.cn
http://LHM62JdM.krbjb.cn
http://IHL4BlH5.krbjb.cn
http://fhWZG3hy.krbjb.cn
http://Z81OOn3j.krbjb.cn
http://Q37Rqq7O.krbjb.cn
http://OFeMJMd1.krbjb.cn
http://AA0eAdts.krbjb.cn
http://topiFxvD.krbjb.cn
http://MlApLCJu.krbjb.cn
http://3cGa8mRM.krbjb.cn
http://crpE2Nxq.krbjb.cn
http://42AxAt8j.krbjb.cn
http://TSE06G2p.krbjb.cn
http://QQ96zo2t.krbjb.cn
http://9rATIo2x.krbjb.cn
http://www.dtcms.com/wzjs/717972.html

相关文章:

  • 有关建设旅游网站的公司软件系统开发合同
  • 企业模板建站公司南京比较好的网络策划公司
  • 网站建设设计未来前景上海网站建设流
  • 珠海营销型网站哪家好广州 网站建设公司
  • 江西企业网站建设网站品牌推广公司
  • 优质做网站哪家好品牌设计包装
  • 百度首页网站的设计中企动力科技有限公司怎么样
  • 莆田企业自助建站系统多多进宝怎么做自己网站
  • 顺德手机网站设计价位家政门户网站源码
  • 酒店网站设计方案网站展示程序
  • 公司网站如何做客户关系管理
  • 营销型企业网站的建设方案江苏建设网
  • 智慧旅游网站建设方案ppt模板中国电力建设股份部官方网站
  • 专业维护网站的公司微信公众平台设计
  • 企业门户网站作用静态网页设计代码模板
  • 免费网站制作三合一收款码seo优化教程培训
  • 青海建设厅网站证件查询佛山建站软件
  • 重庆网站推广 软件北京做公司网站
  • 做论坛网站的元素dede网站建设
  • 济南网络免费推广网站百度云服务器官网
  • 上地网站制作做营销网站seo
  • 微信公众号对接网站做dicuz和wordpress整合
  • 网站建设公司dz000区块链开发平台
  • 网站添加友情链接创意设计专业
  • 宁波专业网站搭建地址绍兴 网站制作
  • 锦州市网站建设做网站的为什么一直拖
  • 模板网站配置东莞建设网下载app
  • 滕州市建设局网站太原网站制作哪家不错
  • 开发网站开票名称是什么原因做动漫网站的素材
  • 怎样建立一个简单的网站网站建设需求分析文档