Beispiel #1
0
def rotate(img, angle):
    center = (img.width / 2.0, img.height / 2.0)
    rot_mat = cv.CreateMat(2, 3, cv.CV_32FC1)
    cv.GetRotationMatrix2D(center, angle, 1.0, rot_mat)
    dst = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_8U, 1)
    cv.WarpAffine(img, dst, rot_mat, fillval=255)
    return dst
Beispiel #2
0
	def rotacion_y_posicion_robot(self,robo_x=200,robo_y=100,robo_th=80):
		"""
		\brief graficar el robot en el lienzo de mapa 
		\param self no se necesita incluirlo al utilizar la funcion ya que se lo pone solo por ser la definicion de una clase
		\param robo_x coordenada x de la odometria del robot 
		\param robo_y coordenada y de la odometria del robot 
		\param robo_th Valor Th del robot
		\return Nada
		"""
		image_mapa=cv.LoadImage(self.nombre_archivo1, cv.CV_LOAD_IMAGE_COLOR)
		dimensiones_robot=self.dimensiones_robot
		image1=cv.CreateImage(dimensiones_robot,8,3)
		image_mascara=cv.CreateImage(dimensiones_robot,8,1)
		
		##rotacion
		#Rotar el robot
		src_center=dimensiones_robot[0]/2,dimensiones_robot[1]/2
		rot_mat=cv.CreateMat( 2, 3, cv.CV_32FC1 )
		cv.GetRotationMatrix2D(src_center, robo_th, 1.0,rot_mat);
		cv.WarpAffine(self.robot,image1,rot_mat)
		#crear filtro para negro
		cv.InRangeS(image1,cv.RGB(0,0,0),cv.RGB(14,14,14),image_mascara)
		cv.Not(image_mascara,image_mascara)
		#cv.ReleaseImage(image1)
		
		#reducir y posicion
		cv.SetImageROI(image_mapa,(robo_x,robo_y, dimensiones_robot[0], dimensiones_robot[1]));
		cv.Copy(image1,image_mapa,mask=image_mascara)
		cv.ResetImageROI(image_mapa);
		cv.SaveImage(self.nombre_archivo, image_mapa) #Saves the image#
Beispiel #3
0
def rotate(im, angle):
    """
	Rotates image by angle degrees clockwise.
	
	**Parameters:**
		* im (cvArr) - The source image.
		* angle (float) - Angle in degrees.
	
	**Returns:**
		The rotated image.
	
	.. todo::
		* Arguments to specifcy background colour and clockwise/anti-clockwise.
		* Enclosed rectangle formula.
	"""
    centre = ((im.width - 1) / 2, (im.height - 1) / 2)
    rot = cv.CreateMat(2, 3, cv.CV_32FC1)
    cv.GetRotationMatrix2D(centre, -angle, 1.0, rot)
    dst = create(im)
    cv.WarpAffine(im, dst, rot)

    # Code in progress to return the new rectangle contained in the rotated image

    # w = float(im.width)
    # 	h = float(im.height)
    # 	angle = (angle/360.0)*2*math.pi
    # 	width = w/(math.sin(angle)*(h/w + (math.cos(angle)/math.sin(angle))))
    # 	height = (w/h)*width
    # pt1 = (centre[0]-int(width/2), centre[1]-int(height/2))
    # pt2 = (centre[0]+int(width/2)-1, centre[1]+int(height/2)-1)
    # cv.Rectangle(dst, pt1, pt2, 255)
    return dst
Beispiel #4
0
def rotate(src, center, angle):
    mapMatrix = cv.CreateMat(2,3,cv.CV_64F)
    #cv.GetRotationMatrix2D( center, 450 - angle, 1.0, mapMatrix)
    cv.GetRotationMatrix2D( center, 270 - angle, 1.0, mapMatrix)
    dst = cv.CreateImage( cv.GetSize(src), src.depth, src.nChannels)
    cv.SetZero(dst)
    cv.WarpAffine(src, dst, mapMatrix)
    return dst
Beispiel #5
0
def rotateImage(image, angle):
    image_center = tuple(numpy.array(cv.GetSize(image))/2)
    rot_mat = cv.CreateMat(2, 3, cv.CV_32F)
    cv.GetRotationMatrix2D(image_center, angle, 1.0, rot_mat)
    result = cv.CreateImage(cv.GetSize(image), image.depth, image.nChannels) 
    cv.WarpAffine(image, result, rot_mat)

    return result
Beispiel #6
0
    def rotate_image(self, image, angle, around=None):
        if around is None:
            around = (0, 0)
        rotate = cv.CreateImage(cv.GetSize(image), image.depth, 1)
        rotate = cv.CloneImage(image)

        mapping = cv.CreateMat(2, 3, cv.CV_32FC1)
        cv.GetRotationMatrix2D(around, angle, 1, mapping)
        cv.WarpAffine(image, rotate, mapping)

        return rotate
    def scaleRot(self, im_small, d_scale, d_heading):
        cv.GetRotationMatrix2D((self.P1[0, 2] / self.performance.small_factor,
                                self.P1[1, 2] / self.performance.small_factor),
                               -d_heading, d_scale, self.rotscale_map)
        #cv.GetRotationMatrix2D((self.size_small[1]/2, self.size_small[0]/2), -d_heading, d_scale, self.rotscale_map)
        #self.rotscale_map = cv.fromarray(cv2.getRotationMatrix2D((np.float32(self.size_small[1])/2,np.float32(self.size_small[0])/2), -d_heading, d_scale))

        #alpha = d_scale * np.cos(-d_heading * np.pi/180)
        #beta = d_scale * np.sin(-d_heading * np.pi/180)
        #self.rotscale_map[0,2] = (1-alpha)*680 - beta*512
        #self.rotscale_map[1,2] = beta*680 + (1-alpha)*512

        cv.WarpAffine(im_small, im_small, self.rotscale_map)
Beispiel #8
0
    def img(self):
        '''return a cv image for the icon'''
        SlipThumbnail.img(self)

        if self.rotation:
            # rotate the image
            mat = cv.CreateMat(2, 3, cv.CV_32FC1)
            cv.GetRotationMatrix2D((self.width / 2, self.height / 2),
                                   -self.rotation, 1.0, mat)
            self._rotated = cv.CloneImage(self._img)
            cv.WarpAffine(self._img, self._rotated, mat)
        else:
            self._rotated = self._img
        return self._rotated
Beispiel #9
0
def extract_plate(image, cluster):
    """De-skew and extract a detected plate from an image."""
    cluster = list(cluster)
    cluster.sort(cmp=lambda x, y: cmp(x.cx, y.cx))
    o = cluster[-1].cy - cluster[0].cy
    h = cluster[0].dist_to(cluster[-1])
    angle = math.asin(o / h)
    matrix = cv.CreateMat(2, 3, cv.CV_32FC1)
    cx = (cluster[0].cx + cluster[-1].cx) / 2.0
    cy = (cluster[0].cy + cluster[-1].cy) / 2.0
    cv.GetRotationMatrix2D((cx, cy), angle * 180.0 / math.pi, 1, matrix)
    warp = cv.CreateImage(cv.GetSize(image), cv.IPL_DEPTH_8U, 3)
    cv.WarpAffine(image, warp, matrix)
    ret = cv.CreateImage(
        (int(h + cluster[0].dia * 3.0), int(cluster[0].dia * 1.5)),
        cv.IPL_DEPTH_8U, 3)
    cv.GetRectSubPix(warp, ret, (cx, cy))
    print cv.GetSize(ret)
    return ret
Beispiel #10
0
def doRotate(image,
             alpha,
             fillval=0,
             resize=True,
             interpolation=cv.CV_INTER_CUBIC):
    matrix = cv.CreateMat(2, 3, cv.CV_32FC1)
    w, h = cv.GetSize(image)
    center = ((w - 1) / 2.0, (h - 1) / 2.0)
    cv.GetRotationMatrix2D(center, alpha, 1.0, matrix)
    if resize:
        d = sqrt(w * w + h * h)
        d2 = d / 2.0
        matrix[0, 2] += d2 - center[0]
        matrix[1, 2] += d2 - center[1]
        d = int(d)
        size = (d, d)
    else:
        size = cv.GetSize(image)
    result = cv.CreateImage(size, image.depth, image.nChannels)
    cv.WarpAffine(image, result, matrix,
                  interpolation + cv.CV_WARP_FILL_OUTLIERS, fillval)
    return result
    def rotate(self, degrees):
        if (degrees > 180):
            # Flip around both axes
            cv.Flip(self.image, None, -1)
            degrees = degrees - 180

        img = self.image
        size = cv.GetSize(img)

        if (degrees / 90 % 2):
            new_size = (size[1], size[0])
            center = ((size[0] - 1) * 0.5, (size[0] - 1) * 0.5)
        else:
            new_size = size
            center = ((size[0] - 1) * 0.5, (size[1] - 1) * 0.5)

        mapMatrix = cv.CreateMat(2, 3, cv.CV_64F)
        cv.GetRotationMatrix2D(center, degrees, 1.0, mapMatrix)
        dst = cv.CreateImage(new_size, self.image_depth, self.image_channels)
        cv.SetZero(dst)
        cv.WarpAffine(img, dst, mapMatrix)
        self.image = dst
Beispiel #12
0
def doRotate(image,
             alpha,
             fillval=0,
             resize=True,
             interpolation=cv.CV_INTER_CUBIC):
    matrix = cv.CreateMat(2, 3, cv.CV_32FC1)
    w, h = cv.GetSize(image)
    center = ((w - 1) / 2.0, (h - 1) / 2.0)
    cv.GetRotationMatrix2D(center, alpha, 1.0, matrix)
    if resize:
        angle = rad(abs(alpha))
        nw = w * cos(angle) + h * sin(angle)
        nh = w * sin(angle) + h * cos(angle)
        ncenter = (nw / 2.0, nh / 2.0)
        matrix[0, 2] += ncenter[0] - center[0]
        matrix[1, 2] += ncenter[1] - center[1]
        size = (int(ceil(nw)), int(ceil(nh)))
    else:
        size = cv.GetSize(image)
    result = cv.CreateImage(size, image.depth, image.nChannels)
    cv.WarpAffine(image, result, matrix,
                  interpolation + cv.CV_WARP_FILL_OUTLIERS, fillval)
    return result
Beispiel #13
0
if __name__ == "__main__":

    fps = 25.0
    target_dur = 1.0 / fps

    camera = cv.CreateCameraCapture(0)
    width = cv.GetCaptureProperty(camera, cv.CV_CAP_PROP_FRAME_WIDTH)
    height = cv.GetCaptureProperty(camera, cv.CV_CAP_PROP_FRAME_HEIGHT)
    cv.SetCaptureProperty(camera, cv.CV_CAP_PROP_FRAME_WIDTH, 640)
    cv.SetCaptureProperty(camera, cv.CV_CAP_PROP_FRAME_HEIGHT, 480)
    width = 640
    height = 480
    print("WEBCAM: Initialized camera with", width, "x", height)
    global gMapping
    gMapping = cv.CreateMat(2, 3, cv.CV_32FC1)
    cv.GetRotationMatrix2D((width / 2.0, height / 2.0), 180.0, 1.0, gMapping)

    cv.NamedWindow("Webcam")
    cv.MoveWindow("Webcam", 1280, 0)
    im = get_image(camera, width, height)
    cv.ShowImage("Webcam", im)
    time.sleep(0.2)

    s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
    connected = False
    while not connected:
        try:
            s.connect("\0vidsocket")
            connected = True
        except:
            pass
Beispiel #14
0

puntos_horizontales  = puntosParaTemplate (marcado, itemH)

print "horizontales: " + str (puntos_horizontales .__len__())

x1 = puntos_horizontales[0][0]
y1 = marcado.height-puntos_horizontales[0][1]

x2 = puntos_horizontales[1][0]
y2 = marcado.height-puntos_horizontales[1][1]

rot_mat = cv.CreateMat(2, 3, cv.CV_32F)
ang_rad = math.atan((y2-y1)/(x2-x1))
degrees = - (180 * ang_rad / math.pi)
cv.GetRotationMatrix2D( (marcado.width/2,marcado.height/2), degrees, 1, rot_mat );
cv.WarpAffine( marcado, marcadog, rot_mat );
opencv.cvReleaseImage(marcado)


puntos_horizontales  = puntosParaTemplate (marcado, itemH)
pos_respuesta  = puntosParaTemplate (marcadog, itemP)




print "respuestas: " + str (pos_respuesta.__len__())
#print "horizontal: " + str (pos_horizontal.__len__())
#print "sin marcar: " + str (sin_marcar.__len__())

Beispiel #15
0
# coding: utf-8

import cv, commands, sys, os

FOLDER_PATH = "/Users/satokazuki/Desktop/zikken5/G1_kirinuki/"
OUTPUT_PATH = "/Users/satokazuki/Desktop/zikken5/G1_database/"

img_list = os.listdir(FOLDER_PATH)
print img_list
count = 0

for img_name in img_list:
    angle = (0, 90, 180, 270)
    item = img_name.split(".")

    if item[1] == "png":
        im_in = cv.LoadImage(FOLDER_PATH + img_name)
        im_ro = cv.CreateImage(cv.GetSize(im_in), cv.IPL_DEPTH_8U, 3)
        rotate_mat = cv.CreateMat(2, 3, cv.CV_32FC1)
        count += 1

        for i in range(0, 4):
            cv.GetRotationMatrix2D((im_in.height / 2, im_in.width / 2),
                                   angle[i], 1, rotate_mat)
            cv.WarpAffine(im_in, im_ro, rotate_mat)
            cv.SaveImage(OUTPUT_PATH + item[0] + "_" + str(i) + ".png", im_ro)
            count += 1

print count
Beispiel #16
0
    w = -1
    h = -1
    bb = [100000, 100000, 0, 0]

    #skip rotation, if arg is given
    if (rotateArg != "rotate"):
        rotate = False

    # if we have more than one part, do the transformation
    if (rotate):

        #OpenCV needs rotation angle in degrees
        r = math.degrees(r)
        #get rotation matrix
        rotMat = cv.CreateMat(2, 3, cv.CV_32FC1)
        cv.GetRotationMatrix2D((centerX, centerY), -r, 1.0, rotMat)

        #get maximal Dimension of imageRotated, such that the rotated image fully fits
        warpedCornersX = [
            warpPointX(0, 0, rotMat),
            warpPointX(0, imageHeight - 1, rotMat),
            warpPointX(imageWidth - 1, 0, rotMat),
            warpPointX(imageWidth - 1, imageHeight - 1, rotMat)
        ]
        warpedCornersY = [
            warpPointY(0, 0, rotMat),
            warpPointY(0, imageHeight - 1, rotMat),
            warpPointY(imageWidth - 1, 0, rotMat),
            warpPointY(imageWidth - 1, imageHeight - 1, rotMat)
        ]
        minMaxCorners = [
def rotateImage(image, angle, center):
    rot_mat = cv.CreateMat(2, 3, cv.CV_32FC1)
    cv.GetRotationMatrix2D(center, angle * 180 / 3.14159, 1.0, rot_mat)
    result = cv.CloneImage(image)
    cv.WarpAffine(image, result, rot_mat)
    return result
def get_rotmat(I, degrees):
    w, h = cv.GetSize(I)
    rotmat = cv.CreateMat(2, 3, cv.CV_32F)
    cv.GetRotationMatrix2D((w / 2, h / 2), degrees, 1.0, rotmat)
    return rotmat
Beispiel #19
0
def processInput():

    print inputArgs.sessionFolder

    scriptDir = os.path.dirname(os.path.abspath(__file__))

    os.system("touch /run/shm/attitude2video_opencv.lock")

    data_yaw = []
    data_pitch = []
    data_roll = []

    data_speed = []
    data_altitude = []
    data_climb = []

    sourceFile_yaw = open(
        inputArgs.sessionFolder[0] + "/logs/interpolated_yaw_30fps.txt", 'r')
    for line in sourceFile_yaw:
        data_yaw.append(float(line))
    sourceFile_yaw.close()

    sourceFile_pitch = open(
        inputArgs.sessionFolder[0] + "/logs/interpolated_pitch_30fps.txt", 'r')
    for line in sourceFile_pitch:
        data_pitch.append(float(line))
    sourceFile_pitch.close()

    sourceFile_roll = open(
        inputArgs.sessionFolder[0] + "/logs/interpolated_roll_30fps.txt", 'r')
    for line in sourceFile_roll:
        data_roll.append(float(line))
    sourceFile_roll.close()

    sourceFile_speed = open(
        inputArgs.sessionFolder[0] + "/logs/interpolated_speed_30fps.txt", 'r')
    for line in sourceFile_speed:
        data_speed.append(float(line) * 3600 / 1000)
    sourceFile_speed.close()

    sourceFile_altitude = open(
        inputArgs.sessionFolder[0] + "/logs/interpolated_altitude_30fps.txt",
        'r')
    for line in sourceFile_altitude:
        data_altitude.append(float(line))
    sourceFile_altitude.close()

    sourceFile_climb = open(
        inputArgs.sessionFolder[0] +
        "/logs/interpolated_altitude_speed_30fps.txt", 'r')
    for line in sourceFile_climb:
        data_climb.append(float(line))
    sourceFile_climb.close()

    # create working directory in shared memmory
    if not os.path.exists("/dev/shm/attitude2video_opencv"):
        os.makedirs("/dev/shm/attitude2video_opencv")

        # prepare image templates
        os.system(
            "cp " + scriptDir +
            "/resources_opencv/speed.png /dev/shm/attitude2video_opencv/speed.png"
        )
        os.system(
            "cp " + scriptDir +
            "/resources_opencv/climb.png /dev/shm/attitude2video_opencv/climb.png"
        )
        os.system(
            "cp " + scriptDir +
            "/resources_opencv/center.png /dev/shm/attitude2video_opencv/center.png"
        )
        os.system(
            "cp " + scriptDir +
            "/resources_opencv/horizon.png /dev/shm/attitude2video_opencv/horizon.png"
        )
        os.system(
            "cp " + scriptDir +
            "/resources_opencv/terrain.png /dev/shm/attitude2video_opencv/terrain.png"
        )
        os.system(
            "cp " + scriptDir +
            "/resources_opencv/compass.png /dev/shm/attitude2video_opencv/compass.png"
        )
        os.system(
            "cp " + scriptDir +
            "/resources_opencv/altitude.png /dev/shm/attitude2video_opencv/altitude.png"
        )
        os.system(
            "cp " + scriptDir +
            "/resources_opencv/background.png /dev/shm/attitude2video_opencv/background.png"
        )

    # create working directory
    if not os.path.exists(inputArgs.sessionFolder[0] + "/media/work"):
        os.makedirs(inputArgs.sessionFolder[0] + "/media/work")
    if not os.path.exists(inputArgs.sessionFolder[0] +
                          "/media/work/attitude_opencv"):
        os.makedirs(inputArgs.sessionFolder[0] + "/media/work/attitude_opencv")

    ## Apptly named MAGIC
    # But before that, let's load the templates
    originalSpeed = cv.LoadImage("/dev/shm/attitude2video_opencv/speed.png")
    originalClimb = cv.LoadImage("/dev/shm/attitude2video_opencv/climb.png")
    originalCenter = cv.LoadImage("/dev/shm/attitude2video_opencv/center.png")
    originalHorizon = cv.LoadImage("/dev/shm/attitude2video_opencv/horizon.png"
                                   )  # -1 to load with alpha channel
    originalTerrain = cv.LoadImage(
        "/dev/shm/attitude2video_opencv/terrain.png")
    originalCompass = cv.LoadImage(
        "/dev/shm/attitude2video_opencv/compass.png")
    originalAltitude = cv.LoadImage(
        "/dev/shm/attitude2video_opencv/altitude.png")

    for x in range(0, len(data_speed)):
        progressbar(((x * 1.0 + 1) / len(data_speed)), "Rendering openCV:",
                    "(" + str(x + 1) + "/" + str(len(data_speed)) + ") " +
                    "attitude_%07d.jpg" % (x + 1), 20)
        #for x in range(0,1):
        currentSpeed = cv.CloneImage(originalSpeed)
        currentClimb = cv.CloneImage(originalClimb)
        currentCenter = cv.CloneImage(originalCenter)
        currentHorizon = cv.CloneImage(originalHorizon)
        currentTerrain = cv.CloneImage(originalTerrain)
        currentCompass = cv.CloneImage(originalCompass)
        currentAltitude = cv.CloneImage(originalAltitude)

        # 0 ------------------------------------------------

        # Rotate center
        picCenter = (originalHorizon.width / 2.0, originalHorizon.height / 2.0)
        outputMatrix = cv.CreateMat(2, 3, cv.CV_32F)
        cv.GetRotationMatrix2D(
            picCenter, (data_roll[x]), 1.0, outputMatrix
        )  # Positive number goes counter-clockwise, counter to what the original code did. Ergo, do * away with -1
        cv.WarpAffine(originalHorizon,
                      currentHorizon,
                      outputMatrix,
                      cv.CV_WARP_FILL_OUTLIERS + cv.CV_INTER_LINEAR,
                      fillval=(0, 0, 0, 0))

        # Rotate horizon
        picCenter = (originalCenter.width / 2.0, originalCenter.height / 2.0)
        outputMatrix = cv.CreateMat(2, 3, cv.CV_32F)
        cv.GetRotationMatrix2D(picCenter, (data_roll[x]), 1.0, outputMatrix)
        cv.WarpAffine(originalCenter,
                      currentCenter,
                      outputMatrix,
                      cv.CV_WARP_FILL_OUTLIERS + cv.CV_INTER_LINEAR,
                      fillval=(0, 0, 0, 0))

        # 1 ------------------------------------------------

        odmik = data_pitch[x] * 3.0 * -1.0  # Reverse it again.
        width = 640
        height = 360
        picCenter = (currentHorizon.width / 2.0, currentHorizon.height / 2.0)
        regionOfInterest = (int(picCenter[0] - (width / 2.0)),
                            int(picCenter[1] - (height / 2.0) + (odmik)),
                            int(width), int(height))
        thirdHorizon = cv.GetSubRect(currentHorizon, regionOfInterest)

        # Instead of copy-ing we do subtraction. Works, since we're using (mostly) black for displaying things. Templates need to be alpha-less and inverted.
        cv.Sub(thirdHorizon, originalTerrain, thirdHorizon)
        cv.Sub(thirdHorizon, currentCenter, thirdHorizon)

        # 2 ------------------------------------------------
        zacetnaPozicija = width / 2.0
        if data_yaw[x] <= 180:
            zacetnaPozicija = zacetnaPozicija + 3.9 * data_yaw[x]
        else:
            zacetnaPozicija = zacetnaPozicija + 3.9 * (360 - data_yaw[x])

        # Speed imporvement. Which isn't faster. Yay.
        compassHeight = 50
        regionOfInterest = (int(currentCompass.width / 2.0 - zacetnaPozicija),
                            int(0), int(width), int(compassHeight))
        currentCompass = cv.GetSubRect(currentCompass, regionOfInterest)
        regionOfInterest = (int(0), int(0), int(width), int(compassHeight))
        pointerToSpace = cv.GetSubRect(thirdHorizon, regionOfInterest)
        cv.Sub(pointerToSpace, currentCompass, pointerToSpace)

        # 3 ------------------------------------------------

        speedCenter = (originalSpeed.width / 2.0, originalSpeed.height / 2.0)
        speedWidth = originalSpeed.width
        speedHeight = originalSpeed.height
        zacetnaPozicija = speedHeight / 2.0
        if data_speed[x] < 0:
            zacetnaPozicija = zacetnaPozicija - 210
        elif data_speed[x] >= 100:
            zacetnaPozicija = zacetnaPozicija + 210
        else:
            zacetnaPozicija = zacetnaPozicija + (200 - (data_speed[x] * 4))

        doDol = speedHeight - zacetnaPozicija
        if (doDol > 130):
            doDol = 130

        doGor = zacetnaPozicija
        if (doGor > 130):
            doGor = 130

        regionOfInterest = (int(0), int(zacetnaPozicija - doGor),
                            int(speedWidth), int(doDol + doGor))
        currentSpeed = cv.GetSubRect(originalSpeed, regionOfInterest)

        regionOfInterest = (int(width / 2.0 - 190 - currentSpeed.width / 2.0),
                            int(height / 2.0 - doGor), int(speedWidth),
                            int(doGor + doDol))

        pointerToWhereToCopySpeed = cv.GetSubRect(thirdHorizon,
                                                  regionOfInterest)
        cv.Sub(pointerToWhereToCopySpeed, currentSpeed,
               pointerToWhereToCopySpeed)

        # 4 ------------------------------------------------

        lokalniOdmik = 0
        if data_altitude[x] < 0:
            lokalniOdmik = 2010
        elif data_altitude[x] >= 1000:
            lokalniOdmik = -2010
        else:
            lokalniOdmik = -(2000 - (data_altitude[x] * 4))

        temp = currentAltitude.height / 2.0

        doDol = (temp + lokalniOdmik)
        if (doDol > 130):
            doDol = 130

        doGor = temp - lokalniOdmik
        if (doGor > 130):
            doGor = 130

        regionOfInterest = (int(0),
                            int(currentAltitude.height / 2.0 - lokalniOdmik -
                                doGor), int(speedWidth), int(doGor + doDol))

        cutAltitude = cv.GetSubRect(currentAltitude, regionOfInterest)

        regionOfInterest = (int(width / 2.0 + 160), int(height / 2.0 - doGor),
                            int(70), int(doGor + doDol))
        pointerToWhereToCopyAltitude = cv.GetSubRect(thirdHorizon,
                                                     regionOfInterest)

        cv.Sub(pointerToWhereToCopyAltitude, cutAltitude,
               pointerToWhereToCopyAltitude)

        #   ------------------------------------------------
        lokalniOdmik = 0
        if data_climb[x] < -10:
            lokalniOdmik = -410
        elif data_climb[x] >= 10:
            lokalniOdmik = 410
        else:
            lokalniOdmik = ((data_climb[x] * 4 * 10))

        temp = currentClimb.height / 2.0

        doDol = (temp + lokalniOdmik)
        if (doDol > 130):
            doDol = 130

        doGor = temp - lokalniOdmik
        if (doGor > 130):
            doGor = 130

        regionOfInterest = (int(0),
                            int(currentClimb.height / 2.0 - lokalniOdmik -
                                doGor), int(speedWidth), int(doGor + doDol))

        cutClimb = cv.GetSubRect(currentClimb, regionOfInterest)

        regionOfInterest = (int(width / 2.0 + 245), int(height / 2.0 - doGor),
                            int(70), int(doGor + doDol))
        pointerToWhereToCopyClimb = cv.GetSubRect(thirdHorizon,
                                                  regionOfInterest)

        cv.Sub(pointerToWhereToCopyClimb, cutClimb, pointerToWhereToCopyClimb)

        # 5 ------------------------------------------------

        cv.SaveImage("/dev/shm/attitude2video_opencv/composed.png",
                     thirdHorizon)
        os.system("cp /dev/shm/attitude2video_opencv/composed.png " +
                  inputArgs.sessionFolder[0] +
                  "/media/work/attitude_opencv/attitude_" + "%07d.png" %
                  (x + 1, ))


# CLEAR ALL VARIABLES! You know, memory leaks and such.
# 6 ------------------------------------------------

# KONEC
    os.system("avconv -r 30 -i " + inputArgs.sessionFolder[0] +
              "/media/work/attitude_opencv/attitude_" +
              "%07d.png -qscale 1 -b 1300k -vcodec libx264 " +
              inputArgs.sessionFolder[0] + "/media/attitude.mp4")

    # remove working directory with temporary files
    fileList = os.listdir(inputArgs.sessionFolder[0] +
                          "/media/work/attitude_opencv")
    for fileName in fileList:
        os.remove(inputArgs.sessionFolder[0] + "/media/work/attitude_opencv" +
                  "/" + fileName)
    os.rmdir(inputArgs.sessionFolder[0] + "/media/work/attitude_opencv")
    #os.rmdir(inputArgs.sessionFolder[0]+"/media/work")

    # remove working directory with temporary files in shared memmory
    fileList = os.listdir("/dev/shm/attitude2video_opencv")
    for fileName in fileList:
        os.remove("/dev/shm/attitude2video_opencv" + "/" + fileName)
    os.rmdir("/dev/shm/attitude2video_opencv")

    os.system("rm -f /run/shm/attitude2video_opencv.lock")
framecounter = 0
w = 5
cv.NamedWindow("camera", cv.CV_WINDOW_AUTOSIZE)
capture = cv.CaptureFromCAM(0)

img = cv.QueryFrame(capture)
(r, c) = cv.GetSize(img)

imgGray = cv.CreateImage((r, c), cv.IPL_DEPTH_8U, 1)
imgRotate = cv.CreateImage((r, c), cv.IPL_DEPTH_8U, 1)
imgAvg = cv.CreateImage((r, c), cv.IPL_DEPTH_8U, 1)
rotMat = cv.CreateMat(2, 3, cv.CV_32FC1)

while True:
    img = cv.QueryFrame(capture)
    framecounter = framecounter + 1

    cv.CvtColor(img, imgGray, cv.CV_RGB2GRAY)

    cv.GetRotationMatrix2D((r / 2, c / 2), w * framecounter, 1.0, rotMat)
    cv.WarpAffine(imgGray, imgRotate, rotMat)

    alpha = 0.1
    cv.AddWeighted(imgAvg, 1.0 - alpha, imgRotate, alpha, 0.0, imgAvg)

    cv.ShowImage("camera", imgAvg)

    if cv.WaitKey(10) == 27:
        break