Cara menggunakan CV2 pada Python

Dalam tutorial ini, Anda akan belajar bagaimana Anda dapat memproses gambar dengan Python menggunakan perpustakaan OpenCV.

OpenCV adalah perpustakaan open source gratis yang digunakan dalam pemrosesan gambar waktu nyata. Ini digunakan untuk memproses gambar, video, dan bahkan streaming langsung, tetapi dalam tutorial ini, kami akan memproses gambar hanya sebagai langkah pertama. Sebelum memulai, mari kita instal OpenCV.

Sekarang OpenCV berhasil diinstal dan kami siap. Mari bersenang-senang dengan beberapa gambar!

Pertama-tama, impor modul cv2.

Sekarang untuk membaca gambar, gunakan metode imread() dari modul cv2, tentukan jalur ke gambar dalam argumen dan simpan gambar dalam variabel seperti di bawah ini:

img = cv2.imread('pyimg.jpg'>NumPy array ! That why image processing using OpenCV is so easy. All the time you are working with a NumPy array.

To display the image, you can use the imshow() method of cv2.

cv2.imshow('Original Image', img) cv2.waitKey(0) 

Fungsi waitkey membutuhkan waktu sebagai argumen dalam milidetik sebagai penundaan untuk menutup jendela. Di sini kita mengatur waktu ke nol untuk menampilkan jendela selamanya sampai kita menutupnya secara manual.

Cara menggunakan CV2 pada Python

Untuk memutar gambar ini, Anda memerlukan lebar dan tinggi gambar karena Anda akan menggunakannya dalam proses rotasi seperti yang akan Anda lihat nanti.

height, width = img.shape[0:2]

Atribut shape mengembalikan tinggi dan lebar matriks gambar. Jika Anda mencetak |_+_| , Anda akan memiliki output berikut:

Cara menggunakan CV2 pada Python

Oke, sekarang kami memiliki matriks gambar kami dan kami ingin mendapatkan matriks rotasi. Untuk mendapatkan matriks rotasi, kami menggunakan getRotationMatrix2D () metode cv2. Sintaks dari getRotationMatrix2D () adalah:

img.shape[0:2]

Ini dia Tengah adalah titik pusat rotasi, sudut adalah sudut dalam derajat dan skala adalah properti skala yang membuat gambar pas di layar.

Untuk mendapatkan matriks rotasi gambar kita, kodenya adalah:

cv2.getRotationMatrix2D(center, angle, scale)

Langkah selanjutnya adalah memutar gambar kita dengan bantuan matriks rotasi.

Untuk memutar gambar, kami memiliki metode cv2 bernama bungkusAffine yang mengambil gambar asli, matriks rotasi gambar dan lebar dan tinggi gambar sebagai argumen.

rotationMatrix = cv2.getRotationMatrix2D((width/2, height/2), 90, .5)

Gambar yang diputar disimpan dalam matriks Gambar yang diputar. Untuk menampilkan gambar, gunakan imshow() seperti di bawah ini:

rotatedImage = cv2.warpAffine(img, rotationMatrix, (width, height))

Setelah menjalankan baris kode di atas, Anda akan memiliki output berikut:

Cara menggunakan CV2 pada Python

Pangkas Gambar

Pertama, kita perlu mengimpor modul cv2 dan membaca gambar dan mengekstrak lebar dan tinggi gambar:

cv2.imshow('Rotated Image', rotatedImage) cv2.waitKey(0)

Kami mengatakan kami ingin 550 kolom (lebar) dan 350 baris (tinggi).

Hasilnya akan menjadi:

Cara menggunakan CV2 pada Python

Sesuaikan Kontras Gambar

Dalam modul Python OpenCV, tidak ada fungsi khusus untuk mengatur kontras gambar kecuali: dokumentasi resmi dari OpenCV menyarankan persamaan yang dapat melakukan kecerahan gambar dan kontras gambar keduanya secara bersamaan.

import cv2 img = cv2.imread('pyimg.jpg'>

Resize an Image

To resize an image, you can use the resize() method of openCV. In the resize method, you can either specify the values of x and y axis or the number of rows and columns which tells the size of the image.

Import and read the image:

import cv2 img = cv2.imread('pyimg.jpg'> 

Now using the row and column values to resize the image:

newImg = cv2.resize(img, (550, 350)) cv2.imshow('Resized Image', newImg) cv2.waitKey(0) 

Di sini a adalah alpha yang mendefinisikan kontras gambar. Jika a lebih besar dari 1, akan ada kontras yang lebih tinggi.

Jika nilai a antara 0 dan 1 (lebih kecil dari 1 tetapi lebih besar dari 0), akan ada kontras yang lebih rendah. Jika a adalah 1, tidak akan ada efek kontras pada gambar.

b adalah singkatan dari beta. Nilai b bervariasi dari -127 hingga +127.

Untuk mengimplementasikan persamaan ini dalam Python OpenCV, Anda dapat menggunakan metode addWeighted(). Kami menggunakan metode addWeighted() karena menghasilkan output dalam kisaran 0 dan 255 untuk gambar berwarna 24-bit.

Sintaks metode addWeighted() adalah sebagai berikut:

new_img = a * original_img + b

Sintaks ini akan memadukan dua gambar, gambar sumber pertama (source_img1) dengan bobot alpha1 dan gambar sumber kedua (source_img2).

Jika Anda hanya ingin menerapkan kontras dalam satu gambar, Anda dapat menambahkan sumber gambar kedua sebagai nol menggunakan NumPy.

Mari kita bekerja pada contoh sederhana. Impor modul berikut:

cv2.addWeighted(source_img1, alpha1, source_img2, alpha2, beta)

Baca gambar aslinya:

import cv2 import numpy as np

Di sini minVal dan maxVal masing-masing adalah nilai gradien intensitas minimum dan maksimum.

Perhatikan kode berikut:

img = cv2.imread('pyimg.jpg'>

Make an image blurry

Gaussian Blur

To make an image blurry, you can use the GaussianBlur() method of OpenCV.

The GaussianBlur() uses the Gaussian kernel. The height and width of the kernel should be a positive and an odd number.

Then you have to specify the X and Y direction that is sigmaX and sigmaY respectively. If only one is specified, both are considered the same.

Consider the following example:

import cv2 img = cv2.imread('pyimg.jpg'> 

Median Blur

In median blurring, the median of all the pixels of the image is calculated inside the kernel area. The central value is then replaced with the resultant median value. Median blurring is used when there are salt and pepper noise in the image.

To apply median blurring, you can use the medianBlur() method of OpenCV.

Consider the following example where we have a salt and pepper noise in the image:

import cv2 img = cv2.imread('pynoise.png'> 

Another comparison of the original image and after blurring:

Cara menggunakan CV2 pada Python

Detect Edges

To detect the edges in an image, you can use the Canny() method of cv2 which implements the Canny edge detector. The Canny edge detector is also known as the optimal detector .

The syntax to Canny() is as follows:

 cv2.Canny(image, minVal, maxVal) 

Dalam persamaan ini (xcenter , ycenter) adalah pusat lingkaran dan r adalah jari-jari lingkaran.

Gambar asli kami adalah:

Cara menggunakan CV2 pada Python

Setelah mendeteksi lingkaran pada gambar, hasilnya akan menjadi:

Cara menggunakan CV2 pada Python

Oke, jadi kita punya lingkaran di gambar dan kita bisa menerapkan topengnya. Perhatikan kode berikut:

import cv2 img = cv2.imread('pyimg.jpg'>
tampilkan sebaris vs blok

Here is the result of the above code on another image:

Cara menggunakan CV2 pada Python

Convert image to grayscale (Black & White)

The easy way to convert an image in grayscale is to load it like this:

 img = cv2.imread('pyimg.jpg'> 

Centroid (Center of blob) detection

To find the center of an image, the first step is to convert the original image into grayscale. We can use the cvtColor() method of cv2 as we did before.

This is demonstrated in the following code:

dimana saya bisa membeli tel crypto
import cv2 img = cv2.imread('py.jpg'> 

After detecting the center, our image will be as follows:

Cara menggunakan CV2 pada Python

Apply a mask for a colored image

Image masking means to apply some other image as a mask on the original image or to change the pixel values in the image.

To apply a mask on the image, we will use the HoughCircles() method of the OpenCV module. The HoughCircles() method detects the circles in an image. After detecting the circles, we can simply apply a mask on these circles.

The HoughCircles() method takes the original image, the Hough Gradient (which detects the gradient information in the edges of the circle), and the information from the following circle equation:

 (x - xcenter)2 + (y - ycenter)2 = r2 

Untuk membuat topeng, gunakan np.full yang akan mengembalikan array NumPy dari bentuk yang diberikan:

import cv2 import numpy as np img1 = cv2.imread('pyimg.jpg'>OpenCV: Hough Circle Transform :
gray_img = cv2.medianBlur(cv2.cvtColor(img, cv2.COLOR_RGB2GRAY), 3) circles = cv2.HoughCircles(gray_img, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=50, minRadius=0, maxRadius=0) circles = np.uint16(np.around(circles)) 

Langkah selanjutnya adalah menggabungkan gambar dan array masking yang kita buat menggunakan bitwise_or operatornya sebagai berikut:

masking=np.full((img1.shape[0], img1.shape[1]),0,dtype=np.uint8) for j in circles[0, :]: cv2.circle(masking, (j[0], j[1]), j[2], (255, 255, 255), -1)

Menampilkan gambar yang dihasilkan:

Cara menggunakan CV2 pada Python

Mengekstrak teks dari Gambar (OCR)

Untuk mengekstrak teks dari gambar, Anda dapat menggunakan Google Tesseract-OCR. Anda dapat mengunduhnya dari ini tautan

Maka Anda harus menginstal modul pytesseract yang merupakan pembungkus Python untuk Tesseract-OCR.

Cara menggunakan CV2 pada Python

Gambar dari mana kita akan mengekstrak teks dari adalah sebagai berikut:

Cara menggunakan CV2 pada Python

Sekarang mari kita ubah teks dalam gambar ini menjadi string karakter dan tampilkan teks sebagai string pada output:

Impor modul pytesseract:

final_img = cv2.bitwise_or(img1, img1, masking=masking)

Setel jalur file yang dapat dieksekusi Tesseract-OCR:

import pytesseract

Sekarang gunakan gambar_ke_string metode untuk mengubah gambar menjadi string:

pytesseract.pytesseract.tesseract_cmd = r'C:Program Files (x86)Tesseract-OCR esseract'

Baca gambar dan ubah menjadi HSV menggunakan cvtColor():

print(pytesseract.image_to_string('pytext.png'>

Works like charm!

Detect and correct text skew

In this section, we will correct the text skew.

The original image is as follows:

Cara menggunakan CV2 pada Python

Import the modules cv2, NumPy and read the image:

import cv2 import numpy as np img = cv2.imread('pytext1.png'> 

Color Detection

Let’s detect the green color from an image:

Import the modules cv2 for images and NumPy for image arrays:

import cv2 import numpy as np 

Gunakan metode inRange() dari cv2 untuk memeriksa apakah elemen larik gambar yang diberikan terletak di antara nilai larik batas atas dan bawah:

img = cv2.imread('pydetect.png'>

Now create a NumPy array for the lower green values and the upper green values:

lower_green = np.array([34, 177, 76]) upper_green = np.array([255, 255, 255]) 

Ini akan mendeteksi warna hijau.

Terakhir, tampilkan gambar asli dan hasil:

masking = cv2.inRange(hsv_img, lower_green, upper_green)

Cara menggunakan CV2 pada Python

cv2.imshow('Original Image', img)

Cara menggunakan CV2 pada Python

Kurangi Kebisingan

Untuk mengurangi noise dari sebuah gambar, OpenCV menyediakan metode berikut:

  1. fastNlMeansDenoising(): Menghilangkan noise dari gambar skala abu-abu
  2. fastNlMeansDenoisingColored(): Menghilangkan noise dari gambar berwarna
  3. fastNlMeansDenoisingMulti(): Menghilangkan noise dari bingkai gambar skala abu-abu (video skala abu-abu)
  4. fastNlMeansDenoisingColoredMulti(): Sama seperti 3 tetapi bekerja dengan bingkai berwarna

Mari kita gunakan fastNlMeansDenoisingColored() dalam contoh kita:

Impor modul cv2 dan baca gambarnya:

cv2.imshow('Green Color detection', masking) cv2.waitKey(0)

Baca gambar dan ubah menjadi gambar skala abu-abu:

2 3 import cv2 img = cv2.imread('pyn1.png'>

Get image contour

Contours are the curves in an image that are joint together. The curves join the continuous points in an image. The purpose of contours is used to detect the objects.

The original image of which we are getting the contours of is given below:

Cara menggunakan CV2 pada Python

Consider the following code where we used the findContours() method to find the contours in the image:

Import cv2 module:

 import cv2 

Baca gambar dan ubah gambar menjadi gambar skala abu-abu:

img = cv2.imread('py1.jpg'>

Remove Background from an image

To remove the background from an image, we will find the contours to detect edges of the main object and create a mask with np.zeros for the background and then combine the mask and the image using the bitwise_and operator.

Consider the example below:

Import the modules (NumPy and cv2):

import cv2 import numpy as np 

Urutkan kontur:

img = cv2.imread('py.jpg'>OpenCV threshold .

Find the image contours:

 img_contours = cv2.findContours(threshed, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[-2] 

Hasilkan topeng menggunakan np.zeros:

img_contours = sorted(img_contours, key=cv2.contourArea) for i in img_contours: if cv2.contourArea(i) > 100: break

Menggambar kontur:

mask = np.zeros(img.shape[:2], np.uint8)

Terapkan operator bitwise_and:

cv2.drawContours(mask, [i],-1, 255, -1)

Menampilkan gambar asli:

new_img = cv2.bitwise_and(img, img, mask=mask)

Cara menggunakan CV2 pada Python

Menampilkan gambar yang dihasilkan:

cv2.imshow('Original Image', img)

Cara menggunakan CV2 pada Python

Pemrosesan gambar menyenangkan saat menggunakan OpenCV seperti yang Anda lihat. Saya harap Anda menemukan tutorialnya bermanfaat. Terus datang kembali.

Terima kasih.

#python #opencv #machine-learning #artificial-intelligence #developer

cv2 Imread untuk apa?

Untuk membaca suatu gambar digunakan fungsi cv2.imread(filename[, flags]) dimana filename merupakan full path dari gambar yang kalian simpan dan flags menspesifikasikan gambar yang dibaca yaitu >0 untuk gambar berwarna, =0 untuk gambar grayscale, dan <0 memuat gambar sesuai aslinya yaitu dengan alpha channel. Jika ...

Apa yang dilakukan cv2 COLOR_BGR2RGB?

cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB) akan melakukan konversi dari BGR menjadi RGB. f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10)) code ini menyediakan area untuk image ploting menjadi 2 kolom dalam 1 baris.

Apa fungsi open CV?

OpenCV merupakan salah satu cabang Artificial intellegent (kecerdasan buatan) yang digunakan untuk pengembangan atau analisis isi suatu gambar. Menghitung jumlah obyek dalam sebuah wadah menggunakan cara yang manual membuang waktu cukup lama, terutama jika obyek tersebut bergerak atau makhluk hidup.