shell,c,python实现思路类似。
1、shell实现while循环
#!/bin/sh
sum=0
i=0
while [ $sum -lt 10000 ]
do
i=$(($i+1))#or ((i++))
sum=$(($sum+$i))#or ((sum=sum+i))
done
echo $i,$sum
2、c实现while循环
#include"stdio.h"
int main()
{
int sum=0
int i=0
while(sum<10000)
{
i++
sum=sum+i
}
printf("%d,%d\n",i,sum)
return 0
}
3、shell实现for循环
#!/bin/sh
sum=0
for((i=1i++))
do
sum=$(($sum+$i)) #or ((sum=sum+i))
if [ $sum -gt 10000 ]then
break
fi
done
echo $i,$sum
4、c实现for循环
#include"stdio.h"
int main()
{
int sum=0
int i
for(i=1i++)
{
sum=sum+i
if(sum>10000){
break
}
}
printf("%d\n",sum)
return 0
}
5、do/while实现
#include"stdio.h"
int main()
{
int sum=0
int i=0
do
{
i++
sum=sum+i
}while(sum<10000)
printf("%d,%d\n",i,sum)
return 0
}
6、python实现while循环
#!/usr/bin/python
sum=0
i=0
while sum <10000 :
i=i+1
sum=sum+i
print i,sum
我们首先识别最简单的一种验证码,即图形验证码。这种验证码最早出现,现在也很常见,一般由4位字母或者数字组成。例如,中国知网的注册页面有类似的验证码,页面如下所示:
表单中最后一项就是图形验证码,我们必须完全正确输入图中的字符才可以完成注册。
更多有关验证码的知识,可以参考这些文章:
Python3爬虫进阶:识别图形验证码
Python3爬虫进阶:识别极验滑动验证码
Python3爬虫进阶:识别点触点选验证码
Python3爬虫进阶:识别微博宫格验证码
·本节目标以知网的验证码为例,讲解利用OCR技术识别图形验证码的方法。
·准备工作识别图形验证码需要库tesserocr,以mac安装为例:在mac下,我们首先使用Homebrew安装ImageMagick和tesseract库: brew install imagemagickbrew install tesseract 接下来再安装tesserocr即可:pip3 install tesserocr pillow这样我们就完成了 tesserocr的安装。
·获取验证码为了便于实验,我们先将验证码的图片保存到本地。打开开发者工具,找到验证码元素。验证码元素是一张图片,它的ser属 性是CheckCode.aspk。所以我们直接打开如下链接就可以看到一个验证码,右键保存即可,将其命名为code.jpg:
这样我们就得到一张验证码图片,以供测试识别使用。
相关推荐:《Python教程》
识别测试
接下来新建一个项目,将验证码图片放到项目根目录下,用tesserocr库识别该验证码,代码如下所示:
这里我们新建了一个Image对戏那个,调用了tesserocr的image_to_text( )方法。传入该Image对象即可完成识别,实现过程非常简单,结果如下:
我们可以看到,识别的结果和实际结果有偏差,这是因为验证码内的多余线条干扰了图片的识别。
另外,tesserocr还有一个更加简单的方法,这个方法可以直接将图片文件转为字符串,代码如下:
不过这种方法的识别效果不如上一种的好。
验证码处理
对于上面的图片,我们可以看到其实并没有完全识别正确,所以我们需要对图像作进一步的处理,如灰度转换、二值化等 *** 作。
我们可以利用Image对象的convert( )方法参数传入L,即可将图片转化为灰度图像,代码如下:
传入1即可将图片进行二值化处理,如下所示:
我们还可以指定二值化的阈值。上面的方法采用的是默认阈值127。不过我们不能直接转化原图,要将原图先转化为灰度图像,然后再指定二值化阈值,代码如下:
在这里,变量threshold代表二值化阈值,阈值设置为160,之后我们来看看我们的结果:
我们可以看到现在的二维码就比较方便我们进行识别了;那么对于一些有干扰的图片,我们做一些灰度和二值化处理,这会提高图片识别的正确率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)