Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengukur sudut pada gambar menggunakan Python

Bagaimana untuk mengukur sudut pada gambar menggunakan Python

PHPz
PHPzasal
2023-08-26 12:09:162976semak imbas

Bagaimana untuk mengukur sudut pada gambar menggunakan Python

Cara menggunakan Python untuk mengukur sudut pada gambar

Ikhtisar:
Pemprosesan imej ialah tugas penting dalam bidang penglihatan komputer, di mana pengukuran sudut adalah keperluan biasa. Dalam artikel ini, kami akan menggunakan bahasa Python untuk mengukur sudut pada gambar dan menunjukkan proses melalui contoh kod.

Langkah 1: Import perpustakaan yang diperlukan
Pertama, kita perlu mengimport perpustakaan Python yang diperlukan. Antaranya, OpenCV ialah perpustakaan penglihatan komputer yang digunakan secara meluas yang menyediakan banyak pemprosesan imej dan alat pengkomputeran. NumPy ialah perpustakaan pengkomputeran saintifik yang biasa digunakan yang menyediakan asas untuk pengiraan berangka yang cekap.

import cv2
import numpy as np

Langkah 2: Muatkan imej
Langkah seterusnya, kita perlu memuatkan imej. Gunakan fungsi imread OpenCV untuk memuatkan imej dengan mudah. Gunakan laluan imej sebagai parameter fungsi, dan fungsi akan mengembalikan tatasusunan NumPy yang mewakili imej. imread函数可以方便地加载图片。将图片路径作为函数的参数,函数将返回一个表示图片的NumPy数组。

image_path = 'path_to_your_image.jpg'
image = cv2.imread(image_path)

步骤3: 图片预处理
在对图片进行角度测量之前,我们需要对图片进行一些预处理。为了减少噪声的影响并提高测量的准确性,我们可以将图片转换为灰度图像,并应用高斯模糊。

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)

步骤4: 边缘检测
为了测量图片中的角度,我们需要检测出图片中的边缘。这可以通过使用Canny边缘检测算法来实现。

edges = cv2.Canny(blurred, 50, 150)

步骤5: 轮廓检测
接下来,我们需要检测出图片中的轮廓。我们可以使用OpenCV的findContours

contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

Langkah 3: Prapemprosesan imej

Sebelum mengukur sudut imej, kita perlu melakukan beberapa prapemprosesan pada imej. Untuk mengurangkan kesan hingar dan meningkatkan ketepatan ukuran, kami boleh menukar gambar kepada imej skala kelabu dan menggunakan kabur Gaussian.

best_fit_rect = None
max_area = 0

for contour in contours:
    (x, y, w, h) = cv2.boundingRect(contour)
    area = w * h
    
    if area > max_area:
        max_area = area
        best_fit_rect = cv2.minAreaRect(contour)

angle = best_fit_rect[-1]

Langkah 4: Pengesanan Tepi

Untuk mengukur sudut dalam gambar, kita perlu mengesan tepi dalam gambar. Ini boleh dicapai dengan menggunakan algoritma pengesanan tepi Canny.

result_image = image.copy()
cv2.putText(result_image, f"Angle: {angle}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.imshow("Result", result_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Langkah 5: Pengesanan Kontur

Seterusnya, kita perlu mengesan kontur dalam imej. Kita boleh menggunakan fungsi findContours OpenCV untuk mencapai operasi ini.
rrreee

Langkah 6: Cari segi empat tepat yang paling sesuai

Dalam pengukuran sudut, kami biasanya menggunakan segi empat tepat yang paling sesuai untuk menganggar sudut. Dengan mencari segi empat tepat yang paling sesuai untuk semua kontur, kita boleh mendapatkan nilai sudut anggaran.

rrreee🎜Langkah 7: Paparkan hasilnya🎜Akhir sekali, kita boleh memaparkan sudut yang diukur pada gambar dan menyimpan hasilnya sebagai gambar baharu. 🎜rrreee🎜Ringkasan:🎜Dengan menggunakan bahasa Python dan perpustakaan OpenCV, kami boleh melakukan pengukuran sudut pada gambar dengan mudah. Dengan memuatkan imej, prapemprosesan, pengesanan tepi, pengesanan kontur dan segi empat tepat pemasangan, kita boleh mendapatkan nilai sudut anggaran dan memaparkan hasilnya pada imej. Kaedah ini mempunyai aplikasi praktikal dalam banyak bidang, seperti pengukuran kejuruteraan, analisis imej perubatan, dsb. 🎜🎜Walaupun artikel ini menyediakan contoh pengukuran sudut asas, dalam aplikasi dunia sebenar, cabaran dan komplikasi lain mungkin timbul. Mengikut keperluan khusus, kami boleh mengubah suai dan mengoptimumkan kod mengikut situasi sebenar. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengukur sudut pada gambar menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn