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

C++

Войти
Регистрация
Восстановить пароль
 
Toster2005
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 5
#1

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

30.03.2015, 09:27. Просмотров 546. Ответов 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++ писал не сам, брал готовые примеры.

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2015, 09:27     Неужели Python более производителен чем C++ с getPerspectiveTransform?!
Посмотрите здесь:

Текст, состоящий не более чем из 255 символов, разбить на строки длиной не более 50 символов в строке - C++
Текст, состоящий не более чем из 255 символов, разбейте на строки длиной не более 50 символов в строке. Переносите только на месте...

Сортировка 5 чисел не более чем за 7 сравнений - C++
Даны 5 попарно различных целых чисел. Упорядочить их по возрастанию, используя для этого не более 7 сравнений. Заранее благодарю!!!!

Создать консольное меню с более чем 10-ю пунктами - C++
Есть такая проблема, нужно создать меню в консоле, где более 10 пунктов. Когда вводишь числа с 1-9 всё работает прекрасно, но начиная с 10,...

Отправка более, чем одного POST запроса - C++
Помогите написать код, отправки Post запросов многопоточно, С возможностью выбора количества потоков(мин=1 макс=9999) $sdomain =...

Записать слова, состоящие более чем из 10 букв - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstring&gt; using namespace std; int main() { int words, count; char*...

Как проверить что к переменной прибавилось более чем X - C++
Здравствуйте Уважаемые Форумчане! Сегодня у меня возникла следующая проблема , об которой я даже не знаю как загуглить можно)) ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RazrFalcon
1379 / 1236 / 262
Регистрация: 10.11.2013
Сообщений: 3,764
30.03.2015, 12:13     Неужели Python более производителен чем C++ с getPerspectiveTransform?! #2
Во-первых, код разный.
Во-вторых, С++ и Python версии - это биндинги к C либам. По этому сами OpenCv функции будут работать идентично.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
30.03.2015, 12:42     Неужели Python более производителен чем C++ с getPerspectiveTransform?! #3
OpenCV это помесь Си и С++ и биндинг Python никак не может быть быстрее С/С++ кода.
ArmanPrestige
Pied Piper
232 / 223 / 51
Регистрация: 15.01.2013
Сообщений: 849
Завершенные тесты: 1
30.03.2015, 14:01     Неужели Python более производителен чем C++ с getPerspectiveTransform?! #4
Цитата Сообщение от Toster2005 Посмотреть сообщение
И оказалось, что скриптовый python более производителен чем нативный c++
Т.е. на c++ сильные лаги.
А цифры где?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2015, 18:04     Неужели Python более производителен чем C++ с getPerspectiveTransform?!
Еще ссылки по теме:

Превышает ли максимальное из чисел последовательности минимальное не более чем на 25? - C++
Даны натуральные число n и целые числа a1, a2,...,an. Верно ли, что максимальное из чисел ai превышает минимальное не более чем на 25.(C++)

Подсчитать количество чисел массива, отличающихся от числа 3 не более чем на 0.5 - C++
Произвести следующую обработку 10 вещественных чисел: подсчитать количество чисел, отличающихся от числа 3 не более чем на 0.5, и сумму...

OLE WORD ошибка при открытии более чем 5 файлов. - C++ Builder
Суть программы в том, что нужно открыть несколько файлов, записать в них данные и сохранить. В приложении около 15 dot шаблонов, которые то...

Расположить в начале массива элементы, отличающиеся от максимального не более, чем на 20% - C++
Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более, чем на 20%, а потом –...

Сколько в файле слов, состоящих из не более чем четырех букв - C++
Помогите пожалуйста написать программу на С. Написать программу, которая считывает текст из файла и определяет, сколько в нем слов,...

Определить количество слов состоящих не более чем из четырех букв - C++
Написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более чем четырех буквами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Toster2005
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 5
30.03.2015, 18:04  [ТС]     Неужели Python более производителен чем C++ с getPerspectiveTransform?! #5
Согласен со все выше сказано. И код там действительно разный.
Цифр нет, все строилось на визуальных ощущениях. Я только начал изучать opencv.
И в итоге даже не в тот раздел влез с топом. Сорри и спасибо за понимание.
Yandex
Объявления
30.03.2015, 18:04     Неужели Python более производителен чем C++ с getPerspectiveTransform?!
Ответ Создать тему
Опции темы

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