So working with windows, python 2.7 and simplecv I am making a live video with my webcam and want simplecv to give me a grayscale version of the video. Is there any simple way to achieve that?
I found the command
on the opencv page, which should do exactly that but when I run it I get the error:
NameError: name "grayscale" is not defined
I am currently using this prewritten code for object tracking but I don’t know whether I should use the command I found, and where in the code I should put it, does anybody have an idea? :
print __doc__ import SimpleCV display = SimpleCV.Display() cam = SimpleCV.Camera() normaldisplay = True while display.isNotDone(): if display.mouseRight: normaldisplay = not(normaldisplay) print "Display Mode:", "Normal" if normaldisplay else "Segmented" img = cam.getImage().flipHorizontal() dist = img.colorDistance(SimpleCV.Color.BLACK).dilate(2) segmented = dist.stretch(200,255) blobs = segmented.findBlobs() if blobs: circles = blobs.filter([b.isCircle(0.2) for b in blobs]) if circles: img.drawCircle((circles[-1].x, circles[-1].y), circles[-1].radius(),SimpleCV.Color.BLUE,3) if normaldisplay: img.show() else: segmented.show()
In simple cv theres a function called toGray() for example:
import SimpleCV as sv img = img.jpg sv.img.jpg.toGray() return gimg.jpg
There are multiple ways to do this in SimpleCV.
One way has been already described, it’s the toGray() method.
There’s also a way you can do this with gaussian blur, which also helps to remove image noise:
from SimpleCV import * img = Image("simplecv") img.applyGaussianFilter(grayscale=True)
After the third line, img object contains the image with a lot less high-frequency noise, and converted to grayscale.
You may check out pyimagesearch.com who works with OpenCV, but he explains why applying Gaussian Blur is a good idea.