SimpleCV汽车检测示例

时间:2014-05-12 03:32:24

标签: python opencv computer-vision simplecv

所以...通过本书实用计算机视觉与SimpleCV ,第5章 - 与在线教程here中的相同示例。黄色汽车的平均颜色有一个非常不同的值,所以我回过头示例代码,插入了一些注释,添加了一些东西来显示(然后干净地关闭)每个阶段的图像。

from SimpleCV import Image
import time

# Load images.
car_in_lot = Image("parking-car.png")
car_not_in_lot = Image("parking-no-car.png")

# Crop image to region-of-interest.
car = car_in_lot.crop(470,200,200,200)
car.show()
time.sleep(5)
car.show().quit()

# Create greyscale image showing how far from yellow various colors are.
yellow_car = car.colorDistance(Color.YELLOW)
yellow_car.show()
time.sleep(5)
yellow_car.show().quit()

# Subtract greyscale image from cropped image to show just the yellow portions.
only_car = car - yellow_car
only_car.show()
time.sleep(5)
only_car.show().quit()

print only_car.meanColor()

返回(0.6376000000000001, 2.096775, 5.170425)的结果,而不是本书和教程中给出的(25.604575, 18.880775, 4.4940750000000005)

带车的裁剪停车位的第一张图片看起来很好......但是灰度图像看起来很奇怪。我得到的图像旋转了90度,并没有像示例中那样。这是Dropbox上的link

从那里......到目前为止,色差距离it should be ...平均颜色值不正确。

关于为什么colorDistance()步骤返回了像它一样的时髦旋转灰度图像的任何想法或建议?

1 个答案:

答案 0 :(得分:1)

colorDistance似乎返回旋转的翻转图像。如果您进行快速转换,则可以避免此类干扰。 e.g。

x,y,w,h   = 470,200,200,200
cImg      = Image('parking-car.png')
ncImg     = Image('parking-no-car.png')
car       = cImg.crop(x,y,w,h)
ncar      = nImg.crop(x,y,w,h)
ycar      = car.colorDistance(Color.YELLOW).rotateRight().flipHorizontal()
nycar     = ncar.colorDistance(Color.YELLOW).rotateRight().flipHorizontal()
only_car  = car - ycar
nonly_car = ncar - nycar 
carmc     = only_car.meanColor()
ncarmc    = nonly_car.meanColor()

print "yellow car present, mean color:", carmc
print "no yellow car present, mean color", ncarmc

至于平均颜色不同,我会假设图像已经略微调整或者Color.YELLOW的值已经改变......

顺便说一句,如果您要比较两个已经调用了colorDistance方法的图像(或者从另一个中减去一个裁剪),那么它们都以相同的方式进行了变换,因此您只需要执行rotateRight( ).flipHorizo​​ntal()在最终图像显示之前(如果有的话)。