基本支持所有YUV方面的转换.
不过全部是exe方式的, 如果你打开win32目录的话,支持vs2003和vs2005 ,也支持其他c++编辑器
如果不会c,那就用下面的方法弄就行了. 呵呵 .
yuv420 转bmp的方法:
我找到了一个c写的exe ,但是c的水平我实在是不敢去修改那个源码,所以我干脆就调用这个dll,在c#里建立了下面这个类, 然后调用 Y2b.exe 来转换, 而且不会显示出来那个黑屏.要知道怎么回事,就看代码吧!呵呵.
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Drawing;
using System.IO;
namespace JXImage
{
public class YUV2BMP
{
/// <summary>
/// 检查程序配置是否正常, 比如exe路径,图片文件夹等. 一般情况下设置了路径和图片文件路径以及图片后,应该使用属性取得是否可以执行命令.
/// </summary>
public bool CanUse
{
get
{
if (System.IO.File.Exists(System.Windows.Forms.Application.StartupPath + "//Y2B.exe") )
{
return true;
}
return false;
}
}
private string bmpfile = null;
/// <summary>
/// BMP文件名, 在成功执行转换后可以用此获得文件路径..
/// </summary>
/// <returns>返回文件名</returns>
public string GetBmpFileName()
{
return bmpfile;
}
/// <summary>
/// BMP数据流,成功转换后可以从此获得流 .
/// </summary>
/// <returns>数据流形式的BMP </returns>
public MemoryStream GetBmpFileStream()
{
try
{
return new MemoryStream(System.IO.File.ReadAllBytes(bmpfile));
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// Image 成功转换后可以用此来获得文件.
/// </summary>
/// <returns>返回一个图片</returns>
public Image GetBmp()
{
try
{
return Image.FromFile(bmpfile);
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// YUV转BMP
/// </summary>
/// <param name="yuvfilename">YUV文件名</param>
/// <returns>返回是否成功</returns>
public bool YUVtoBMP(string yuvfilename)
{
if (CanUse)
{
string ret = Execute(yuvfilename);
if (ret.IndexOf("OK")>=0)//从0字符开始会有个OK
{
if (System.IO.File.Exists(yuvfilename.Replace(".yuv", ".bmp")))
{
bmpfile = yuvfilename.Replace(".yuv", ".bmp");
return true;
}
}
}
return false;
}
/// <summary>
/// 执行DOS命令.
/// </summary>
/// <param name="canmand">命令</param>
/// <returns>返回执行结果 </returns>
public static string Execute(string yuvfilename)
{
int milliseconds = 2 * 1000;//两秒
string output = ""; //输出字符串
if (yuvfilename != null && yuvfilename != "")
{
Process process = new Process(); //创建进程对象
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName =System.Windows.Forms.Application.StartupPath +"//Y2B.exe" ; //设定需要执行的命令
startInfo.Arguments = "/h352 /v288 /""+yuvfilename+"/" /"" +yuvfilename.Replace(".yuv",".bmp"); //设定参数,其中的“/C”表示执行完命令后马上退出
startInfo.UseShellExecute = false; //不使用系统外壳程序启动
startInfo.RedirectStandardInput = false; //不重定向输入
startInfo.RedirectStandardOutput = true; //重定向输出
startInfo.CreateNoWindow = true; //不创建窗口
process.StartInfo = startInfo;
try
{
if (process.Start()) //开始进程
{
if (milliseconds == 0)
process.WaitForExit(); //这里无限等待进程结束
else
process.WaitForExit(milliseconds); //这里等待进程结束,等待时间为指定的毫秒
output = process.StandardOutput.ReadToEnd();//读取进程的输出
}
}
catch
{
}
finally
{
if (process != null)
process.Close();
}
return output;
}
return null;
}
}
}
描述:
1、读取akiyo_qcif.yuv YUV420文件,按帧读取,转RGB,并存储到BMP文件。 2、暂时实现读取一帧并存储一张BMP图片。 若要读取YUV序列,写成循环方式即可。 3、生成的BMP文件还有一点小问题:图像的倒立的,而且红色偏多。 YUV是qcif分辨率。 估计是YUV到RGB的计算公式有点问题。解决中。。。。 图像倒立问题已经解决。红色不知道是不是公式变换和RGB数值区间限制的时候产生的。估计和UV的差值方式也有关系。 红色的问题已经解决,采用的变换公式不正确。 但是还是有一些横纹,不知道是怎么回事。 .
说明一下
本程序是由其他程序修改而来,为了避免麻烦,对其中一些没有用的地方并没有删除,但是这样不会影响使用。





















大小: 179M
大小: 1.14G
Adobe Photoshop CS5v13.0官方简体中文版
SAI绘画软件v2.6 汉化最新版
Photoshop CS29.0 简体中文正式版
CorelDRAW X7简体中文正式版v25.0.0.17专业版
Adobe Photoshop CS310.0.1 官方中文正式原版
佳能数码单反相机软件(Digital Photo Professional)3.9 中文版
ACDsee9.0中文版
CAD迷你家装2022R1 官方版
光影魔术手20174.4.1.304 官方正式版
彩视相册制作软件v1.0 官方安装版
GIF图像编辑器(Namo GIF)中文免费版
StarUML UML工具5.0.2 汉化绿色版
Adobe Illustrator CC 20152015.2.1 中文精简版
美图秀秀6.3.3.1 去广告绿色版
批量修改图片大小工具Mytoolsoft Image ResizerV2.4 汉化绿色版
Adobe Photoshop CC 2017v18.0.0 官方简体中文版
Adobe Illustrator CS5Ansifa 精简绿色中文版
抠图工具(Picture Cutout Guide)V3.2.9 中文破解版