本人使用的是Ubuntu16.04,本人安装simpleCV的教程放在上一个blog中,如果您需要可以点击链接ubuntu 中安装SimpleCV

本blog中所有的代码都是经过本人实测、可用的。如果您觉得需要的话可以直接使用

1.使用simpleCV中的Camera,Display,Image拍摄照片和显示照片


#!/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.在拍摄的照片中添加文字,并且将拍摄的照片保存到当前目录中

#!/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.找到照片中的光斑

#!/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.使用摄像头拍摄显示照片,或者拍摄一个固定大小图片,添加的文字给定位置

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from SimpleCV import Camera,Display,Image
import timecam = 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.使用摄像头拍摄视频

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from SimpleCV import Camera,Display,Image
import time
cam = Camera()#Camera(1),就是调用第二个摄像头
cam.live()

6.保存拍摄的图片,并且添加文字。文字颜色随机

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from SimpleCV import Camera,Display,Image,Color
import timecam = 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.REDimg.drawText('photo saved.',color = Color().getRandom())img.save()#设置睡眠时间,相当于可以定时拍照time.sleep(1)counter = counter + 1 

7.将图片使用不同格式保存

#!/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.将图片进行放大,缩小

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from SimpleCV import Image,Color
import time
from encodings.punycode import adaptimg  = 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.将图片进行裁剪

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from SimpleCV import Image,Color
import timeimg  = 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.将图片进行旋转和裁剪后旋转

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from SimpleCV import Image,Color
import timeimg  = 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.将图片进行翻转,扭曲和切片

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from SimpleCV import Image,Color,Camera,Display
import timeimg  = 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.让图片进行二值化,膨胀,腐蚀

#!/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.将图片的颜色进行分割,取某点的颜色

#!/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的情况

#!/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.图片颜色直方图

#!/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.制造运动模糊效果

#!/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 = imglastImage.show()time.sleep(0.5)

如果你觉得本文对你有用,可以打赏一下!非常感谢

Pyhon 使用simpleCV包相关推荐

  1. 【cmd网速问题】解决cmd控制台下载东西网速过慢的问题

    今天在用cmd 装pyhon的numpy包时候发现pip上网速只有几k每秒, 虽然只有14个m但是要下足足30分钟 但是由于电脑没电了禁不起等了,只有搜解决办法了 CMD下载速度慢不是电脑问题,而是下 ...

  2. ROS修改:ubuntu系统更改默认python版本(重要操作)

    ubuntu18.04+ROS melodic 困扰:ROS用到python2,而各种目标检测源码用到python3,而且各种包也要安在python3的环境下,而不是python2. 解决:基于upd ...

  3. Linux常用命令全集

    Table Of Contents 1. Linux常用命令全集.CHM 9 1.1 备份压缩 9 1.1.1 ar 9 1.1.2 bunzip2 11 1.1.3 bzip2 12 1.1.4 b ...

  4. Python编程语言学习:包导入和模块搜索路径简介、使用方法之详细攻略

    Python编程语言学习:包导入和模块搜索路径简介.使用方法之详细攻略 目录 包导入和模块搜索路径简介 1.Pyhon搜索模块路径的机制 2.自定义配置搜索路径

  5. ubuntu下Anaconda安装gym包

    背景:最近在ubuntu上的pycharm安装gym遇到了好多坑,这里我用Anaconda管理pyhon包 坑1:有些包Anaconda中没有,需要自己安装,这就到了坑2... 坑2:安装Anacon ...

  6. Android批量打包 如何一秒内打完几百个apk渠道包

    在国内Android常用渠道可能多达几十个,如:  谷歌市场.腾讯应用宝.百度手机助手.91手机商城.360应用平台.豌豆荚.安卓市场.小米.魅族商店.oppo手机.联想乐商.中兴汇天地.华为.安智. ...

  7. python 去除panda安装包_沉淀,再出发:python中的pandas包

    沉淀,再出发:python中的pandas包 一.前言 python中有很多的包,正是因为这些包工具才使得python能够如此强大,无论是在数据处理还是在web开发,python都发挥着重要的作用,下 ...

  8. 详解xlwings包,用Python代替Excel VBA

    详解xlwings包,用Python代替Excel VBA <代替VBA! 用Python轻松实现Excel编程>demo 主要内容 Python语法基础 Excel对象模型:OpenPy ...

  9. 非线性规划的拉格朗日乘子法python编程python包编程

    非线性规划的拉格朗日乘子法&python编程&python包编程 一.拉格朗日乘子法 1.1 拉格朗日乘子法定义 1.2 KKT条件定义 1.3 拉格朗日乘子法手工推导例题 二.Pyt ...

最新文章

  1. postgresql中COPY的用法
  2. SharePoint 2013 Search 配置总结
  3. java finally 抛出异常_java抛出异常与finally实例解析
  4. Flink 实时计算 - 维表 Join 解读
  5. Halcon中visualize_object_model_3d算子详解
  6. [转载] Java实现归并排序(超详细,新手请进)
  7. 家用电器用户行为分析与事件识别_数据产品指北:用户行为分析平台
  8. c语言void结尾,c语言中的void和void*
  9. 计算机指针知识,指针_计算机基础知识142页.ppt
  10. 计算机如何快速访问文件夹,高手教你如何快速定位文件夹(图文介绍)
  11. 基于(LinuxC语言)的UDP局域网聊天室
  12. KingbaseES和PostgreSQL兼容
  13. 读懂trace file (tkprof格式化) 6
  14. 程序员如何边工作边创业?
  15. 六年级下册第二单元计算机,六年级下册语文第二单元作文(精选10篇)
  16. 43000张图片和5项原则:用数据科学方法评选十大最火表情包
  17. Arya and Bran Game of the Rows Multiple Clocks
  18. 【2020算法练习一】笔试选择题 快手2020校园招聘秋招笔试--算法A试卷
  19. 推荐一款神仙颜值的 Redis 客户端工具,开源啦
  20. rootfs 制作ubuntu_【整理】为何要把文件夹形式的rootfs制作成单个rootfs镜像文件...

热门文章

  1. 集中式版本控制与分布式版本控制
  2. 星起航:我国对外贸易强势发展,武汉自贸区未来或将成为外贸主力
  3. mysql数据库连接失败_mysql数据库连接失败问题排查
  4. 使用百度API,分分钟搞定身份证正反面图片中的文字识别(Java代码实现)
  5. IBM架构解决方案设计
  6. 学校计算机班班通维护保养记录,中心学校班班通设备维护保养制度
  7. 多媒体计算机设备使用注意,多媒体教学设备使用管理制度
  8. 【无标题】解决最新版discuz3.4安装模板插件提示【对不起,您安装的不是正版应用】
  9. Arduino蓝牙模块实验(HC-42)
  10. Windows常见DOS命令