方案一:
void CameraCapture(Camera m_Camera, string filename)
{
RenderTexture rt = new RenderTexture(Screen.width, Screen.height, 16);
m_Camera.targetTexture = rt;
m_Camera.Render();
RenderTexture.active = rt;
Texture2D t = new Texture2D(Screen.width, Screen.height);
t.ReadPixels(new Rect(0, 0, t.width, t.height), 0, 0);
t.Apply();
string path = Application.streamingAssetsPath + “/” + filename;
System.IO.File.WriteAllBytes(path, t.EncodeToJPG());
m_Camera.targetTexture = null;
}
方案二:
`public class GetImage : MonoBehaviour
{
public Camera mainCam; //待截图的目标摄像机
RenderTexture rt; //声明一个截图时候用的中间变量
Texture2D t2d; //目标纹理
int num = 0; //截图计数
public int W;
public int H;
void Start()
{
t2d = new Texture2D(W, H, TextureFormat.RGB24, false);
rt = new RenderTexture(W, H, 24);
mainCam.targetTexture = rt
;
}
void Update()
{
//按下空格键来截图
if (Input.GetKeyDown(KeyCode.Space))
{
//截图到t2d中
RenderTexture.active = rt;
t2d.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
t2d.Apply();
RenderTexture.active = null;
//将图片保存起来
byte[] byt = t2d.EncodeToJPG(); //转成jpg格式
File.WriteAllBytes(Application.dataPath + "//" + transform.name + ".jpg", byt); //文件写入
Debug.Log("当前截图序号为:" + transform.name.ToString());
num++; //文件序号
}
}
}`
具体的清晰度由相机的画面决定,如果不清晰可以尝试提升分辨率,模型精度