Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melakukan transformasi Hough pada imej menggunakan Python

Bagaimana untuk melakukan transformasi Hough pada imej menggunakan Python

WBOY
WBOYasal
2023-08-26 13:16:45981semak imbas

Bagaimana untuk melakukan transformasi Hough pada imej menggunakan Python

Cara menggunakan Python untuk melakukan transformasi Hough pada imej

Abstrak:
Transformasi Hough ialah teknik pemprosesan imej yang biasa digunakan untuk mengesan garis lurus atau bentuk tertentu tertentu dalam imej. Artikel ini akan memperkenalkan cara menggunakan perpustakaan OpenCV dalam Python untuk melaksanakan transformasi Hough, dan menerangkan proses pelaksanaannya secara terperinci melalui contoh kod.

Pengenalan:
Transformasi Hough ialah teknik pemprosesan imej yang dicadangkan oleh Hough pada tahun 1962 dan pada asalnya digunakan untuk mengesan garis lurus dalam imej. Selepas itu, transformasi Hough telah digunakan secara meluas dan dikembangkan untuk mengesan bulatan, elips dan bentuk lain. Dalam bidang penglihatan komputer dan pemprosesan imej, transformasi Hough adalah alat yang sangat penting.

1. Prinsip Transformasi Hough
Prinsip asas Transformasi Hough adalah untuk menukar setiap piksel dalam imej kepada lengkung (atau ruang parameter) dalam ruang koordinat kutub (Ruang Hough). Untuk garis lurus, kedua-dua parameter mewakili jarak dan sudut garis lurus masing-masing. Dengan memilih titik dalam ruang parameter dan mencari persilangan pada lengkung, semua garis lurus dalam imej asal boleh diperolehi.

2. Pengenalan kepada perpustakaan OpenCV
OpenCV ialah perpustakaan perisian pembelajaran mesin dan visi komputer sumber terbuka yang menyediakan pelbagai pemprosesan imej dan algoritma penglihatan komputer. Ia adalah salah satu perpustakaan pemprosesan imej paling popular dalam Python, dengan fungsi pemprosesan imej yang berkuasa dan antara muka yang mudah digunakan. Artikel ini akan menggunakan perpustakaan OpenCV untuk melaksanakan transformasi Hough.

3 Gunakan Python untuk melakukan transformasi Hough
Yang berikut menggunakan contoh khusus untuk menunjukkan cara menggunakan Python untuk melakukan transformasi Hough pada imej.

Pertama, kita perlu mengimport perpustakaan yang diperlukan:

import cv2
import numpy as np
import matplotlib.pyplot as plt

Kemudian, baca dan paparkan imej asal:

image = cv2.imread("image.jpg")
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Seterusnya, tukar imej kepada skala kelabu:

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

Kemudian, lakukan pengesanan tepi pada imej:

edges = cv2.Canny(gray, 50, 150)
Seterusnya, lakukan transformasi Hough:

lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

Traverse dan lukis garis lurus yang dikesan:

for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

Akhir sekali, paparkan imej yang diproses:

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Kesimpulan:

Artikel ini memperincikan cara menggunakan perpustakaan OpenCV dalam Python untuk mengubah imej Perform Hough mengubah. Melalui kod sampel, kita dapat melihat keupayaan hebat transformasi Hough dalam mengesan garis lurus. Selain garis lurus, OpenCV juga menyediakan pelaksanaan transformasi Hough bagi bentuk lain, pembaca boleh mempelajari dan mencuba selanjutnya.

Rujukan:

    Hough, P. V. C. "Kaedah dan Cara untuk Mengenali Corak Kompleks," Paten A.S. 3 069 654, 18 Disember 1962.
  1. Bradlerski, G.V.: Belajar Komputer dengan Viktor, G. Perpustakaan OpenCV." O'Reilly Media, Inc., 2008.
Lampiran:

Lihat blok kod di bawah untuk kod lengkap:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取并显示原始图像
image = cv2.imread("image.jpg")
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

# 将图像转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 对图像进行边缘检测
edges = cv2.Canny(gray, 50, 150)

# 进行霍夫变换
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

# 遍历并绘制检测到的直线
for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

# 显示处理后的图像
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Nota: Sila gantikan

dalam kod dengan laluan imej anda sendiri. "image.jpg"

Atas ialah kandungan terperinci Bagaimana untuk melakukan transformasi Hough pada imej 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