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