Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 5

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

30.03.2015, 09:27. Показов 1227. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2015, 09:27
Ответы с готовыми решениями:

Неужели AMD греется больше, чем Intel?
Набрел на статью в инете, цитата -...

Считаете ли Вы что профилактика заболеваний и санитария более научны и более затратны чем лечение заболеваний?
Считаете ли Вы, что профилактика заболеваний и санитария более научны и более затратны, чем лечение заболеваний? Справедливо разделение...

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

4
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
30.03.2015, 12:13
Во-первых, код разный.
Во-вторых, С++ и Python версии - это биндинги к C либам. По этому сами OpenCv функции будут работать идентично.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.03.2015, 12:42
OpenCV это помесь Си и С++ и биндинг Python никак не может быть быстрее С/С++ кода.
0
Pied Piper
 Аватар для ArmanPrestige
237 / 228 / 57
Регистрация: 15.01.2013
Сообщений: 855
30.03.2015, 14:01
Цитата Сообщение от Toster2005 Посмотреть сообщение
И оказалось, что скриптовый python более производителен чем нативный c++
Т.е. на c++ сильные лаги.
А цифры где?
0
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 5
30.03.2015, 18:04  [ТС]
Согласен со все выше сказано. И код там действительно разный.
Цифр нет, все строилось на визуальных ощущениях. Я только начал изучать opencv.
И в итоге даже не в тот раздел влез с топом. Сорри и спасибо за понимание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2015, 18:04
Помогаю со студенческими работами здесь

Найти вероятность того, что событие А происходит: а)точно 220; б) менее чем 240 и более чем 100 раз.
В каждом из 500 независимых испытаний событие А происходит с постоянной вероятностью 0,4.Найти вероятность того, что событие А происходит:...

Чем Python лучше для кроссплатформенности чем C++?
Чем Python лучше для кроссплатформенности чем C++?

Не работает относительный импорт модулей с двумя и более точками - Python 3
Всем прмвет. Столкнулся с проблемой которая происходит при относительном импорте модулей, именно с двумя и более точками в инструкции from,...

Не более чем на 1000
Вывести значения элементов, начиная с первого, так что бы значение выводимого элемента отличалось от значения предыдущего выведенного не...

Не более чем на 1000
Вывести значения элементов, начиная с первого, так что бы значение выводимого элемента отличалось от значения предыдущего выведенного не...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru