Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Python untuk mengekstrak kontur daripada gambar

Cara menggunakan Python untuk mengekstrak kontur daripada gambar

王林
王林asal
2023-08-26 16:33:302124semak imbas

Cara menggunakan Python untuk mengekstrak kontur daripada gambar

Cara menggunakan Python untuk melakukan pengekstrakan kontur pada gambar

Pengenalan:
Dalam bidang pemprosesan imej dan penglihatan komputer, pengekstrakan kontur adalah tugas yang sangat penting. Ia boleh memisahkan objek sasaran dalam imej dari latar belakang dan mengekstrak maklumat tepi bentuk objek. Artikel ini akan memperkenalkan cara menggunakan perpustakaan OpenCV dalam Python untuk mengekstrak kontur daripada imej.

  1. Pasang perpustakaan OpenCV
    Sebelum anda bermula, anda perlu memastikan bahawa perpustakaan OpenCV telah dipasang. Anda boleh memasangnya menggunakan arahan pip:

    pip install opencv-python
  2. Import perpustakaan yang diperlukan
    Pertama, kita perlu mengimport perpustakaan OpenCV dan perpustakaan numpy. OpenCV digunakan untuk pemprosesan imej dan numpy digunakan untuk operasi tatasusunan.

    import cv2
    import numpy as np
  3. Muat imej
    Gunakan fungsi imread OpenCV untuk memuatkan imej. Imej sampel disimpan secara setempat, dan laluan boleh diubah suai mengikut situasi sebenar. imread函数加载图片。示例图片保存在本地,可以根据实际情况修改路径。

    image = cv2.imread('path/to/image.jpg')
  4. 转换为灰度图像
    由于轮廓提取通常在灰度图像上进行,因此需要将彩色图像转换为灰度图像。可以使用OpenCV的cvtColor函数实现。

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  5. 使用阈值进行二值化处理
    轮廓提取常常通过对图像进行二值化处理来实现。可以使用OpenCV的threshold函数将灰度图像转化为二值图像。

    _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
  6. 进行轮廓提取
    使用OpenCV的findContours函数对二值图像进行轮廓提取。该函数会返回提取得到的轮廓以及层次结构。

    contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
  7. 绘制轮廓
    可以使用OpenCV的drawContours函数将提取得到的轮廓绘制在原始图像上。

    cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
  8. 显示结果
    最后使用OpenCV的imshow函数显示结果。

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

完整代码示例:

import cv2
import numpy as np

# 加载图片
image = cv2.imread('path/to/image.jpg')

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

# 二值化处理
_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 轮廓提取
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

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

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

结论:
本文介绍了如何使用Python中的OpenCV库对图片进行轮廓提取。通过对图像进行灰度转换、二值化处理和使用findContoursrrreee

🎜🎜Tukar kepada imej skala kelabu🎜Memandangkan pengekstrakan kontur biasanya dilakukan pada imej skala kelabu, imej berwarna perlu ditukar kepada imej skala kelabu. Ia boleh dilaksanakan menggunakan fungsi cvtColor OpenCV. 🎜rrreee🎜🎜🎜Penduaan menggunakan ambang🎜Pengestrakan kontur selalunya dicapai dengan menduakan imej. Anda boleh menggunakan fungsi ambang OpenCV untuk menukar imej skala kelabu kepada imej binari. 🎜rrreee🎜🎜🎜Pengestrakan kontur🎜Gunakan fungsi findContours OpenCV untuk melaksanakan pengekstrakan kontur pada imej binari. Fungsi ini mengembalikan kontur dan hierarki yang diekstrak. 🎜rrreee🎜🎜🎜Melukis kontur🎜Anda boleh menggunakan fungsi drawContours OpenCV untuk melukis kontur yang diekstrak pada imej asal. 🎜rrreee🎜🎜🎜Paparkan keputusan🎜Akhir sekali gunakan fungsi imshow OpenCV untuk memaparkan hasil. 🎜rrreee🎜🎜Contoh kod penuh: 🎜rrreee🎜Kesimpulan: 🎜Artikel ini memperkenalkan cara menggunakan perpustakaan OpenCV dalam Python untuk melaksanakan pengekstrakan kontur pada imej. Dengan melakukan penukaran skala kelabu dan perduaan pada imej dan menggunakan fungsi findContours untuk mengekstrak kontur, kontur yang diekstrak akhirnya boleh dilukis pada imej asal. Pengekstrakan kontur boleh digunakan secara meluas dalam pemprosesan imej, penglihatan komputer, pengesanan sasaran dan bidang lain, dan merupakan teknologi yang sangat praktikal. 🎜

Atas ialah kandungan terperinci Cara menggunakan Python untuk mengekstrak kontur daripada gambar. 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