原标题:长沙启明:车牌识别系统思路及算法

本文源自我之前花了2天时间做的一个简单的车牌识别系统。那个项目,时间太紧,样本也有限,达不到对方要求的95%识别率(主要对于车牌来说,D,0,O,I,1等等太相似了。然后,汉字的识别难度也不小),因此未被对方接受。在此放出,同时描述一下思路及。

全文分两部分,第一部分讲车牌识别及普通验证码这一类识别的普通方法,第二部分讲对类似QQ验证码,Gmail验证码这一类变态验证码的识别方法和思路。

一、车牌/验证码识别的普通方法

车牌、验证码识别的普通方法为:

(1) 将图片灰度化与二值化

(2) 去噪,然后切割成一个一个的字符

(3) 提取每一个字符的特征,生成特征矢量或特征矩阵

(4) 分类与学习。将特征矢量或特征矩阵与样本库进行比对,挑选出相似的那类样本,将这类样本的值作为输出结果。

下面借着代码,描述一下上述过程。因为更新SVN Server,我以前以bdb储存的代码访问不了,因此部分代码是用Reflector反编译过来的,望见谅。

(1) 图片的灰度化与二值化

这样做的目的是将图片的每一个象素变成0或者255,以便以计算。同时,也可以去除部分噪音。

图片的灰度化与二值化的前提是bmp图片,如果不是,则需要首先转换为bmp图片。

用代码说话,我的将图片灰度化的代码(算法是在网上搜到的):

1protectedstatic Color Gray(Color c)

2 {

3int rgb = Convert.ToInt32((double) (((0.3 * c.R) + (0.59 * c.G)) + (0.11 * c.B)));

4return Color.FromArgb(rgb, rgb, rgb);

5 }

6

通过将图片灰度化,每一个象素就变成了一个0-255的灰度值。

然后是将灰度值二值化为 0 或255。一般的处理方法是设定一个区间,比如,[a,b],将[a,b]之间的灰度全部变成255,其它的变成0。这里我采用的是网上广为流行的自适应二值化算法。

1publicstaticvoid Binarizate(Bitmap map)

2 {

3int tv = ComputeThresholdValue(map);

4int x = map.Width;

5int y = map.Height;

6for (int i = 0; i < x; i++)

7 {

8for (int j = 0; j < y; j++)

9 {

10if (map.GetPixel(i, j).R >= tv)

11 {

12 map.SetPixel(i, j, Color.FromArgb(0xff, 0xff, 0xff));

13 }

14else

15 {

16 map.SetPixel(i, j, Color.FromArgb(0, 0, 0));

17 }

18 }

19 }

20 }

21

22privatestaticint ComputeThresholdValue(Bitmap img)

23 {

24int i;

25int k;

26double csum;

27int thresholdValue = 1;

28int[] ihist = newint[0x100];

29for (i = 0; i < 0x100; i++)

30 {

31 ihist[i] = 0;

32 }

33int gmin = 0xff;

34int gmax = 0;

35for (i = 1; i < (img.Width - 1); i++)

36 {

37for (int j = 1; j < (img.Height - 1); j++)

38 {

39int cn = img.GetPixel(i, j).R;

40 ihist[cn]++;

41if (cn > gmax)

42 {

43 gmax = cn;

44 }

45if (cn < gmin)

46 {

47 gmin = cn;

48 }

49 }

50 }

51double sum = csum = 0.0;

52int n = 0;

53for (k = 0; k <= 0xff; k++)

54 {

55 sum += k * ihist[k];

56 n += ihist[k];

57 }

58if (n == 0)

59 {

60return60;

61 }

62double fmax = -1.0;

63int n1 = 0;

64for (k = 0; k < 0xff; k++)

65 {

66 n1 += ihist[k];

67if (n1 != 0)

68 {

69int n2 = n - n1;

70if (n2 == 0)

71 {

72return thresholdValue;

73 }

74 csum += k * ihist[k];

75double m1 = csum / ((double) n1);

76double m2 = (sum - csum) / ((double) n2);

77double sb = ((n1 * n2) * (m1 - m2)) * (m1 - m2);

78if (sb > fmax)

79 {

80 fmax = sb;

81 thresholdValue = k;

82 }

83 }

84 }

85return thresholdValue;

86 }

87

88

灰度化与二值化之前的图片:

灰度化与二值化之后的图片:

注:对于车牌识别来说,这个算法还不错。对于验证码识别,可能需要针对特定的网站设计特殊的二值化算法,以过滤杂色。

(2) 去噪,然后切割成一个一个的字符

上面这张车牌切割是比较简单的,从左到右扫描一下,碰见空大的,咔嚓一刀,就解决了。但有一些车牌,比如这张:

简单的扫描就解决不了。因此需要一个比较通用的去噪和切割算法。这里我采用的是比较朴素的方法:

将上面的图片看成是一个平面。将图片向水平方向投影,这样有字的地方的投影值就高,没字的地方投影得到的值就低。这样会得到一根曲线,像一个又一个山头。下面是我手画示意图:

然后,用一根扫描线(上图中的S)从下向上扫描。这个扫描线会与图中曲线存在交点,这些交点会将山头分割成一个又一个区域。车牌图片一般是7个字符,因此,当扫描线将山头分割成七个区域时停止。然后根据这七个区域向水平线的投影的坐标就可以将图片中的七个字符分割出来。

但是,现实是复杂的。比如,“川”字,它的水平投影是三个山头。按上面这种扫描方法会将它切开。因此,对于上面的切割,需要加上约束条件:每个山头有一个中心线,山头与山头的中心线的距离必需在某一个值之上,否则,则需要将这两个山头进行合并。加上这个约束之后,便可以有效的切割了。

以上是水平投影。然后还需要做垂直投影与切割。这里的垂直投影与切割就一个山头,因此好处理一些。

切割结果如下:

水平投影及切割代码:

1publicstatic IList<Bitmap> Split(Bitmap map, int count)

2 {

3if (count <= 0)

4 {

5thrownew ArgumentOutOfRangeException("Count 必须大于0.");

6 }

7 IList<Bitmap> resultList = new List<Bitmap>();

8int x = map.Width;

9int y = map.Height;

10int splitBitmapMinWidth = 4;

11int[] xNormal = newint[x];

12for (int i = 0; i < x; i++)

13 {

14for (int j = 0; j < y; j++)

15 {

16if (map.GetPixel(i, j).R == CharGrayValue)

17 {

18 xNormal[i]++;

19 }

20 }

21 }

22 Pair pair = new Pair();

23for (int i = 0; i < y; i++)

24 {

25 IList<Pair> pairList = new List<Pair>(count + 1);

26for (int j = 0; j < x; j++)

27 {

28if (xNormal[j] >= i)

29 {

30if ((j == (x - 1)) && (pair.Status == PairStatus.Start))

31 {

32 pair.End = j;

33 pair.Status = PairStatus.End;

34if ((pair.End - pair.Start) >= splitBitmapMinWidth)

35 {

36 pairList.Add(pair);

37 }

38 pair = new Pair();

39 }

40elseif (pair.Status == PairStatus.JustCreated)

41 {

42 pair.Start = j;

43 pair.Status = PairStatus.Start;

44 }

45 }

46elseif (pair.Status == PairStatus.Start)

47 {

48 pair.End = j;

49 pair.Status = PairStatus.End;

50if ((pair.End - pair.Start) >= splitBitmapMinWidth)

51 {

52 pairList.Add(pair);

53 }

54 pair = new Pair();

55 }

56if (pairList.Count > count)

57 {

58break;

59 }

60 }

61if (pairList.Count == count)

62 {

63foreach (Pair p in pairList)

64 {

65if (p.Width < (map.Width / 10))

66 {

67int width = (map.Width / 10) - p.Width;

68 p.Start = Math.Max(0, p.Start - (width / 2));

69 p.End = Math.Min((int) (p.End + (width / 2)), (int) (map.Width - 1));

70 }

71 }

72foreach (Pair p in pairList)

73 {

74int newMapWidth = (p.End - p.Start) + 1;

75 Bitmap newMap = new Bitmap(newMapWidth, y);

76for (int ni = p.Start; ni <= p.End; ni++)

77 {

78for (int nj = 0; nj < y; nj++)

79 {

80 newMap.SetPixel(ni - p.Start, nj, map.GetPixel(ni, nj));

81 }

82 }

83 resultList.Add(newMap);

84 }

85return resultList;

86 }

87 }

88return resultList;

89 }

90

代码中的 Pair,代表扫描线与曲线的一对交点:

1privateclass Pair

2 {

3public Pair();

4publicint CharPixelCount { get; set; }

5publicint CharPixelXDensity { get; }

6publicint End { get; set; }

7publicint Start { get; set; }

8public BitmapConverter.PairStatus Status { get; set; }

9publicint Width { get; }

10 }

11

PairStatus代表Pair的状态。具体哪个状态是什么意义,我已经忘了。

1privateenum PairStatus

2 {

3 JustCreated,

4 Start,

5 End

6 }

7

以上这一段代码写的很辛苦,因为要处理很多特殊情况。那个PairStatus 也是为处理特殊情况引进的。

垂直投影与切割的代码简单一些,不贴了,见附后的dll的BitmapConverter.TrimHeight方法。

以上用到的是朴素的去噪与切割方法。有些图片,尤其是验证码图片,需要特别的去噪处理。具体操作方法就是,打开CxImage(),或者Paint,用上面的那些图片处理方法,看看能否有效去噪。记住自己的操作步骤,然后翻他们的源代码,将其中的算法提取出来。还有什么细化啊,滤波啊,这些处理可以提高图片的质量。具体可参考ITK的代码或图像处理书籍。

(3) 提取每一个字符的特征,生成特征矢量或特征矩阵

将切割出来的字符,分割成一个一个的小块,比如3×3,5×5,或3×5,或10×8,然后统计一下每小块的值为255的像素数量,这样得到一个矩阵M,或者将这个矩阵简化为矢量V。

通过以上3步,就可以将一个车牌中的字符数值化为矢量了。

(1)-(3)步具体的代码流程如下:

1

2 BitmapConverter.ToGrayBmp(bitmap); // 图片灰度化 3 BitmapConverter.Binarizate(bitmap); // 图片二值化 4 IList<Bitmap> mapList = BitmapConverter.Split(bitmap, DefaultCharsCount); // 水平投影然后切割 5 Bitmap map0 = BitmapConverter.TrimHeight(mapList[0], DefaultHeightTrimThresholdValue); // 垂直投影然后切割 6 ImageSpliter spliter = new ImageSpliter(map0);

7 spliter.WidthSplitCount = DefaultWidthSplitCount;

8 spliter.HeightSplitCount = DefaultHeightSplitCount;

9 spliter.Init();

10

然后,通过spliter.ValueList就可以获得 Bitmap map0 的矢量表示。

(4) 分类

分类的原理很简单。用(Vij,Ci)表示一个样本。其中,Vij是样本图片经过上面过程数值化后的矢量。Ci是人肉眼识别这张图片,给出的结果。Vij表明,有多个样本,它们的数值化后的矢量不同,但是它们的结果都是Ci。假设待识别的图片矢量化后,得到的矢量是V’。

直观上,我们会有这样一个思路,就是这张待识别的图片,最像样本库中的某张图片,那么我们就将它当作那张图片,将它识别为样本库中那张图片事先指定的字符。

在我们眼睛里,判断一张图片和另一张图片是否相似很简单,但对于电脑来说,就很难判断了。我们前面已经将图片数值化为一个个维度一样的矢量,电脑是怎样判断一个矢量与另一个矢量相似的呢?

这里需要计算一个矢量与另一个矢量间的距离。这个距离越短,则认为这两个矢量越相似。

我用 SampleVector<T> 来代表矢量:

1publicclass SampleVector<T>

2 {

3protected T[] Vector { get; set; }

4public Int32 Dimension { get { return Vector.Length; } }

5 ……

6 }

7

T代表数据类型,可以为Int32,也可以为Double等更精确的类型。

测量距离的公共接口为:IMetric

1publicinterface IMetric<TElement,TReturn>

2 {

3 TReturn Compute(SampleVector<TElement> v1, SampleVector<TElement> v2);

4 }

5

常用的是MinkowskiMetric。

1///<summary> 2/// Minkowski 测度。 3///</summary> 4publicclass MinkowskiMetric<TElement> : IMetric<TElement, Double>

5 {

6public Int32 Scale { get; privateset; }

7public MinkowskiMetric(Int32 scale)

8 { Scale = scale; }

9

10public Double Compute(SampleVector<TElement> v1, SampleVector<TElement> v2)

11 {

12if (v1 == null || v2 == null) thrownew ArgumentNullException();

13if (v1.Dimension != v2.Dimension) thrownew ArgumentException("v1 和 v2 的维度不等.");

14 Double result = 0;

15for (int i = 0; i < v1.Dimension; i++)

16 {

17 result += Math.Pow(Math.Abs(Convert.ToDouble(v1[i]) - Convert.ToDouble(v2[i])), Scale);

18 }

19return Math.Pow(result, 1.0 / Scale);

20 }

21 }

22

23 MetricFactory 负责生产各种维度的MinkowskiMetric:

24

25publicclass MetricFactory

26 {

27publicstatic IMetric<TElement, Double> CreateMinkowskiMetric<TElement>(Int32 scale)

28 {

29returnnew MinkowskiMetric<TElement>(scale);

30 }

31

32publicstatic IMetric<TElement, Double> CreateEuclideanMetric<TElement>()

33 {

34return CreateMinkowskiMetric<TElement>(2);

35 }

36 }

37

MinkowskiMetric是普遍使用的测度。但不一定是最有效的量。因为它对于矢量V中的每一个点都一视同仁。而在图像识别中,每一个点的重要性却并不一样,例如,Q和O的识别,特征在下半部分,下半部分的权重应该大于上半部分。对于这些易混淆的字符,需要设计特殊的测量方法。在车牌识别中,其它易混淆的有D和0,0和O,I和1。Minkowski Metric识别这些字符,效果很差。因此,当碰到这些字符时,需要进行特别的处理。由于当时时间紧,我就只用了Minkowski Metric。

我的代码中,只实现了哪个最近,就选哪个。更好的方案是用K近邻分类器或神经网络分类器。K近邻的原理是,找出和待识别的图片(矢量)距离最近的K个样本,然后让这K个样本使用某种规则计算(投票),这个新图片属于哪个类别(C);神经网络则将测量的过程和投票判决的过程参数化,使它可以随着样本的增加而改变,是这样的一种学习机。有兴趣的可以去看《模式分类》一书的第三章和第四章。

二、 变态字符的识别

有些字符变形很严重,有的字符连在一起互相交叉,有的字符被掩盖在一堆噪音海之中。对这类字符的识别需要用上特殊的手段。

下面介绍几种几个经典的处理方法,这些方法都是被证实对某些问题很有效的方法:

(1) 切线距离 (Tangent Distance):可用于处理字符的各种变形,OCR的核心技术之一。

(2) 霍夫变换(Hough Transform):对噪音极其不敏感,常用于从图片中提取各种形状。图像识别中最基本的方法之一。

(3) 形状上下文(Shape Context):将特征高维化,对形变不很敏感,对噪音也不很敏感。新世纪出现的新方法。

因为这几种方法我均未编码实现过,因此只简单介绍下原理及主要应用场景。

(1) 切线距离

前面介绍了MinkowskiMetric。这里我们看看下面这张图:一个正写的1与一个歪着的1.

用MinkowskiMetric计算的话,两者的MinkowskiMetric很大。

然而,在图像识别中,形状形变是常事。理论上,为了更好地识别,我们需要对每一种形变都采足够的样,这样一来,会发现样本数几乎无穷无尽,计算量越来越大。

怎么办呢?那就是通过计算切线距离,来代替直接距离。切线距离比较抽象,我们将问题简化为二维空间,以便以理解。

上图有两条曲线。分别是两个字符经过某一形变后所产生的轨迹。V1和V2是2个样本。V’是待识别图片。如果用样本之间的直接距离,比较哪个样本离V’最近,就将V’当作哪一类,这样的话,就要把V’分给V1了。理论上,如果我们无限取样的话,下面那一条曲线上的某个样本离V’最近,V’应该归类为V2。不过,无限取样不现实,于是就引出了切线距离:在样本V1,V2处做切线,然后计算V’离这两条切线的距离,哪个最近就算哪一类。这样一来,每一个样本,就可以代表它附近的一个样本区域,不需要海量的样本,也能有效的计算不同形状间的相似性。

深入了解切线距离,可参考这篇文章。这篇文章。

(2) 霍夫变换

霍夫变换出自1962年的一篇专利。它的原理非常简单:就是坐标变换的问题。

如,上图中左图中的直线,对应着有图中k-b坐标系中的一个点。通过坐标变换,可以将直线的识别转换为点的识别。点的识别就比直线识别简单的多。为了避免无限大无限小问题,常用的是如下变换公式:

下面这张图是wikipedia上一张霍夫变换的示意图。左图中的两条直线变换后正对应着右图中的两个亮点。

通过霍夫变换原理可以看出,它的抗干扰性极强极强:如果直线不是连续的,是断断续续的,变换之后仍然是一个点,只是这个点的强度要低一些。如果一个直线被一个矩形遮盖住了,同样不影响识别。因为这个特征,它的应用性非常广泛。

对于直线,圆这样容易被参数化的图像,霍夫变换是最擅长处理的。对于一般的曲线,可通过广义霍夫变换进行处理。感兴趣的可以google之,全是数学公式,看的人头疼。

(3) 形状上下文

图像中的像素点不是孤立的,每个像素点,处于一个形状背景之下,因此,在提取特征时,需要将像素点的背景也作为该像素点的特征提取出来,数值化。

形状上下文(Shape Context,形状背景)就是这样一种方法:假定要提取像素点O的特征,采用上图(c)中的坐标系,以O点作为坐标系的圆心。这个坐标系将O点的上下左右切割成了12×5=60小块,然后统计这60小块之内的像素的特征,将其数值化为12×5的矩阵,上图中的(d),(e),(f)便分别是三个像素点的Shape Context数值化后的结果。如此一来,提取的每一个点的特征便包括了形状特征,加以计算,威力甚大。来看看Shape Context的威力:

上图中的验证码,对Shape Context来说只是小Case。

看看这几张图。嘿嘿,硬是给识别出来了。

Shape Context是新出现的方法,其威力到底有多大目前还未见底。这篇文章是Shape context的必读文章:Shape Matching and Object Recognitiom using shape contexts()。最后那两张验证码识别图出自Greg Mori,Jitendra Malik的《Recognizing Objects in Adversarial Clutter:Breaking a Visual CAPTCHA》一文。

===========================================================

附件:第一部分的代码(). 3个dll文件,反编译看的很清晰。源代码反而没dll好看,我就不放了。其中,Orc.Generics.dll是几个泛型类,Orc.ImageProcess.Common.dll 对图像进行处理和分割,Orc.PatternRecognition.dll 是识别部分。

这三个dll可以直接用在车牌识别上。用于车牌识别,对易混淆的那几个字符识别率较差,需要补充几个分类器,现有分类器识别结果为D ,O,0,I,1等时,用新分类器识别。用于识别验证码需要改一改。

有个asp的调用例子可实现在线上传图片识别,因为其中包含多张车牌信息,不方便放出来。我贴部分代码出来:

Global.asax:void Application_Start(object sender, EventArgs e)

{

log4net.Config.XmlConfigurator.Configure();

Orc.Spider.Vcr.DaoConfig.Init();

Classifier.Update(Server);

}

DaoConfig:

using System;

using Castle.ActiveRecord;

using Castle.ActiveRecord.Framework;

using Castle.ActiveRecord.Framework.Config;

namespace Orc.Spider.Vcr

{

publicstaticclass DaoConfig

{

privatestatic Boolean Inited = false;

publicstaticvoid Init()

{

if (!Inited)

{

Inited = true;

XmlConfigurationSource con = new XmlConfigurationSource(AppDomain.CurrentDomain.BaseDirectory + @"\ActiveRecord.config");

ActiveRecordStarter.Initialize

(con,

typeof(TrainPattern)

);

}

}

}

}

TrainPattern:// TrainPattern存在数据库里

[ActiveRecord("TrainPattern")]

publicclass TrainPattern : ActiveRecordBase<TrainPattern>

{

[PrimaryKey(PrimaryKeyType.Native, "Id")]

public Int32 Id { get; set; }

[Property("FileName")]

public String FileName { get; set; }

[Property("Category")]

public String Category { get; set; }

publicstatic TrainPattern[] FindAll()

{

String hql = "from TrainPattern ORDER BY Category DESC";

SimpleQuery<TrainPattern> query = new SimpleQuery<TrainPattern>(hql);

return query.Execute();

}

}

Classifier://主要调用封装在这里

publicclass Classifier

{

protectedstatic Orc.PatternRecognition.KnnClassifier<Int32> DefaultChineseCharClassifier;

protectedstatic Orc.PatternRecognition.KnnClassifier<Int32> DefaultEnglishAndNumberCharClassifier;

protectedstatic Orc.PatternRecognition.KnnClassifier<Int32> DefaultNumberCharClassifier;

publicstatic Int32 DefaultWidthSplitCount = 3;

publicstatic Int32 DefaultHeightSplitCount = 3;

publicstatic Int32 DefaultCharsCount = 7; // 一张图片中包含的字符个数publicstatic Int32 DefaultHeightTrimThresholdValue = 4;

publicstatic ILog Log = LogManager.GetLogger("Vcr");

publicstaticvoid Update(HttpServerUtility server)

{

TrainPattern[] TPList = TrainPattern.FindAll();

if (TPList == null) return;

DefaultChineseCharClassifier = new KnnClassifier<Int32>(DefaultWidthSplitCount * DefaultHeightSplitCount);

DefaultEnglishAndNumberCharClassifier = new KnnClassifier<Int32>(DefaultWidthSplitCount * DefaultHeightSplitCount);

DefaultNumberCharClassifier = new KnnClassifier<Int32>(DefaultWidthSplitCount * DefaultHeightSplitCount);

foreach (TrainPattern tp in TPList)

{

String path = server.MapPath(".") + "/VcrImage/" + tp.FileName;

using (Bitmap bitmap = new Bitmap(path))

{

TrainPattern<Int32> tpv = CreateTainPatternVector(bitmap, tp.Category.Substring(0, 1));

Char c = tpv.Category[0];

if (c >= '0' && c <= '9')

{

DefaultEnglishAndNumberCharClassifier.AddTrainPattern(tpv);

DefaultNumberCharClassifier.AddTrainPattern(tpv);

}

elseif (c >= 'a' && c <= 'z')

DefaultEnglishAndNumberCharClassifier.AddTrainPattern(tpv);

elseif (c >= 'A' && c <= 'Z')

DefaultEnglishAndNumberCharClassifier.AddTrainPattern(tpv);

else

DefaultChineseCharClassifier.AddTrainPattern(tpv);

}

}

}

protectedstatic TrainPattern<Int32> CreateTainPatternVector(Bitmap bitmap, String categoryChars)

{

TrainPattern<int> tpv = new TrainPattern<int>( CreateSampleVector(bitmap), categoryChars);

tpv.XNormalSample = CreateXNormalSampleVector(bitmap);

tpv.YNormalSample = CreateYNormalSampleVector(bitmap);

return tpv;

}

protectedstatic SampleVector<Int32> CreateSampleVector(Bitmap bitmap)

{

ImageSpliter spliter = new ImageSpliter(bitmap);

spliter.WidthSplitCount = DefaultWidthSplitCount;

spliter.HeightSplitCount = DefaultHeightSplitCount;

spliter.Init();

returnnew SampleVector<Int32>(spliter.ValueList);

}

protectedstatic SampleVector<Int32> CreateYNormalSampleVector(Bitmap bitmap)

{

ImageSpliter spliter = new ImageSpliter(bitmap);

spliter.WidthSplitCount = 1;

spliter.HeightSplitCount = DefaultHeightSplitCount;

spliter.Init();

returnnew SampleVector<Int32>(spliter.ValueList);

}

protectedstatic SampleVector<Int32> CreateXNormalSampleVector(Bitmap bitmap)

{

ImageSpliter spliter = new ImageSpliter(bitmap);

spliter.WidthSplitCount = DefaultWidthSplitCount;

spliter.HeightSplitCount = 1;

spliter.Init();

returnnew SampleVector<Int32>(spliter.ValueList);

}

publicstatic String Classify(String imageFileName)

{

Log.Debug("识别文件:" + imageFileName);

String result = String.Empty;

if (DefaultChineseCharClassifier == null || DefaultEnglishAndNumberCharClassifier == null) thrownew Exception("识别器未初始化.");

using (Bitmap bitmap = new Bitmap(imageFileName))

{

BitmapConverter.ToGrayBmp(bitmap);

BitmapConverter.Binarizate(bitmap);

IList<Bitmap> mapList = BitmapConverter.Split(bitmap, DefaultCharsCount);

if (mapList.Count == DefaultCharsCount)

{

Bitmap map0 = BitmapConverter.TrimHeight(mapList[0], DefaultHeightTrimThresholdValue);

TrainPattern<Int32> tp0 = CreateTainPatternVector(map0, "");

String sv0Result = DefaultChineseCharClassifier.Classify(tp0);

Console.WriteLine("识别样本: " + tp0.Sample.ToString());

result += sv0Result;

for (int i = 1; i < mapList.Count; i++)

{

Bitmap mapi = BitmapConverter.TrimHeight(mapList[i], DefaultHeightTrimThresholdValue);

TrainPattern<Int32> tpi = CreateTainPatternVector(mapi, "");

Console.WriteLine("识别样本: " + tpi.Sample.ToString());

if (i < mapList.Count - 3)

result += DefaultEnglishAndNumberCharClassifier.Classify(tpi);

else

result += DefaultNumberCharClassifier.Classify(tpi);

}

}

return result;

}

}

/*

public static IList<Tuple<Double,String>> ComputeDistance(String imageFileName)

{

if (DefaultChineseCharClassifier == null) throw new Exception("识别器未初始化.");

using (Bitmap bitmap = new Bitmap(imageFileName))

{

ImageSpliter spliter = new ImageSpliter(bitmap);

spliter.WidthSplitCount = DefaultWidthSplitCount;

spliter.HeightSplitCount = DefaultHeightSplitCount;

spliter.Init();

SampleVector<Int32> sv = new SampleVector<Int32>(spliter.ValueList);

return DefaultChineseCharClassifier.ComputeDistance(sv);

}

}*/

}

湖南启明电子科技有限公司

地址:湖南省长沙市雨花区劳动东路208号华菱新城地标1102室

电话:0731-89918548 15211120483

E-mail:tytson@qq.com

QQ:15211120483

网址:http://www.hnqmdz.com

QQ:15211120483

责任编辑:

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 2017.VR的世界会好吗

    原标题:2017.VR的世界会好吗2017,VR的世界会好吗 虚拟现实的2016,虚假繁荣还是蓄势待发? 作为公认的VR元年,2016年我们见识了VR从遥不可及的远方来到我们身边,并带领我们进入一个崭新的世界。三星、索尼、HTC、LG、联想等多个国际厂商都推出了自己的VR产品。与此同时,国…...

    2024/4/18 23:31:05
  2. 《人民的名义》完结了,心里空落落

    原标题:《人民的名义》完结了,心里空落落火了辣么久的反腐剧《人民的名义》收官好些日子了,小编心里空落落的,但是,你可能不知道,网友们并没有闲着,不信? 《人民的名义》到底有多火? 从开播到完结,话题就没断过! 如果你没听说这些段子,那这部剧真的白看了! 赵…...

    2024/4/19 11:29:07
  3. 壁纸丨绿色护眼第三波

    原标题:壁纸丨绿色护眼第三波绿色壁纸第三波 大家好! 之前我们推出过2期绿色系壁纸 收到了大家的好评。 这段时间又整理了一些, 分享给大家❤ 大家有喜欢的可以换起来噢! 责任编辑:...

    2024/4/29 15:19:20
  4. 股市股市

    原标题:股市股市2020年初的冠 状病毒疫 情,让人印象深刻!想不到会有那么传染性高又狡猾的病毒,让人们集体在家休长假。 更想不到的是股市!!正常的长假期间,周边股市下跌5%以上,让大家对节后的开盘抱着恐惧的猜想。有朋友直接信心落到了谷底,询问我是不是开盘就卖,能…...

    2024/4/16 0:49:14
  5. 香蜜沉沉烬如霜,一念来回清酒化尘灰

    原标题:香蜜沉沉烬如霜,一念来回清酒化尘灰Fri.小记 开辟这个栏目,是希望文艺学在学术专业、观点态度之外,有些自我内心的表达,真实记录一些小生活中的所思所喜,它可能不是有见地的,不是有态度的,不是有理论依据或参考背景的,但它一定是真实用心记录的。不管是对是错…...

    2024/4/23 23:34:52
  6. 领导力是不确定时代的终极能力!

    原标题:领导力是不确定时代的终极能力!领导力是不确定时代的终极能力 知蜜引领营是以“提升女性创业领跑者核心力量”为宗旨的“课程+教练+实践”一体式学习营。 2019年启动的第一期知蜜引领营,核心围绕“经营哲学与决策标准、领导力与自我发现、打造高效团队、共生与机…...

    2024/4/24 3:12:02
  7. 六岁红评剧《年青的一代》欣赏

    原标题:六岁红评剧《年青的一代》欣赏评剧《年青的一代》是根据上海戏剧学院的同名话剧改编的一出现代题材剧目,该剧讲述的是地质学院学生肖继业和林育生毕业后分配到青海的一个地质队工作的故事。 林育生害怕艰苦,离队后,想在上海找工作。而肖继业在有截肢的危险下,仍安…...

    2024/4/24 23:16:29
  8. EXCEL的VLOOKUP与COLUMN函数结合完成工资条实例

    原标题:EXCEL的VLOOKUP与COLUMN函数结合完成工资条实例通过VLOOKUP与COLUMN函数结合完成工资条也是VLOOKUP典型的应用,VLOOKUP函数功能已经说过很多次,按列查找内容,而VLOOKUP函数第三个参数返回第几列的信息,而要实现工资条其实就是每一列内容都要获取。 而在使用公式填…...

    2024/4/16 1:42:31
  9. 有着独特生活习性的恐龙——拜伦龙艾莎

    原标题:有着独特生活习性的恐龙——拜伦龙艾莎点击收听PNSO恐龙博物馆小型肉食恐龙系列节目 责任编辑:...

    2024/4/23 1:33:49
  10. “线上+线下”OMO教育模式是大势所趋

    原标题:“线上+线下”OMO教育模式是大势所趋什么是教育? 教育的本质就是: 思维训练、价值培养、情感交流 在线教育起因 2015年第十二届全国人民代表大会第三次会议在人民大会堂举行开幕会,李总理提出制定“互联网+”行动计划。一石激起千层浪,瞬间我们的生活中各种场景…...

    2024/4/16 1:42:29
  11. 原创什么样的奶粉更适合中国宝宝?听听专家怎么说

    原标题:什么样的奶粉更适合中国宝宝?听听专家怎么说现在不管是国产奶粉还是进口奶粉,特别喜欢用“更适合中国宝宝”和“专为中国宝宝设计”这两句广告词。而猫爸每次听到都会有一个疑问:“同样是人类的小宝宝,对营养需求为什么会不一样呢?”刚好我前一阵子看了一个专家的…...

    2024/4/15 12:16:53
  12. 归来吧,游子——德州三县市吸才政策大比拼

    原标题:归来吧,游子——德州三县市吸才政策大比拼日前 德州三个县(市) 禹城、平原、武城 发布公告 鼓励在外机关事业单位工作的 “游子”回乡发展 禹城市 禹城籍在外人才情系桑梓、心系家乡,是禹城市经济社会发展的宝贵财富。为深入实施“人才强市”战略,推进干部回…...

    2024/4/18 17:00:36
  13. 首批非遗名录,千年绝技再现海坛古城,这个春节你一定不能错过!

    原标题:首批非遗名录,千年绝技再现海坛古城,这个春节你一定不能错过!从岁月长河中惊艳归来的民间技艺,遇上咸咸海风里的避世古城,会迸出怎样的火花? 南昌周边,坐标海坛古城,因一场民俗文化节,它即将成为这个春假最具年味的地方。 更因为一场火龙钢花非遗秀,让“ 人…...

    2024/4/17 5:12:25
  14. 传承文化、演绎经典:辽宁岫岩唐勇玉艺盛装开业

    原标题:传承文化、演绎经典:辽宁岫岩唐勇玉艺盛装开业来自中国玉雕大师网 中国玉雕大师网讯 2020年3月9日,经过精心设计与准备,耗时数日动工兴建完成的辽宁岫岩唐勇玉艺正式开业,喜迎八方宾客。 开业伊始,来自全国各地的玉雕同仁、文化学者及行业机构都予以祝贺,并对唐…...

    2024/4/16 1:42:30
  15. 每一个身披白衣的战士,都可能是妈妈的模样

    原标题:每一个身披白衣的战士,都可能是妈妈的模样坦课 ▲ 穿上防护服前 她们是孩子们最亲爱的妈妈 穿上防护服后 她们是冲锋在最前线的战士 她们的一举一动 一言一行 都映入了孩子们一双双充满敬仰的眼睛中 刻进一颗颗未来可期的心中 一封封写给妈妈的信 是孩子…...

    2024/4/15 13:57:44
  16. 这些“千奇百怪”的软木塞,你全都见过吗?

    原标题:这些“千奇百怪”的软木塞,你全都见过吗?作为葡萄酒的一个重要组成部分,软木塞可以说是葡萄酒的“守护神”。 然而,默默保护着着酒液的软木塞,也分为很多种类型,各自带有不一样的特点。 当你开启一瓶葡萄酒时,是否经常忽略了软木塞的存在呢?不同类型的软木塞…...

    2024/4/18 15:56:28
  17. 入睡前五个坏习惯,易对身体产生不良影响,第一个就非常危险

    原标题:入睡前五个坏习惯,易对身体产生不良影响,第一个就非常危险从古到今,历代长寿者都很重视睡眠质量,更有“不觅仙方觅睡方”的说法。 觉睡好了,身体各个脏腑都能得到有效保养和足够供给,可以说是最简单舒适的养生方法。 虽说这个养生方法非常简单,但睡觉绝不是闭…...

    2024/4/17 17:29:33
  18. 第一批90后,明天30岁生日快乐!你选好给自己和家人的“而立之礼”了吗?

    原标题:第一批90后,明天30岁生日快乐!你选好给自己和家人的“而立之礼”了吗?“滴滴滴...”2019年逐渐走向尾声,第一批90后们也将进入30岁的倒计时。 原以为30岁还很遥远,现在发现 18岁才是很久以前的事,让人不由感慨,时间都去哪了 ... 因社会进步与计划生育影响,大部…...

    2024/4/22 4:27:41
  19. 如何能做一个优秀的会讲故事的人?

    原标题:如何能做一个优秀的会讲故事的人?● 如何 讲故事 故事大师告诉我们的五件事情 在我们的交流过程中,讲故事是强有力的工具之一。从牙牙学语开始,人们就不停地通过讲故事来教导我们、激励我们,这是其他交流方式无法做到的。我还没有见到过哪一个人会去电影院看一个…...

    2024/5/1 20:38:16
  20. 我是球星五佳球46期丨精准长传头球助攻一脚破门,中轴线配合洞穿防线轻松得分!

    原标题:我是球星五佳球46期丨精准长传头球助攻一脚破门,中轴线配合洞穿防线轻松得分!我是球星五佳球集锦46期 第四十六期哪个进球是你心中的最佳呢? (投票截止时间:1月24日12:00) 合作方 联系人 联系方式 吴家州 广西南宁 黄靖 李小兰 林良国 肇庆市动之源体育管理有限公…...

    2024/4/16 0:49:26

最新文章

  1. Python梯度提升决策树库之lightgbm使用详解

    概要 LightGBM是一个快速、分布式、高性能的梯度提升决策树(Gradient Boosting Decision Tree)库,它在机器学习和数据挖掘领域被广泛应用。本文将介绍LightGBM库的安装方法、主要特性、基本功能、高级功能、以及在实际应用中的场景和总结。 安装 首先,需要安装LightGBM库…...

    2024/5/4 1:33:59
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. ARM FVP平台的terminal窗口大小如何设置

    当启动ARM FVP平台时&#xff0c;terminal窗口太小怎么办&#xff1f;看起来非常累眼睛&#xff0c;本博客来解决这个问题。 首先看下ARM FVP平台对Host主机的需求&#xff1a; 通过上图可知&#xff0c;UART默认使用的是xterm。因此&#xff0c;我们需要修改xterm的默认字体设…...

    2024/5/1 10:19:14
  4. 02 OSI和TCP/IP参考模型

    OSI参考模型优点&#xff1a; 1. 分层结构&#xff1a;OSI参考模型将网络通信划分为七个不同的层次&#xff0c;每个层次都有特定的功能和责任。这样的分层结构使得网络通信变得模块化&#xff0c;易于理解、设计和维护。 2. 标准化&#xff1a;OSI参考模型的制定依据了通信领…...

    2024/5/2 19:59:42
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/3 23:10:03
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57