Python Forum
for loop problem with opencv
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
for loop problem with opencv
#1
import cv2
import numpy as np
from statistics import mean
f = []
video = cv2.VideoCapture(0)
def cam():
    ret, frame = video.read()
    for i in range(100,500,150):
        for j in range(100,500,150):
            cv2.circle (frame, (j,i), 10, (0,0,0), 1)
    cv2.imshow('retour cam', frame)
    return frame
 
def screen():
    cv2.imwrite('C:\\Dev\\prog\\3\\image\\a.jpg' , cam())
    img = cv2.imread('C:\\Dev\\prog\\3\\image\\a.jpg',-1)
    cv2.imshow('image', img)
    return img
 
def reg(x,y,cadre,imga):
    mean_0 = []
    mean_1 = []
    mean_2 = []
    l_t_0 = []
    l_t_1 = []
    l_t_2 = []
    print('h')
    for a in range(3):
        print('j')
        print(cadre)
        print(x)
        print(y)
        for i in range(x - cadre, y + cadre + 1):
            print('k')
            for j in range(x - cadre, y + cadre + 1):
                point = (i,j)
                print(point)
                print(imga[point])
                l_t_0.append(imga[point][0])
                l_t_1.append(imga[point][1])
                l_t_2.append(imga[point][2])
                print('ajout fait')
    print('done')
    print(l_t_0)
    print(l_t_1)
    print(l_t_2)
def calibrage(tolérance):
    o = 0
    print('tour : ',o)
    o +=1
    q = reg(100,100,5,screen())
    print('tour : ',o)
    r = reg(250,100,5,screen())
while 1:
    cam()
    key = cv2.waitKey(1)
    if key == ord('q'):
        break
    if key == ord('s'):
        calibrage(30)
 
 
video.release()
cv2.destroyAllWindows()
Bonjour à tous,

j'ai un problème avec mon code python que je ne comprend pas.

Grossissement, mon code affiche un retour caméra avec opencv. Je lui demande après de prendre des photos de ce retour puis de les analyser. Une fonction '' reg() " génère un cadre de point autour d'un point pris en entré par ses coordonnées x,y et 'cadre'pour la taille du cadre de point généré. Pour chaque cadre de point, la fonction va faire une moyenne des valeurs BVR et les return pour les stocker dans des variables, ici nommées q et r, ce qui représente deux cadres. Les nombreux "print" sont juste là pour, en quelque sorte, débugger et voir où vas et où ne vas pas le programme. Le premier appel de fonction "reg" fonctionne très bien (stocké dans "q"), le output m'affiche que le programme est rentré dans toutes les boucles FOR en m'affichant h, j, les trois valeurs de mes variables locales, k, les différentes générations de points avec leurs coordonnées et leurs valeurs BVR et enfin, les listes remplies par les boucles FOR précédentes. Cependant quand je rappelle la fonction avec des valeurs différentes de point de départ pour une nouvelle génération de cadre et de nouvelles analyses, la fonction reg ne rentre pas dans la première boucle FOR et ne m'affiche que h ,j, mes trois valeurs de variables locales et les listes vides car non remplies par les boucles précédentes. C’est la première fois que quelque chose d'aussi contre-intuitif m'arrive. Au fait, c'est mon premier message sur ce forum, n'hésitez donc à critiquer sa rédaction et merci d'avance pour vos aides
Reply
#2
Bonjour! Pardon moi mais j'ecris en anglais parceque mon fracais est inadequate.

The problems appears to stem from x being larger than y on line 53. If the low end of the range is larger than the upper end, the step must be negative.

For example:

# Will not work because the default step is +1
# We cannot add 1 to 200 and end at 100.
for x in range(200,100): 
    print(x) 

# Will print from 200 backwards to 101
for x in range(200,100,-1): 
    print(x)
Off hand, I am not sure how to resolve the issue. The x-axis and y-axis values should be in separate range() calls. Beyond that, I do not understand the objective well enough to provide more. Based on the starting coordinates, how are you determining the destination?
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  while loop problem fid 2 2,246 Jun-19-2020, 07:21 PM
Last Post: fid
  problem on for-if loop alrm31015 1 2,169 Aug-21-2018, 05:48 PM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020