Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Неужели Python более производителен чем C++ с getPerspectiveTransform?! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача в новый поток в качестве аргумента string http://www.cyberforum.ru/cpp/thread1406772.html
хелп:wall: Пытаюсь передать аргумент так: DWORD potoc(char * args) { const char * ta = static_cast <const char *> (args); } ....... DWORD ID;...
C++ Где найти материал по теме само переписывающиеся программы? Где найти материал по теме само переписывающиеся программы? http://www.cyberforum.ru/cpp/thread1406642.html
C++ Обратная задача рассеяния, Метод Гельфанда-Левитана-Марченко, поиск потенциала
Здравствуйте!Нужна программа на с++. Дана функция Гльфанда-Левитана-Марченко,по ней найти потенциал q. F^+ (x+y)+K^+ (x,y)+∫_x^∞▒〖F^+ (x+t)+K^+ (x,t)dt=0 (x≤y<∞)〗, Добавлено через 10 часов 8...
C++ Получение видео-сигнала с устройства видеозахвата
Как получить видео-сигнал с устройства видеозахвата? Устройство пока что любое ... не выбрано. Провод HDMI. Нужно обрабатывать видео - не все, а, скажем каждые 4 кадра.
C++ Защита кода от декомпиляции http://www.cyberforum.ru/cpp/thread1400992.html
Всем доброго времени суток! Возник вопрос - насколько трудно взломать программы скомпилированные с помощью пакета minGW? И зависит ли "взломостойкость" от компилятора?
C++ Передача ссылки в функцию в DLL Здравствуйте. По этому мануалу сделал DLL https://msdn.microsoft.com/ru-ru/library/ms235636.aspx Возникла проблема с передачей ссылок в функции, расположеные в DLL. Допустим, в заголовочном... подробнее

Показать сообщение отдельно
Toster2005
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 5

Неужели Python более производителен чем C++ с getPerspectiveTransform?! - C++

30.03.2015, 09:27. Просмотров 558. Ответов 4
Метки (Все метки)

Доброго времени суток.

Неужели Python более производителен чем C++ с getPerspectiveTransform?!
Я попробовал два похожих исходника.
C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
 
#include <opencv2/gpu/gpu.hpp>
 
#include <iostream>
#include <stdio.h>
 
using namespace std;
using namespace cv;
 
int main(int, char**) {
    VideoCapture cap(0);
 
    if (!cap.isOpened())
        return -1;
 
    cap.set(CV_CAP_PROP_FPS, 0.55);
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 960);
 
    
    Point2f inputQuad[4];
    
    Point2f outputQuad[4];
    
    Mat lambda(2, 4, CV_64FC3);
 
    //Mat edges;
    namedWindow("edges", 1);
    for (;;) {
        Mat frame;
        cap >> frame;
 
 
        lambda = Mat::zeros(frame.rows, frame.cols, frame.type());
 
        inputQuad[0] = Point2f(-30, -60);
        inputQuad[1] = Point2f(frame.cols + 50, -50);
        inputQuad[2] = Point2f(frame.cols + 100, frame.rows + 50);
        inputQuad[3] = Point2f(-50, frame.rows + 50);
 
        outputQuad[0] = Point2f(0, 0);
        outputQuad[1] = Point2f(frame.cols - 1, 0);
        outputQuad[2] = Point2f(frame.cols - 1, frame.rows - 1);
        outputQuad[3] = Point2f(0, frame.rows - 1);
 
        lambda = getPerspectiveTransform(inputQuad, outputQuad);
 
        warpPerspective(frame, frame, lambda, frame.size());
 
        flip(frame, frame, 1);
        imshow("edges", frame);
        if (waitKey(30) >= 0)
            break;
    }   
    return 0;
}
}
и на Python (прошу прощения у модератора за Python src)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -*- coding: utf-8 -*-
 
import cv2
import numpy as np
import time
 
 
cap = cv2.VideoCapture(0)
 
cap.set(3, cap.get(3))
cap.set(4, cap.get(4))
time.sleep(1 / 30)
 
 
while True:
    ret, img = cap.read()
    imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.VideoCapture(0).release()bash-3.2$
    ret,thresh = cv2.threshold(imgray,127,255,0)
    contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
 
    if cap.isOpened() == 0:
            cap.open(0)
 
    res = cv2.resize(img,None,fx=2, fy=2, interpolation = cv2.INTER_CUBIC)
    """ X, Y """
    pts1 = np.float32([[0,0],[700,0],[0,1100],[600,1100]])
    pts2 = np.float32([[50,0],[600,0],[0,1100],[600,1100]])
    M = cv2.getPerspectiveTransform(pts1,pts2)
    dst = cv2.warpPerspective(res,M,(1250,550))
 
    dst = cv2.flip(dst, 1)
    cv2.namedWindow('input', cv2.WINDOW_NORMAL)
 
    cv2.imshow("input", dst)
 
    key = cv2.waitKey(10)
    if key == 27:
        break
 
cv2.destroyAllWindows()
cv2.VideoCapture(0).release()
И оказалось, что скриптовый python более производителен чем нативный c++
Т.е. на c++ сильные лаги.

В чем может быть причина?

Код и на python и c++ писал не сам, брал готовые примеры.

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru