Cara menggunakan Python untuk membina semula bentuk imej

王林
Lepaskan: 2023-08-25 22:45:06
asal
955 orang telah melayarinya

Cara menggunakan Python untuk membina semula bentuk imej

Cara menggunakan Python untuk membina semula bentuk gambar

Pengenalan: Pemprosesan imej adalah tugas penting dalam bidang penglihatan komputer, dan pembinaan semula bentuk gambar adalah salah satu teknologi utama. Artikel ini akan memperkenalkan cara menggunakan Python untuk membina semula bentuk imej, dengan contoh kod.

1. Persediaan
Sebelum membina semula bentuk imej, kita perlu memasang perpustakaan pemprosesan imej Python - OpenCV. Ia boleh dipasang di terminal melalui arahan berikut:

pip install opencv-python
Salin selepas log masuk

2. Baca gambar
Pertama, kita perlu membaca gambar untuk diproses. Ini boleh dicapai melalui kod berikut:

import cv2

# 读取图片
img = cv2.imread('image.jpg')

# 显示图片
cv2.imshow('Original Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Salin selepas log masuk

Dalam kod ini, kami menggunakan fungsi cv2.imread untuk membaca imej, dan kemudian menggunakan fungsi cv2.imshow untuk memaparkan gambar yang dibaca. cv2.waitKey(0) bermaksud menunggu sebarang kekunci ditekan untuk menutup tetingkap gambar. cv2.imread函数读取图片,然后使用cv2.imshow函数展示读取到的图片。cv2.waitKey(0)表示等待按下任意键关闭图片窗口。

三、图像预处理
在进行形状重建前,我们需要对图片进行一些预处理。这包括灰度化、二值化等操作。可以通过以下代码实现:

import cv2

# 读取图片
img = cv2.imread('image.jpg')

# 灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 图像二值化
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 显示二值化后的图片
cv2.imshow('Binary Image', binary)
cv2.waitKey(0)
cv2.destroyAllWindows()
Salin selepas log masuk

在这段代码中,我们使用cv2.cvtColor函数将BGR图像转为灰度图像,然后使用cv2.threshold函数对灰度图像进行二值化。cv2.THRESH_BINARY表示使用大于阈值的像素点作为前景,小于阈值的像素点作为背景。

四、形状重建
在进行形状重建时,我们可以利用OpenCV提供的轮廓检测函数,来提取图像中的轮廓并画出来。可以通过以下代码实现:

import cv2

# 读取图片
img = cv2.imread('image.jpg')

# 灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 图像二值化
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 轮廓检测
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# 在原图上绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)

# 显示绘制轮廓后的图片
cv2.imshow('Contours Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Salin selepas log masuk

在这段代码中,我们首先使用cv2.findContours函数对二值化后的图像进行轮廓检测。cv2.RETR_TREE表示提取所有轮廓,并建立轮廓间的层级关系,cv2.CHAIN_APPROX_SIMPLE则表示轮廓的存储方式为仅存储拐点信息。然后,我们使用cv2.drawContours

3. Prapemprosesan imej

Sebelum pembinaan semula bentuk, kita perlu melakukan beberapa prapemprosesan pada imej. Ini termasuk skala kelabu, perduaan dan operasi lain. Ini boleh dicapai melalui kod berikut:
rrreee

Dalam kod ini, kami menggunakan fungsi cv2.cvtColor untuk menukar imej BGR kepada imej skala kelabu, dan kemudian menggunakan cv2.threshold fungsi Binarize imej skala kelabu. cv2.THRESH_BINARY bermaksud menggunakan piksel yang lebih besar daripada ambang sebagai latar depan dan piksel yang lebih kecil daripada ambang sebagai latar belakang. 🎜🎜4. Pembinaan Semula Bentuk🎜Apabila melakukan pembinaan semula bentuk, kita boleh menggunakan fungsi pengesanan kontur yang disediakan oleh OpenCV untuk mengekstrak kontur dalam imej dan melukisnya. Ini boleh dicapai melalui kod berikut: 🎜rrreee🎜Dalam kod ini, kami mula-mula menggunakan fungsi cv2.findContours untuk melaksanakan pengesanan kontur pada imej terdua. cv2.RETR_TREE bermaksud mengekstrak semua kontur dan mewujudkan hubungan hierarki antara kontur cv2.CHAIN_APPROX_SIMPLE bermaksud kaedah penyimpanan kontur adalah untuk menyimpan maklumat titik infleksi sahaja. Kemudian, kami menggunakan fungsi cv2.drawContours untuk melukis kontur yang dikesan pada imej asal. 🎜🎜Ringkasan: 🎜Artikel ini memperkenalkan cara menggunakan Python untuk melakukan pembinaan semula bentuk pada gambar, dan disertakan dengan contoh kod yang sepadan. Melalui langkah di atas, kita boleh mengenali dan membina semula bentuk dalam gambar, meletakkan asas untuk tugas pemprosesan imej seterusnya. Saya harap artikel ini dapat membantu kajian anda dalam bidang pemprosesan imej! 🎜

Atas ialah kandungan terperinci Cara menggunakan Python untuk membina semula bentuk imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!