Как преобразовать изображение RGB в серое с помощью simplecv?

Итак, работая с окнами, python 2.7 и simplecv, я делаю живое видео с помощью своей веб-камеры и хочу, чтобы simplecv предоставил мне версию видео в градациях серого. Есть ли простой способ добиться этого? я нашел команду

grayscale()

на странице opencv, которая должна делать именно это, но когда я запускаю ее, я получаю сообщение об ошибке:

NameError: name "grayscale" is not defined

В настоящее время я использую этот предварительно написанный код для отслеживания объектов, но я не знаю, следует ли мне использовать команду, которую я нашел, и где в коде я должен ее поместить, есть ли у кого-нибудь идея? :

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()

person Jennan    schedule 04.08.2016    source источник
comment
img = cam.getImage().flipHorizontal().toGray() ?   -  person Cabu    schedule 04.08.2016
comment
Это сработало для меня, спасибо!   -  person Jennan    schedule 05.08.2016


Ответы (2)


В SimpleCV есть несколько способов сделать это. Один из способов уже описан, это метод toGray(). Есть также способ сделать это с помощью размытия по Гауссу, который также помогает удалить шум изображения:

from SimpleCV import *
img = Image("simplecv")
img.applyGaussianFilter(grayscale=True)

После третьей строки объект img содержит изображение с намного меньшим количеством высокочастотного шума и преобразовано в оттенки серого.

Вы можете проверить pyimagesearch.com, который работает с OpenCV, но он объясняет, почему применение Gaussian Blur — хорошая идея.

person Jan Novák    schedule 27.02.2017

В простом cv есть функция toGray(), например, она может работать, а может и не работать. Так что, пожалуйста, не голосуйте за меня, у меня нет представителя. :(

import SimpleCV as sv
img = img.jpg
sv.img.jpg.toGray()
    return gimg.jpg
person thesonyman101    schedule 04.08.2016