Сравнение работы с камерой в OpenCV на Python и Java
Работая над проектом вездехода с трансляцией картинки пришлось задуматься, а правильно ли выбран основной язык разработки — Java. В последнее время Python приобрёл большую популярность и широко используется в приложениях машинного обучения и работы с видео на OpenCV. Это было решено проверить на простом получении картинки, т.к. данная часть является наиболее важной в моём проекте.
Для эксперимента было подготовлено два простых приложения, которые 60 раз читали картинку с камеры.
Java:
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.videoio.VideoCapture; import org.opencv.videoio.Videoio; public class SimpleTestOpenCV { public static void main(String[]args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); VideoCapture camera = new VideoCapture(0); camera.set(Videoio.CV_CAP_PROP_FRAME_WIDTH, 320); camera.set(Videoio.CV_CAP_PROP_FRAME_HEIGHT, 240); long startTime = System.currentTimeMillis(); int index = 0; Mat frame = new Mat(); while(index < 60){ if (camera.read(frame)){} index++; } long endTime = System.currentTimeMillis(); System.out.println("Time: " + (endTime - startTime)); camera.release(); } }
Python:
import cv2 import time cam = cv2.VideoCapture(0) cam.set(cv2.CAP_PROP_FRAME_WIDTH, 320) cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) index = 0 startTime = time.time()*1000 while (index < 60): frame = cam.read() index+=1 endTime = time.time()*1000 print("Time " + str(endTime - startTime)); cam.release()
Код на Python имеет меньший размер, чище, что даёт «преимущество» перед привычной Java. А вот в скорости выполнения на Windows 7 выигрыша никакого не было. Оба приложения выполнились за 2820 миллисекунд +/- 20. Данное обстоятельство говорит о том, что интерпретируемые языки одинаково медленные, как бы вы не упрощали синтаксис.
В синтаксисе Python можно запутаться, смесь невесть чего. Проще начать, но потом сущий ад. Я полностью на cтороне Java.
8
79
Вам не приходило в голову, что «производительность» данного куска кода упирается не в язык, а в скорость, с которой с камеры снимаются кадры? Так что говорить о том, что скорость питона равна скорости Java, глядя на этот код, мягко говоря, не обоснованно
123
1
Может и так, нужно доказательство. Суть в том, что нет разницы, что использовать — python или java.
0
0