本人使用的是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. 重磅:《肠道产业》2020-2021年度榜单
  2. HTML5 body设置全屏背景图片 如何让body的背景图片自适应整个屏----实战经验
  3. zend studio报错
  4. 怎样改动、扩展并重写Magento代码
  5. CSS的一些基本样式的简单介绍
  6. 加强计算机网络应用,加强计算机网络管理技术的创新应用
  7. c语言自学教程——数组
  8. 声音存储空间计算公式_声音文件存储量的计算公式
  9. 微信小程序前四周内容总结
  10. macos系统升级到big sur以后safari浏览器崩溃怎么办?
  11. 小达同学软件测试第三讲
  12. 根据微信的code_url 给前端返回二维码图片--转换成base
  13. 小红书2023年3C行业月报(2月)(附下载)
  14. FreeBSD下查看服务器型号和硬件信息
  15. java 首字母转小写
  16. 《Universal Language Model Fine-tuning for Text Classification》翻译
  17. 线性代数:特征值、特征多项式和特征向量
  18. 基于FPGA的自动小车控制设计Verilog开发
  19. n6005/n5105在debian11实现jellyfin硬解
  20. 普陀区科技创新型小巨人企业奖励不超过100万元

热门文章

  1. 用mysqlbinlog命令查看二进制日志文件提示: -bash:mysqlbinlog:command not found
  2. linker command failed with exit code 1 (use -v to see invocat)错误的处理方法
  3. mc服务器libs文件夹,我的世界为什么开不了服务器
  4. 基于谷歌最新网络模型EfficientNet,使用迁移学习对猫狗图像识别分类的实际案例应用
  5. 出租车计价 (15分)
  6. 51单片机 LED点亮、闪烁以及流水灯实现
  7. 易课寄在线购课系统开发笔记(二十五)--完成课程详情页面展示相关功能(应用Redis缓存)
  8. Flowable 79 张表都是干嘛的?
  9. 将你的网站从MySQL改为PostgreSQL
  10. 图像语义分割实战:TensorFlow Deeplabv3+ 训练自己数据集