本人使用的是Ubuntu16.04,本人安装simpleCV的教程放在上一个blog中,如果您需要可以点击链接ubuntu 中安装SimpleCV
本blog中所有的代码都是经过本人实测、可用的。如果您觉得需要的话可以直接使用
1.使用simpleCV中的Camera,Display,Image拍摄照片和显示照片
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Camera, Display, Image import time #调用摄像机 cam=Camera() #调用显示 display=Display() #把摄像机拍摄出来的照片转换为image img=cam.getImage() #显示 img.save(display) time.sleep(4)
2.在拍摄的照片中添加文字,并且将拍摄的照片保存到当前目录中
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Camera,Display,Image import time def main(): #调用摄像机 cam = Camera() #调用显示 display = Display() #转换成图片 img = cam.getImage() #图片添加文字 img.drawText("ai wo zhong hua") #图片显示 img.save(display) time.sleep(5) #图片保存到文档中 img.save("pic.jpg") if __name__ == '__main__': main()
3.找到照片中的光斑
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image import time #选择当前目录下的pic.jpg照片 img = Image('pic.jpg') #显示照片 img.show() time.sleep(10) #找到光斑,默认值是256,但是一般情况下是找不到全白的地方,所以给一个相对阀值100 #阀值在文章后面还会有介绍 blobs = img.findBlobs(100) print blobs
4.使用摄像头拍摄显示照片,或者拍摄一个固定大小图片,添加的文字给定位置
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Camera,Display,Image import time cam = Camera(0)#Camera(1),就是调用第二个摄像头 #图片的显示 cam.getImage().show() time.sleep(1) #使用第一个摄像头,拍摄大小为640,480 cam0 = Camera(0,{ "width": 640, "height": 480 }) img0 = cam.getImage() #图片中添加文字 img0.drawText('I am Camera ID 0',0,0)#后面的数字就是定文字在哪里写 img0.show() time.sleep(3) '''cam1 = Camera(1) #只有一个摄像头的时候会报错 img1 = cam1.getImage() img1.drawText('pandayidun') img1.show() time.sleep(4) '''
5.使用摄像头拍摄视频
复制代码
1
2
3
4
5
6#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Camera,Display,Image import time cam = Camera()#Camera(1),就是调用第二个摄像头 cam.live()
6.保存拍摄的图片,并且添加文字。文字颜色随机
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Camera,Display,Image,Color import time cam = Camera()#Camera(1),就是调用第二个摄像头 display = Display() img =cam.getImage() #第一张显示的照片添加文字 img.drawText('good good study dayday up',color = Color().getRandom()) img.save(display) time.sleep(1) counter = 0 while not display.isDone(): img = cam.getImage() img.save(display) if display.mouseLeft: #保存图片 img.save('ps'+str(counter)+'.jpg') #给文字添加文字,文字颜色随机 或者指定颜色 color = Color.RED img.drawText('photo saved.',color = Color().getRandom()) img.save() #设置睡眠时间,相当于可以定时拍照 time.sleep(1) counter = counter + 1
7.将图片使用不同格式保存
复制代码
1
2
3
4
5
6
7
8
9
10#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color import time img = Image("chicago.png") img.save() # 保存成jpg格式 img.save("chicago.jpg") # 重新以jpg格式保存 img.save()
8.将图片进行放大,缩小
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color import time from encodings.punycode import adapt img = Image('ps1.jpg') #将照片宽高放大2倍 bigImg = img.resize(img.width*2,img.height*2) bigImg.show() time.sleep(1) #图像的缩放因子为5,放大五倍 bigImg1 = img.scale(3) bigImg1.show() time.sleep(1) #使用adaptiveScale(),在保持图像长宽比的情况下改变图像大小 #注意括号里面放的是元组,不是单独的x,y adaptImg = img.adaptiveScale((img.width*2,img.height)) adaptImg.show() time.sleep(1) #embiggen()函数,缩放函数,需要设置三个参数 #一个是元组,设置图像放大之后的尺寸 #一个是图像填充区域的颜色,默认是黑色 #一个元组,用于设置原始图像在新画布中的位置,默认剧中 emb = img.embiggen((350, 400), Color.GREEN, (0, 0)) emb.show() time.sleep(10)
9.将图片进行裁剪
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color import time img = Image('ps1.jpg') # 从左上角(50, 5)开始裁剪一个200x200的区域,这里是裁一个1/4的图片出来 cropImg = img.crop(200,200,img.width/2,img.height/2) cropImg.show() time.sleep(1) #有时候设定感兴趣区域(剒剏剉)的中心点比左上角更方便。这时只需要在添加一个参数,centered= true cropImg1 = img.crop(img.width/2, img.height/2, img.width/2, img.height/2, centered=True) cropImg1.show() time.sleep(1) #如前所述剓剩剭剰剬剥剃剖可以沿着一个斑块进行检测 blobs = img.findBlobs() img.crop(blobs[-1]).show() time.sleep(2) # 裁剪图像从(50,5)开始款200个像素,高200个像素 cropImg2 = img[50:250,5:205] cropImg2.show() time.sleep(3)
10.将图片进行旋转和裁剪后旋转
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color import time img = Image('ps1.jpg') #以中心点为中心旋转45度 rot = img.rotate(45,point=(img.width/2,img.height/2)) rot.show() time.sleep(1) #rotate旋转后有部分会被裁剪,添加参数fixed 为False后就不会被裁剪 rot1 = img.rotate(45,point=(img.width/2,img.height/2),fixed =False) rot1.show() time.sleep(1) #旋转之后还可以进行缩放 rot2 = img.rotate(45,point=(img.width/2,img.height/2),fixed =False,scale = 0.5) rot2.show() time.sleep(3)
11.将图片进行翻转,扭曲和切片
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color,Camera,Display import time img = Image('ps2.jpg') #图像进行水平或垂直翻转。函数flipHorizontal()和flipVertical() flip = img.flipHorizontal() flip.drawText('good good study') flipa = flip.scale(4) #这里相当于重新扩展出了另外一个照片 flipa.show() time.sleep(1) flip.show() time.sleep(1) #扭曲和切变 img1 = Image('ps0.jpg') corners = [(0,0),(450,0),(500,600),(50,600)] straight = img.shear(corners) straight.show() time.sleep(4)
12.让图片进行二值化,膨胀,腐蚀
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color import time #进行图片的二值化,就是只有黑白,没有其他颜色 img1 = Image('ps1.jpg') imgBin = img1.binarize() imgBin.show() time.sleep(0.5) #未处理的图片 img = Image('ps2.jpg') # 使用默认的黑白色 otsu = img.binarize() # 设置一个低的阈值的黑白色图片 low = img.binarize(75) # 设置一个高的阈值的黑白色图片 high = img.binarize(125) #缩小出四个大小为之前1/4的图片 img = img.resize(img.width/2, img.height/2) otsu = otsu.resize(otsu.width/2, otsu.height/2) low = low.resize(low.width/2, low.height/2) high = high.resize(high.width/2, high.height/2) #上面是原图和默认黑白图 top = img.sideBySide(otsu) #下面是低值和高值的黑白图 bottom = low.sideBySide(high) #下面的放下面去 combined = bottom.sideBySide(top, side="top") combined.show() time.sleep(0.5) #膨胀,任何一个背景像素(黑色),如果他与任何一个对象像素(白色)相接触,那么这个 #像素点就会变成白色。 这会使图像变大,将相邻的对象连在一起。 腐蚀的 #作用刚好相反。 所有与背景像素(黑色)有直接接触的对象像素(白色) #都回变成黑色。 这会使对象变小,甚至可以将连在一起的大对象分割成几个小的对象。 img2 = Image('ps2.jpg').scale(0.5) imgBin2 = img2.binarize() #腐蚀相邻的,白变黑 里面带数字就是腐蚀几次 例如erode(3)就是腐蚀三次 erodeImg = imgBin2.erode() #膨胀 相邻白的黑点变成白 dilateImg = imgBin2.dilate() side1 = erodeImg.sideBySide(img2) side2 = side1.sideBySide(dilateImg) side2.show() time.sleep(3)
13.将图片的颜色进行分割,取某点的颜色
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color import time img1 = Image('snake.png') #得到某个点的色素 print img1.getPixel(100,100) #转换成Hsv模式的图片 hsv = img1.toHSV() hsv.show() print hsv.getPixel(100,100) #转换成RGB模式的图片 rgb = img1.toRGB() hsv.save('snake2.png') print rgb.getPixel(100,100) gray = img1.grayscale() print gray.getPixel(100,100) #在一个框中显示所以图片 contain1 = img1.sideBySide(hsv) contain2 = rgb.sideBySide(gray) combox = contain1.sideBySide(contain2,'top') combox.show() time.sleep(5)
14.图片颜色的加减乘除,特别注意先乘2再除2的情况
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color import time img = Image('ps1.jpg') #图片相加就是每个点都是像素点相加 最大的特点就是相对性变亮了 #当然,也可以使用相乘 想减 added = img +img muti = img*2 sword = img-img division = img/2 added.show() #time.sleep(1) sword.show() #time.sleep(2) muti.show() #time.sleep(2) division.show() time.sleep(1) #在数学上一个数乘以2再除以2肯定是相等的,但是在color中因为最大值是255,所以不一定相等 division2 = muti/2 contain = muti.sideBySide(img.sideBySide(division2)) contain.show() time.sleep(5)
15.图片颜色直方图
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color import time img = Image('snake.png') #获取的是图片中各个像素点的数目,一个值代表的是一个范围内像素点数目。默认是50个 histogram = img.histogram(256) #转换成HSV格式后的像素点 histogram1 = img.hueHistogram() print histogram1 #为色度峰值,可以使剨創剥剐剥剡剫剳刨利函数完成 peaks = img.huePeaks() print peaks time.sleep(1) #制作二值化掩模,去除color1和color2之外的所有颜色,只保留它们之间的颜色 mask = img.createBinaryMask(color1 = (100,150,180),color2 = Color.BLACK) #使用morphClose利清理图像上的噪音 mask = mask.morphClose() result = img - mask.invert() result.show() time.sleep(3)
16.制造运动模糊效果
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#!/usr/bin/python # -*- coding: UTF-8 -*- from SimpleCV import Image,Color,Camera,Display import time frameWeight =0.2 cam = Camera() lastImage = cam.getImage() display = Display((680, 480)) while not display.isDone(): img = cam.getImage() img = (img * frameWeight) + (lastImage * (1 - frameWeight)) img.save(display) lastImage = img lastImage.show() time.sleep(0.5)
如果你觉得本文对你有用,可以打赏一下!非常感谢
最后
以上就是任性雨最近收集整理的关于Pyhon 使用simpleCV包的全部内容,更多相关Pyhon内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复