unity3D 如何渲染出图,一张JPG的就行~
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3D 如何渲染出图,一张JPG的就行~相关的知识,希望对你有一定的参考价值。
1、在unity场景中创建一个立方体。
2、在项目脚本文件夹中创建一个“Hidden”脚本。
3、在start方法中关闭渲染。this.GetComponent<Renderer>().enabled=false。
4、在update方法中监听按键,在按下S键渲染显示物体。
5、把Hidden脚本添加到立方体上面。
6、现在按下“S”键,立方体就显示出来了。
参考技术A 恩,unity3d不是一个渲染器,不,准确的说不适合做渲染出图的渲染器,她是一个游戏引擎是实时渲染,你要让它出图,一可以手动截图,二可以使用API函数接图。API函数是 static function CaptureScreenshot (filename : string) : void ,渲染出图一般做室内设计的较多,它们使用的渲染器不是实时的,往往渲染一张需按小时以上计算,而游戏引擎需要每秒就渲染几十帧!纯手打!本回答被提问者采纳
如何在 Python 中将 2 通道光流灰度 JPG 图像合并为一张 RGB 图像?
【中文标题】如何在 Python 中将 2 通道光流灰度 JPG 图像合并为一张 RGB 图像?【英文标题】:How to merge 2 channel of optical flow grayscale JPG images into one RGB image in Python? 【发布时间】:2019-04-23 08:27:49 【问题描述】:我正在从给定的 2 个灰度 jpg 图像中制作 RGB 图像,分别用于光流中的 x、y 通道。
sample input images and my current output
def optical_flow(one, two, w, h):
"""
method taken from (https://chatbotslife.com/autonomous-vehicle-speed-estimation-from-dashboard-cam-ca96c24120e4)
"""
one_g = cv2.cvtColor(one, cv2.COLOR_RGB2GRAY)
two_g = cv2.cvtColor(two, cv2.COLOR_RGB2GRAY)
hsv = np.zeros((w, h, 3))
# set saturation
hsv[:,:,1] = cv2.cvtColor(two, cv2.COLOR_RGB2HSV)[:,:,1]
# obtain dense optical flow paramters
flow = cv2.calcOpticalFlowFarneback(one_g, two_g, flow=None,
pyr_scale=0.5, levels=1, winsize=15,
iterations=2,
poly_n=5, poly_sigma=1.1, flags=0)
# convert from cartesian to polar
mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])
# hue corresponds to direction
hsv[:,:,0] = ang * (180/ np.pi / 2)
# value corresponds to magnitude
hsv[:,:,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
# convert HSV to int32's
hsv = np.asarray(hsv, dtype= np.float32)
rgb_flow = cv2.cvtColor(hsv,cv2.COLOR_HSV2RGB)
return rgb_flow
imgu = cv2.imread('u.jpg')
imgv = cv2.imread('v.jpg')
img = optical_flow(one, two, w, h)
Image.fromarray(imgu, 'RGB').show() // top-left one in img
Image.fromarray(imgv, 'RGB').show() // top-right one in img
Image.fromarray(img, 'RGB').show() // bottom-left one in img
我认为输出图像看起来很奇怪。
【问题讨论】:
【参考方案1】:光流计算两个连续帧的运动矢量场。在你的情况下one
和two
。但是,您的输入图像 u 和 v 不显示连续帧。这里的问题是图像之间没有关系,即没有相似的内容。因此,您的光流场flow
将具有一些随机的类似值。
在计算光流场的颜色编码可视化时。在您的情况下,饱和通道未正确初始化:
# set saturation
hsv[:,:,1] = cv2.cvtColor(two, cv2.COLOR_RGB2HSV)[:,:,1]
设置为255,比较常见的解决办法是设置value通道为255,使用saturation channel对幅度进行编码。
【讨论】:
以上是关于unity3D 如何渲染出图,一张JPG的就行~的主要内容,如果未能解决你的问题,请参考以下文章
[Unity3D]如何创建图片文件夹的assetbundle,然后将这些图片加载为纹理?