Passer un programme python en C++

Fermé
sunwoo Messages postés 1 Date d'inscription jeudi 14 janvier 2016 Statut Membre Dernière intervention 14 janvier 2016 - 14 janv. 2016 à 00:50
SypayV Messages postés 6583 Date d'inscription vendredi 28 décembre 2007 Statut Contributeur Dernière intervention 19 février 2023 - 16 janv. 2016 à 13:48
Bonjour,

Je voudrai de l'aide pour "traduire" ce programme en C++?

Je ne connais pas python mais j'ai besoin de ce programme...



# USAGE

# python distance_to_camera.py

# import the necessary packages

import numpy as np

import cv2



def find_marker(image):

# convert the image to grayscale, blur it, and detect edges

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

gray = cv2.GaussianBlur(gray, (5, 5), 0)

edged = cv2.Canny(gray, 35, 125)



# find the contours in the edged image and keep the largest one;

# we'll assume that this is our piece of paper in the image

(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

c = max(cnts, key = cv2.contourArea)



# compute the bounding box of the of the paper region and return it

return cv2.minAreaRect(c)



def distance_to_camera(knownWidth, focalLength, perWidth):

# compute and return the distance from the maker to the camera

return (knownWidth * focalLength) / perWidth



# initialize the known distance from the camera to the object, which

# in this case is 24 inches

KNOWN_DISTANCE = 24.0



# initialize the known object width, which in this case, the piece of

# paper is 12 inches wide

KNOWN_WIDTH = 11.0



# initialize the list of images that we'll be using

IMAGE_PATHS = ["images/2ft.png", "images/3ft.png", "images/4ft.png"]



# load the furst image that contains an object that is KNOWN TO BE 2 feet

# from our camera, then find the paper marker in the image, and initialize

# the focal length

image = cv2.imread(IMAGE_PATHS[0])

marker = find_marker(image)

focalLength = (marker[1][0] * KNOWN_DISTANCE) / KNOWN_WIDTH



# loop over the images

for imagePath in IMAGE_PATHS:

# load the image, find the marker in the image, then compute the

# distance to the marker from the camera

image = cv2.imread(imagePath)

marker = find_marker(image)

inches = distance_to_camera(KNOWN_WIDTH, focalLength, marker[1][0])



# draw a bounding box around the image and display it

box = np.int0(cv2.cv.BoxPoints(marker))

cv2.drawContours(image, [box], -1, (0, 255, 0), 2)

cv2.putText(image, "%.2fft" % (inches / 12),

(image.shape[1] - 200, image.shape[0] - 20), cv2.FONT_HERSHEY_SIMPLEX,

2.0, (0, 255, 0), 3)

cv2.imshow("image", image)

cv2.waitKey(0)
A voir également:

1 réponse

Utilisateur anonyme
15 janv. 2016 à 20:25
Bonsoir,

Pourriez vous nous donner les étapes de ce que fait ce programme (dans l'ordre) ?
Ainsi, ceux connaissant le C++ mais non le python pourraient vous aider à recréer ce programme en C++.

EchoIsON.
0
SypayV Messages postés 6583 Date d'inscription vendredi 28 décembre 2007 Statut Contributeur Dernière intervention 19 février 2023 449
16 janv. 2016 à 13:48
Bonjour,

Les commentaires sont assez parlants, mais il manque l'indentation.

Le problème ici c'est qu'en plus de devoir traduire le script, il faudra aussi traduire les modules numpy et cv2 ou charger des bibliothèques similaires.

cv2 doit être un module de traitement d'image.
numpy est un module pour utiliser des grands nombres et des matrices.

Apparemment l'objectif du script est recadrer une photo d'un papier.
0