Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membentuk-tanda imej menggunakan Python

Bagaimana untuk membentuk-tanda imej menggunakan Python

WBOY
WBOYasal
2023-08-25 14:53:211184semak imbas

Bagaimana untuk membentuk-tanda imej menggunakan Python

Cara menggunakan Python untuk melabelkan imej dengan bentuk

Pengenalan:

Dalam bidang pemprosesan imej dan penglihatan komputer, melabel dan mengenal pasti objek dalam imej adalah tugas penting. Bentuk objek yang ditanda boleh digunakan untuk aplikasi seperti pengesanan objek, pengesanan tepi dan pengekstrakan kontur. Artikel ini akan memperkenalkan cara menggunakan Python dan perpustakaan OpenCV untuk melabelkan imej dengan bentuk.

Langkah 1: Pasang perpustakaan yang diperlukan

Sebelum kita mula, kita perlu memasang perpustakaan Python dan OpenCV. Anda boleh memasang perpustakaan OpenCV melalui arahan pip Perintah khusus adalah seperti berikut:

pip install opencv-python

Langkah 2: Import perpustakaan yang diperlukan

Dalam kod, kita perlu mengimport perpustakaan OpenCV dan beberapa perpustakaan tambahan lain. Kod khusus adalah seperti berikut:

import cv2
import numpy as np

Langkah 3: Baca fail imej

Gunakan fungsi imread() pustaka OpenCV untuk membaca fail imej. Kod khusus adalah seperti berikut: imread()函数可以读取图像文件。具体代码如下:

img = cv2.imread('image.jpg')

步骤四:将图像转换为灰度图像

在进行形状标记之前,我们需要将图像转换为灰度图像。使用OpenCV库的cvtColor()函数可以实现。具体代码如下:

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

步骤五:进行阈值分割

将灰度图像进行阈值分割可以得到二值图像,方便后续形状标记的操作。使用OpenCV库的threshold()函数可以实现。具体代码如下:

_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

步骤六:查找轮廓

使用OpenCV库的findContours()函数可以查找图像中的轮廓。具体代码如下:

contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

步骤七:绘制轮廓

使用OpenCV库的drawContours()函数可以将轮廓绘制在图像上。具体代码如下:

cv2.drawContours(img, contours, -1, (0, 255, 0), 3)

步骤八:显示结果

使用OpenCV库的imshow()

cv2.imshow('Contours', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Langkah 4: Tukar imej kepada imej skala kelabu

Sebelum melakukan pelabelan bentuk, kita perlu menukar imej kepada imej skala kelabu. Ini boleh dicapai menggunakan fungsi cvtColor() pustaka OpenCV. Kod khusus adalah seperti berikut:

import cv2
import numpy as np

# 读取图像文件
img = cv2.imread('image.jpg')

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

# 进行阈值分割
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 查找轮廓
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)

# 显示结果
cv2.imshow('Contours', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Langkah 5: Lakukan segmentasi ambang

Segmentasi ambang imej skala kelabu boleh mendapatkan imej binari, yang memudahkan operasi pelabelan bentuk seterusnya. Ini boleh dicapai menggunakan fungsi threshold() pustaka OpenCV. Kod khusus adalah seperti berikut: 🎜rrreee🎜Langkah 6: Cari kontur🎜🎜Gunakan fungsi findContours() pustaka OpenCV untuk mencari kontur dalam imej. Kod khusus adalah seperti berikut: 🎜rrreee🎜Langkah 7: Lukis kontur🎜🎜Gunakan fungsi drawContours() pustaka OpenCV untuk melukis kontur pada imej. Kod khusus adalah seperti berikut: 🎜rrreee🎜Langkah 8: Paparkan keputusan🎜🎜Gunakan fungsi imshow() pustaka OpenCV untuk memaparkan imej yang diproses. Kod khusus adalah seperti berikut: 🎜rrreee🎜Contoh kod penuh: 🎜rrreee🎜Kesimpulan: 🎜🎜Artikel ini memperkenalkan cara menggunakan Python dan perpustakaan OpenCV untuk melaksanakan pelabelan bentuk pada imej. Dengan melaksanakan contoh kod, kontur objek dalam imej boleh diekstrak dan ditanda untuk memudahkan pemprosesan imej dan aplikasi penglihatan komputer seterusnya. Pembaca boleh membuat pelarasan dan pengembangan yang sepadan mengikut keperluan dan situasi sebenar mereka sendiri. Semoga artikel ini bermanfaat kepada pembaca! 🎜

Atas ialah kandungan terperinci Bagaimana untuk membentuk-tanda 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