Тадааам!! Первое знакомство прошло довольно успешно.
Достижения:
Знакомство с Os Ubuntu
Знакомство с языком Python (довольно трудно было привыкнуть к отсутствию ";", да и отсутствие необходимости указывать тип данных стало неожиданностью)
Поверхностное знакомство с OpenCV функциями (код ниже)
Сейчас пытаюсь постичь типы данных (cvArr cvMat), на данном этапе мозг выносит нереально.....
Программа №1 - открытие изображения.
from opencv.cv import *
from opencv.highgui import *
def main():
cvNamedWindow("win",CV_WINDOW_AUTOSIZE)
filename = "1.jpg"
im = cvLoadImage(filename)
if im==None:
return -1
cvShowImage("win", im)
cvWaitKey()
cvReleaseImage(im)
cvDestroyWindow("win")
return 0;
if __name__ == "__main__":
print(main())
Программа №2 - воспроизведение видео
5.1
5.2
from opencv.cv import *
from opencv.highgui import *
def main():
cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE)
capture = cvCreateCameraCapture(0)
loop = True
while (loop):
frame = cvQueryFrame(capture)
if (frame == None):
break;
cvReleaseCapture(capture)
cvDestroyWindow("Example2")
return -1
cvShowImage("Example2", frame)
char = cvWaitKey(33)
if (char != -1):
if ord(char) == 27:
loop = False
cvReleaseCapture(capture)
cvDestroyWindow("Example2")
return 0
if __name__ == '__main__':
print(main())
Программа №3 - воспроизведение видео + примитивный бегунокfrom opencv.cv import *
from opencv.highgui import *
g_slider_pos = 0
def onTrackbarSlide(pos):
cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, pos)
if __name__ == '__main__':
cvNamedWindow("VideoPlaying", CV_WINDOW_AUTOSIZE)
g_capture = cvCreateFileCapture("1.avi")
frames = long(cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT))
if (frames != 0):
cvCreateTrackbar("Position","VideoPlaying", g_slider_pos, frames, onTrackbarSlide)
loop = True
while (loop):
frame = cvQueryFrame(g_capture)
if (frame == None):
break;
cvShowImage("VideoPlaying", frame)
char = cvWaitKey(33)
if (char != -1):
if (ord(char) == 27):
loop = False
cvReleaseCapture(g_capture)
cvDestroyWindow("VideoPlaying")
Программа №4 - сохранение видео в файлfrom opencv.cv import *
from opencv.highgui import *
def main():
camerain = cvCreateCameraCapture(0)
cvNamedWindow("tratata",CV_WINDOW_AUTOSIZE)
frame = cvQueryFrame(camerain)
fps = cvGetCaptureProperty(camerain,CV_CAP_PROP_FPS)
if fps<0:
fps=40
print(fps)
width=int(cvGetCaptureProperty(camerain,
CV_CAP_PROP_FRAME_WIDTH))
height=int(cvGetCaptureProperty(camerain,
CV_CAP_PROP_FRAME_HEIGHT))
size = cvSize(width,height)
writer=cvCreateVideoWriter("2.avi",
CV_FOURCC('M','J','P','G'),fps,size)
writer1=cvCreateVideoWriter("3.avi",
CV_FOURCC('M','J','P','G'),fps,size)
frame1=cvCreateImage(size,IPL_DEPTH_8U,3)
loop=True
while (loop):
frame=cvQueryFrame(camerain)
if frame==None:
break
cvReleaseCapture(camerain)
cvDestroyWindow("tratata")
return -1
cvShowImage("tratata",frame)
cvLogPolar(frame,frame1,cvPoint2D32f(
frame.width/2,frame.height/2),
40,CV_INTER_LINEAR+
CV_WARP_FILL_OUTLIERS)
cvWriteFrame(writer,frame)
cvWriteFrame(writer1,frame1)
c=cvWaitKey(40)
if (c != -1):
if ord(c) == 27:
loop = False
cvReleaseCapture(camerain)
cvDestroyWindow("tratata")
return 0
if __name__ == '__main__':
main()
Программа №5 - детектор границ Кенни + различные трансформации =)5.1
from opencv.cv import *
from opencv.highgui import *
def doPyrDown(inim,filter=7):
out = cvCreateImage(cvSize(inim.width/2, inim.height/2),inim.depth,inim.nChannels)
cvPyrDown(inim,out)
return out
def doCanny(img,lowth,highth,aperture):
if img.nChannels != 1:
return 0
out = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1)
cvCanny(img,out,lowth,highth,aperture)
return out
def main():
cvNamedWindow("Main",CV_WINDOW_AUTOSIZE)
cvNamedWindow("1stTr",CV_WINDOW_AUTOSIZE)
cvNamedWindow("2ndTr",CV_WINDOW_AUTOSIZE)
cvNamedWindow("3rdTr",CV_WINDOW_AUTOSIZE)
mainimg=cvLoadImage("1.jpg")
print(mainimg.nChannels)
grayimg=cvCreateImage(cvSize( mainimg.width, mainimg.height ),IPL_DEPTH_8U,1)
cvCvtColor( mainimg, grayimg, CV_RGB2GRAY )
print(grayimg.nChannels)
im1=doPyrDown(grayimg)
im2=doPyrDown(im1)
im3=doCanny(im2,10,100,3)
cvShowImage("Main",mainimg)
cvShowImage("1stTr",im1)
cvShowImage("2ndTr",im2)
cvShowImage("3rdTr",im3)
cvWaitKey(0)
cvDestroyWindow("Main")
cvDestroyWindow("1stTr")
cvDestroyWindow("2ndTr")
cvDestroyWindow("3rdTr")
return 0
if __name__ == '__main__':
main()
5.2
from opencv.cv import *
from opencv.highgui import *
def doCanny(img,lowth,highth,aperture):
if img.nChannels != 1:
return 0
out = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1)
cvCanny(img,out,lowth,highth,aperture)
return out
def main():
cvNamedWindow("Main",CV_WINDOW_AUTOSIZE)
capture = cvCreateFileCapture('1.avi')
loop = True
while (loop):
frame = cvQueryFrame(capture)
if (frame == None):
break;
grayimg=cvCreateImage(cvSize( frame.width, frame.height ),IPL_DEPTH_8U,1)
cvCvtColor( frame, grayimg, CV_RGB2GRAY )
im3=doCanny(grayimg,10,100,3)
cvShowImage("Main", im3)
char = cvWaitKey(33)
if (char != -1):
if (ord(char) == 27):
loop = False
cvDestroyWindow("Main")
return 0
if __name__ == '__main__':
main()
к питону очень трудно привыкать после обучения 3х лет на шарпах. тех кто не пробывал запускать питон у себя все делается достаточно не трудно, пару запросами из терминала. а писать приходилось уже через блокнот:( жалко нет под питон такой же срады как студия, как в ней было хорошо...
ОтветитьУдалитьуказывайте версии питона и опенСВ)
ОтветитьУдалить> жалко нет под питон такой же срады как студия, как в ней было хорошо...
ОтветитьУдалитьДля питона есть целая пачка IDE, вовсе не стоит мучаться в блокноте:
http://wiki.python.org/moin/IntegratedDevelopmentEnvironments
Вот, например, хороший вариант - http://pydev.org/