Ejemplo n.º 1
0
def showThresholdedImage(src,
                         dst,
                         Threshold,
                         show=True,
                         method=cv.CV_THRESH_BINARY):

    n = src.nChannels
    m = Threshold

    if (n > 1):
        src2 = cv.CreateImage((src.width, src.height), src.depth, 1)
        cv.ConvertImage(src, src2, cv.CV_BGR2GRAY)
    else:
        src2 = src

    cv.Threshold(src2, dst, m, 255, method)
    i = 0
    if (show):
        cv.NamedWindow("Original", 1)
        cv.NamedWindow("Thresholded", 1)
        while (i < 6000):
            cv.ShowImage("Original", src2)
            cv.ShowImage("Thresholded", dst)
            cv.WaitKey(300)
            i = i + 1

    return
Ejemplo n.º 2
0
    def fetch_image(self, cam):
        cam.simulate()

        if not cam.pixels:
            return None, None
        cv_img = cv.CreateImageHeader((cam.width, cam.height), cv.IPL_DEPTH_8U,
                                      3)
        cv.SetData(cv_img, cam.pixels, cam.width * 3)
        cv.ConvertImage(cv_img, cv_img, cv.CV_CVTIMG_FLIP)
        im = self.bridge.cv_to_imgmsg(cv_img, "rgb8")

        caminfo = CameraInfo()
        caminfo.header = im.header
        caminfo.height = cam.height
        caminfo.width = cam.width
        caminfo.D = 5 * [0.]
        caminfo.K = sum([list(r) for r in cam.K], [])
        caminfo.P = sum([list(r) for r in cam.P], [])
        caminfo.R = sum([list(r) for r in cam.R], [])

        return im, caminfo
Ejemplo n.º 3
0
def main():
    captura = cv.CreateCameraCapture(
        1)  ##guardamos la imagen de la camara web usb
    global arra  ##cargamos el arreglo de los objetos
    font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 3,
                       3)  #creamos el fondo para las letras
    proses = 0
    sumaa = 0
    while True:
        img = cv.QueryFrame(captura)
        #cv.Resize(img,img,cv.CV_INTER_CUBIC)
        #tiempoi = time.time()
        #draw = ImageDraw.Draw(img)
        anch, alt = cv.GetSize(img)  ##obtenemos las dimensiones
        k = cv.WaitKey(10)
        ##esperemos para cualquier incombeniente
        #cv.SaveImage("test.jpg",img)
        cv.Smooth(img, img, cv.CV_GAUSSIAN, 9,
                  9)  ##aplicamos filtro para reducir el ruido
        #cv.SaveImage("sruido.jpg",img)
        grey = cv.CreateImage(cv.GetSize(img), 8,
                              1)  ##creamos una imagen en blanco
        bn = cv.CreateImage(cv.GetSize(img), 8, 1)
        ##creamos imagen en blanco
        cv.CvtColor(
            img, grey, cv.CV_BGR2GRAY
        )  ###pasamos la imagen a escala de grises y la guardamos en la imagen ne blanco
        #cv.SaveImage("gris.jpg",grey)
        cv.ConvertImage(img, bn, 0)
        ##convertimos la imagen a blancos
        threshold = 40  ##umbral 1 para binarizacion
        colour = 255  ## umbral 2 para binarizacion
        cv.Threshold(grey, grey, threshold, colour,
                     cv.CV_THRESH_BINARY)  ##aplicamos binarizacion
        cv.Canny(
            grey, bn, 1, 1, 3
        )  ##preparamos para obtener contornos, esto nos muestra la imagen con los contornos
        #cv.SaveImage("cont.jpg",bn)
        cv.SaveImage("grey.jpg", grey)  ##guardamos la imagen
        cambio("grey.jpg")  ##invertimos la imagen y discretisamos
        imgg = cv.LoadImage(
            'ngrey.jpg',
            cv.CV_LOAD_IMAGE_GRAYSCALE)  ##cargamos nuevamente la imagen
        storage = cv.CreateMemStorage(
            0)  ##para guardar los puntos y no saturar la memoria
        contours = cv.FindContours(
            imgg, storage, cv.CV_RETR_TREE, cv.CV_CHAIN_APPROX_SIMPLE,
            (0, 0))  ##obtener los puntos de los contornos
        puntos = [
        ]  ##para guardar los diferente centros de los objetos y verificarlas posteriormente
        while contours:  ##leemos los contornos
            nx, ny = contours[
                0]  ##para verificar donde se encuentra los centros de la figura u bojeto
            mx, my = contours[0]  ##
            ancho, altura = cv.GetSize(img)  ##obtenemos el tama de la imagen
            for i in range(len(contours)):  ##verificamos las esquinas
                xx, yy = contours[i]
                if xx > mx:
                    mx = xx
                if xx < nx:
                    nx = xx
                if yy > my:
                    my = yy
                if yy < ny:
                    ny = yy
            a, b, c, d = random.randint(0, 255), random.randint(
                0,
                255), random.randint(0,
                                     255), random.randint(0,
                                                          255)  ##para el color
            if len(contours
                   ) >= 50:  ##si son mas de 50 puntos es tomada como figura
                cv.Rectangle(img, (nx, ny), (mx, my), cv.RGB(0, 255, 0), 1, 8,
                             0)  ##pintamos el rectangulo con las esquinas
                #are = abs(mx-nx)*abs(my-ny)
                puntos.append((abs(mx + nx) / 2,
                               abs(my + ny) / 2))  ##agregamos los centros
                #are = abs(mx-nx)*abs(my-ny)
            contours = contours.h_next(
            )  #pasamos con los siguientes puntos unidos
        nuevo = de(
            puntos, anch, alt
        )  ##verificamos los objetos y obtenemos los centros de los mismos

        for i in range(len(nuevo)):  ## pintamos la direccin de los mismos
            x, y, z = nuevo[i]
            cv.PutText(img, "" + z + "", (x, y), font, 255)
        tiempof = time.time()  ##verificar rendimiento
        cv.ShowImage('img', img)
        #cv.SaveImage("final.jpg",img)
        #tiempoa = tiempof - tiempoi
        #proses += 1
        #sumaa  =  sumaa + tiempoa
        #print float(sumaa)/float(proses)
        #f.write(""+str(proses)+" "+str(tiempoa)+"\n")
        ##verificar rendimientp
        if k == 'f':  ##si se preciona f se sale
            break
Ejemplo n.º 4
0
     cv.SetCaptureProperty(c, cv.CV_CAP_PROP_POS_FRAMES, current_frame)
 frame = cv.QueryFrame(
     c)  #primer frame obtenido para el calculo del flujo optico
 if frame == None:
     break  #si no se obtuvo ningun frame, se termino el archivo de video
 cv.Resize(
     frame,
     thumbnail)  #si se obtuvo un frame, se cambia el tamano al deseado
 first_frame = cv.CloneImage(thumbnail)
 output = cv.CloneImage(
     thumbnail)  #se crea una copia del frame para dibujar sobre el
 #se pasa un filtro gaussiano para reducir ruido
 cv.Smooth(thumbnail, thumbnail, cv.CV_GAUSSIAN, GAUSSIAN_BLUR_FACTOR,
           GAUSSIAN_BLUR_FACTOR)
 #se voltean las imagenes para corregir un error de opencv
 cv.ConvertImage(thumbnail, frame1_1C, cv.CV_CVTIMG_FLIP)
 #cv.ConvertImage(thumbnail, output, cv.CV_CVTIMG_FLIP)
 frame = cv.QueryFrame(
     c)  #segundo frame obtenido para el calculo del flujo optico
 if frame == None: break
 cv.Resize(frame, thumbnail)
 second_frame = cv.CloneImage(thumbnail)
 motion = get_motion_mask(first_frame, second_frame)
 cv.Smooth(thumbnail, thumbnail, cv.CV_GAUSSIAN, GAUSSIAN_BLUR_FACTOR,
           GAUSSIAN_BLUR_FACTOR)
 cv.ConvertImage(thumbnail, frame2_1C, cv.CV_CVTIMG_FLIP)
 t = Thread(target=motion_bbox, args=(
     output,
     motion,
 ))
 t.run()
Ejemplo n.º 5
0
        arr2[i,j,0]=arr1[0]
        arr2[i,j,1]=arr1[1]
        arr2[i,j,2]=arr1[2]
        #print pix

src=cv.CreateImage(cv.GetSize(img),8,3)
grayImg=cv.CreateImage(cv.GetSize(img),8,1)
grayImg1=cv.CreateImage(cv.GetSize(img),8,1)
j=0
i=0
for j in range(32):
    for i in range(32):
        pix1=arr2[i,j]
        cv.Set2D(src,j,i,pix1)

cv.ConvertImage(img,grayImg,cv.CV_BGR2GRAY)
i=0
j=0
for j in range(32):
    for i in range(32):
        pix2=cv.Get2D(grayImg,j,i)
        temp=pix2[0]
        grayArr[i+j*32]=temp
        #print temp
i=0
j=0
for j in range(32):
    for i in range(32):
        temp=grayArr[i+j*32]
        cv.Set2D(grayImg1,j,i,cv.Scalar(temp,0,0))