Обзор различных сфер применения компьютерного зрения. Работа с потоком видео. Особенности построения приложений на языке C . Доступные функции библиотеки OpenCV для детектирования объектов. Захват видео с камеры. Алгоритм детектирования 4-х точек.
Федеральное агентство связи Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «Поволжский государственный университет телекоммуникаций и информатики» Направление (специальность) Информационные системы и технологииФункция CVLOADIMAGE() является высокоуровневой: определяет формат файла по его имени; автоматически выделяет память, необходимую для изображения. Обратите внимание, функция CVLOADIMAGE() поддерживает широкий спектр типов изображений: BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS и TIFF. Функция CVDESTROYWINDOW() закрывает окно и высвобождает любую, связанную с этим окном, память (внутренний буфер для изображения, который содержит копию информации о пикселях из img). Функция CVQUERYFRAME() принимает в качестве аргумента указатель на структуру CVCAPTURE и помещает последующий кадр в память (которая на самом деле часть структуры CVCAPTURE). В отличии от CVLOADIMAGE(), которая выделяет память под изображение, CVQUERYFRAME() использует выделенную память в структуре CVCAPTURE.В результате проделанной работы было разработано приложение с использованием библиотеки OPENCV, ориентированной на работу с компьютерным зрением. Для достижения поставленной цели были решены следующие задачи: • Исследована сфера применения компьютерного зрения;Программный код import cv2 importnumpy as np cap = cv2.VIDEOCAPTURE("vtest.avi") ret, frame1 = cap.read() prvs = cv2.CVTCOLOR(frame1,cv2.COLOR_BGR2GRAY) hsv = np.zeros_like(frame1) hsv[...,1] = 255 while(1): ret, frame2 = cap.read() next = cv2.CVTCOLOR(frame2,cv2.COLOR_BGR2GRAY) flow = cv2.CALCOPTICALFLOWFARNEBACK(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0) mag, ang = cv2.CARTTOPOLAR(flow[...,0], flow[...,1]) hsv[...,0] = ang*180/np.pi/2 hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX) bgr = cv2.CVTCOLOR(hsv,cv2.COLOR_HSV2BGR) cv2.imshow("frame2",bgr) k = cv2.WAITKEY(30) & 0xff if k == 27: break elif k == ord("s"): cv2.imwrite("opticalfb.png",frame2) cv2.imwrite("opticalhsv.png",bgr) prvs = next cap.release() cv2.DESTROYALLWINDOWS() importnumpyasnp # Take first frame and find corners in it ret, old_frame = cap.read() old_gray = cv2.CVTCOLOR(old_frame, cv2.COLOR_BGR2GRAY) p0 = cv2.GOODFEATURESTOTRACK(old_gray, mask = None, **feature_params) # Create a mask image for drawing purposes mask = np.zeros_like(old_frame) while(1): ret,frame = cap.read() frame_gray = cv2.CVTCOLOR(frame, cv2.COLOR_BGR2GRAY) # draw the tracks fori,(new,old) in enumerate(zip(good_new,good_old)): a,b = new.ravel() c,d = old.ravel() mask = cv2.line(mask, (a,b),(c,d), color[i].tolist(), 2) frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1) img = cv2.add(frame,mask) cv2.imshow("frame",img) k = cv2.WAITKEY(30) & 0xff if k == 27: break # Take first frame and find corners in it ret, old_frame = cap.read() old_gray = cv2.CVTCOLOR(old_frame, cv2.COLOR_BGR2GRAY) p0 = cv2.
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы