Я пытаюсь обработать эти 4 изображения для куба с 4 камерами, которые образуют контур куба. Он преобразуется в файл XYZ, и я использую библиотеку Three.js для проецирования точек красной линии, которую я сканирую по горизонтали и вертикали, преобразуя ее из 2D в 3D.
Я координата Y уже есть, но координаты X и Z вычисляются на основе логики кода. Однако когда я рисую 3D-точки, они неправильно формируют контур. Точки неправильные. Не могли бы вы мне помочь?
Я пытаюсь обработать эти 4 изображения для куба с 4 камерами, которые образуют контур куба. Он преобразуется в файл XYZ, и я использую библиотеку Three.js для проецирования точек красной линии, которую я сканирую по горизонтали и вертикали, преобразуя ее из 2D в 3D. Я координата Y уже есть, но координаты X и Z вычисляются на основе логики кода. Однако когда я рисую 3D-точки, они неправильно формируют контур. Точки неправильные. Не могли бы вы мне помочь? [code]private void button2_Click(object sender, EventArgs e) { try { // Pasta onde estão as imagens string pastaImagens = "imgs/"; string arquivoSaida = "pontosLinhaPonteiro.xyz";
// Apagar o arquivo de saída anterior, se existir if (File.Exists(arquivoSaida)) { File.Delete(arquivoSaida); }
// Obter a quantidade de imagens (assumindo 4 imagens por conjunto: A, B, C, D) if (Directory.Exists(pastaImagens)) { var arquivosImagens = Directory.GetFiles(pastaImagens, "*.bmp"); int qtdImagens = arquivosImagens.Length / 4; // 4 câmeras por conjunto (A, B, C, D)
// Processar cada conjunto de imagens for (int i = 0; i < qtdImagens; i++) { // Chamar a função para cada câmera EncontrarLinhaLaserPonteiro($"{pastaImagens}{i}A.bmp", i + 20, "A"); EncontrarLinhaLaserPonteiro($"{pastaImagens}{i}B.bmp", i + 20, "B"); EncontrarLinhaLaserPonteiro($"{pastaImagens}{i}C.bmp", i + 20, "C"); EncontrarLinhaLaserPonteiro($"{pastaImagens}{i}D.bmp", i + 20, "D"); }
// Informar o usuário que o processamento foi concluído MessageBox.Show($"Processamento concluído. Pontos salvos em '{arquivoSaida}'.", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show($"Pasta '{pastaImagens}' não encontrada. Verifique o caminho.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception ex) { // Exibir mensagem de erro, caso ocorra algum problema MessageBox.Show($"Ocorreu um erro: {ex.Message}", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void EncontrarLinhaLaserPonteiro(string caminho, int y, string camera) { StringBuilder pontos = new StringBuilder();
Bitmap img = new Bitmap(caminho); int imageWidth = img.Width; int imageHeight = img.Height;
int centerX = imageWidth / 2; // W/2 int centerY = imageHeight / 2; // H/2