Ir ao conteúdo
  • Cadastre-se

Python Calibração de câmera com imgs de tabuleiro de xadrez, cod rodado no gg colab


Posts recomendados

Parece que o código não está conseguindo encontrar os cantos da imagem de tabuleiro:

import cv2
import numpy as np
import os
import glob
from google.colab.patches import cv2_imshow
 
# Defining the dimensions of checkerboard
CHECKERBOARD = (6,9)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
 
# Criação de vetor para armazenar vetores de pontos 3D para cada imagem de tabuleiro de xadrez
objpoints = []
# Criação de vetor para armazenar vetores de pontos 2D para cada imagem de tabuleiro de xadrez
imgpoints = [] 
 
 
# Definindo as coordenadas mundiais para pontos 3D
objp = np.zeros((1, CHECKERBOARD[0] * CHECKERBOARD[1], 3), np.float32)
#objp é um array que armazena os pontos 3D para cada imagem do tabuleiro de xadrez.
#np.zeros cria uma matriz de zeros nas dimensões que aparecem na sequência
#o 3 representa as coordenadas x, y e z de cada ponto.
objp[0,:,:2] = np.mgrid[0:CHECKERBOARD[0], 0:CHECKERBOARD[1]].T.reshape(-1, 2)
#Atribuição de coordenada 2D ao objp
prev_img_shape = None
#Esta variável (None) será usada posteriormente no código para acompanhar a forma da imagem anterior.
 
# Extraindo o caminho da imagem individual armazenada em um determinado diretório
images = glob.glob('/content/drive/MyDrive/xadrez/fot*.jpg')
for fname in images:
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    # Encontre os cantos do tabuleiro de xadrez
    # Se o número desejado de cantos for encontrado na imagem, então ret = true
    ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD, cv2.CALIB_CB_ADAPTIVE_THRESH + cv2.CALIB_CB_FAST_CHECK + cv2.CALIB_CB_NORMALIZE_IMAGE)
     
    """
    If desired number of corner are detected,
    we refine the pixel coordinates and display 
    them on the images of checker board
    """
    if ret == True:
        objpoints.append(objp)
        # refining pixel coordinates for given 2d points.
        corners2 = cv2.cornerSubPix(gray, corners, (11,11),(-1,-1), criteria)
         
        imgpoints.append(corners2)
 
        # Draw and display the corners
        img = cv2.drawChessboardCorners(img, CHECKERBOARD, corners2, ret)
     
    #cv2.imshow('img',img)
    #cv2_imshow(img)  #BOTAR ESSA LINHA DEPOIS


    cv2.waitKey(0)
 
cv2.destroyAllWindows()
 
h,w = img.shape[:2]
 
"""
Performing camera calibration by 
passing the value of known 3D points (objpoints)
and corresponding pixel coordinates of the 
detected corners (imgpoints)
"""
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)
 
print("Camera matrix : \n")
print(mtx)
print("dist : \n")
print(dist)
print("rvecs : \n")
print(rvecs)
print("tvecs : \n")
print(tvecs)

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • mês depois...

Olá, bem vinda ao clube do hardware, poderia explicar o objetivo do código (não do projeto e sim do código), se está gerando erro ou se não está fazendo o que você quer que faça.

Se possível explique o seu objetivo para com o software como se estivesse explicando uma receita de bolo (passo a passo do que deve ocorrer).

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!