1. Posicionamento de objetivo duplo baseado em MATLAB

1. Ferramentas e dispositivos usados

1. Câmera binocular (OV9732)
insira a descrição da imagem aqui

2. MATLAB2018a
3. pycharm
4. Mapa de grade (xadrez e grade de xadrez)
5. O computador vem com uma câmera

2. Coleta e pré-processamento de imagens

(1) Aquisição de imagem

1. Imprima a imagem da grade de xadrez e cartas abaixo e corrija-a.
insira a descrição da imagem aqui
2. Conecte a câmera ao computador através de um cabo USB.
insira a descrição da imagem aqui
3. Ajuste a resolução para 2560 720, 1280 480, 640*240
insira a descrição da imagem aqui
. Ajuste a posição e tire 10 mais fotos, um total de 40 fotos (pode ser um pouco mais)
insira a descrição da imagem aqui

(2) Processamento de imagem

1. Nomenclatura

Abra o pycharm e nomeie as fotos coletadas uniformemente (claro, você também pode nomeá-las uma a uma, mas será problemático)

import os


class BatchRename():
    def __init__(self):
        self.path = r'F:\asd'

    def rename(self):
        filelist = os.listdir(self.path)
        total_num = len(filelist)
        i = 0
        for item in filelist:
            if item.endswith('.jpg'):
                src = os.path.join(os.path.abspath(self.path), item)
                dst = os.path.join(os.path.abspath(self.path), (str(i)) + '.jpg')
                try:
                    os.rename(src, dst)
                    print('converting %s to %s ...' % (src, ('pyp.' + dst)))
                    i = i + 1
                except:
                    continue
        print('total %d to rename & converted %d jpgs' % (total_num, i))


if __name__ == '__main__':
    demo = BatchRename()
    demo.rename()

O objetivo é nomear uniformemente, para facilitar o corte e processamento de imagens posteriormente

2. Corte

Primeiro, crie duas pastas, uma chamada à esquerda, outra à direita, abra o MATLAB para escrever o código para o corte da imagem

clc;
for i=0:39	%40张照片,根据我自己的命名的方法从0到39
    C=strcat('F:\asd\',num2str(i),'.jpg'); 
    A=imread(C); 
    [m ,n,~]=size(A); 
    n1=n/2;

    p_1=zeros(m,n1,3);
    p_2=zeros(m,n1,3);
    p_1=A(:,1:n1,:);
    p_2=A(:,n1+1:n,:);
    a=num2str(i);
    cd('F:\asdzong\left'); 
    imwrite(p_1,strcat(a,'_l.jpg'));
    cd('F:\asdzong\right');
    imwrite(p_2,strcat(a,'_r.jpg'));
end

As renderizações são as seguintes:
insira a descrição da imagem aqui

3. Calibração

1. Abra o APP no matlab, localize stereoCameraCalibrator e execute-o
insira a descrição da imagem aqui
insira a descrição da imagem aqui
. 2. Clique em AddImages no canto superior esquerdo e insira os endereços das pastas esquerda e direita , respectivamente. Preencha o tamanho da grade (comprimento lateral) da grade quadriculada atrás de Tamanho de quadrado do tabuleiro de damas , clique em OK e aguarde. A seguinte imagem aparece

insira a descrição da imagem aqui
3. Em seguida, clique em Calibrate para exibir a seguinte imagem:
insira a descrição da imagem aqui
4. Remova os dados com erro grande:
insira a descrição da imagem aqui
5. Obtenha o resultado final:
insira a descrição da imagem aqui
6. Imprima o resultado da calibração (Export Camera Parameters):
insira a descrição da imagem aqui
insira a descrição da imagem aqui7. Saia do stereoCameraCalibrator e salve o resultado para gerar um mat
e, em seguida, você pode usar os resultados da calibração para corrigir e obter o mapa de profundidade, que será apresentado no artigo de acompanhamento

Acho que você gosta

Origin blog.csdn.net/weixin_46627856/article/details/120508683
Recomendado
Clasificación