DEV Community

Cover image for Computer Vision: from 0 to HERO (4-dars)
Sadikov Dev
Sadikov Dev

Posted on

Computer Vision: from 0 to HERO (4-dars)

SciPy

Scipy

Numpy yuqori samarali ko'p o'lchovli massivlar va ushbu massivlar bilan hisoblash va ularni boshqarish uchun asosiy vositalarni taqdim etadi. SciPy numpy massivlariga asoslanadi va turli xil ilmiy va muhandislik ilovalari uchun foydali bo'lgan ko'plab funksiyalarni taqdim etadi.

SciPy bilan tanishishning eng yaxshi usuli hujjatlarni ko'rib chiqishdir. Hozirda esa biz uchun foydali bo'lishi mumkin bo'lgan SciPy'ning ba'zi qismlarini qarab chiqamiz.

Rasm operatsiyalari

SciPy tasvirlar bilan ishlash uchun ba'zi asosiy funksiyalarni taqdim etadi. Masalan, tasvirlarni numpy massivlarga o'qish, numpy massivlarni tasvir sifatida yozish va tasvir hajmini o'zgartirish funksiyalariga ega. Mana bu funksiyalarni ko'rsatadigan oddiy misol:

from scipy.misc import imread, imsave, imresize

# JPEG suratni numpy massivga o'qib olish
img = imread('assets/cat.jpg')
print(img.dtype, img.shape)  # Prints "uint8 (400, 248, 3)"

# Rang kanallarining har birini boshqa skalyar konstanta bilan masshtablash orqali tasvirni ranglashimiz mumkin;
# Tasvirning (400, 248, 3) shakli  bor;
# Uni (3,) shakldagi [1, 0,95, 0,9] massivga ko'paytiramiz;
# numpy broadcasting - bu qizil kanalni o'zgarishsiz qoldirishini anglatadi va yashil va ko'k kanallarni mos ravishda 0,95 va 0,9 ga ko'paytiradi.
img_tinted = img * [1, 0.95, 0.9]

# Rangli tasvirni 300x300 px holatiga keltirish
img_tinted = imresize(img_tinted, (300, 300))

# Rangli tasvirni xotiraga saqlash
imsave('assets/cat_tinted.jpg', img_tinted)
Enter fullscreen mode Exit fullscreen mode

Test

test

Tepada: asl rasm. Pastda: ranglangan va o'lchami o'zgartirilgan rasm.


MATLAB fayllari

scipy.io.loadmat va scipy.io.savemat funktsiyalari sizga MATLAB fayllarini o'qish va yozish imkonini beradi. Ular haqida batafsil hujjatlarda o'qishingiz mumkin.

Nuqtalar orasidagi masofa

SciPy nuqtalar to'plami orasidagi masofani hisoblash uchun ba'zi foydali funktsiyalarni taqdim etadi.

scipy.spatial.distance.pdist funksiyasi berilgan to'plamdagi barcha (x, y) nuqtalar orasidagi masofani hisoblaydi:

Ushbu funksiya haqida barcha tafsilotlarni hujjatlarda o'qishingiz mumkin .

Shunga o'xshash funksiya (scipy.spatial.distance.cdist) ikkita nuqta to'plamidagi barcha juftliklar orasidagi masofani hisoblaydi, bu haqda hujjatlarda o'qishingiz mumkin .


Matplotlib

Matplotlib - bu chizmachilik kutubxonasi. Ushbu bo'limda matplotlib.pyplot MATLAB ga o'xshash chizma tizimini taqdim etadigan modul haqida qisqacha ma'lumot beriladi.

Syujet tuzish

Matplotlib'dagi eng muhim funksiya bu plot2D ma'lumotlarni chizish imkonini beradi. Mana oddiy misol:

import numpy as np
import matplotlib.pyplot as plt

# Sinus egri chiziqdagi nuqtalar uchun x va y koordinatalarini hisoblash
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)

# Matplotlib yordamida nuqtalarni ifodalash
plt.plot(x, y)
plt.show()  # Grafiklar paydo bo'lishi uchun plt.show() ga murojaat qilishingiz kerak.
Enter fullscreen mode Exit fullscreen mode

Ushbu kodni ishga tushirish quyidagi chizma hosil qiladi:

Graph

Bir oz qo'shimcha ish bilan biz bir vaqtning o'zida bir nechta satrlarni osongina chizishimiz, sarlavha va koordinata o'qlarining nomlarini qo'shishimiz mumkin:

import numpy as np
import matplotlib.pyplot as plt

# Sinus va kosinus egri chiziqlaridagi nuqtalar uchun x va y koordinatalarini hisoblash
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)

# Matplotlib yordamida nuqtalarni chizish
plt.plot(x, y_sin)
plt.plot(x, y_cos)
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.title('Sine and Cosine')
plt.legend(['Sine', 'Cosine'])
plt.show()
Enter fullscreen mode Exit fullscreen mode

gr

Tasvirlar

Rasmlarni ko'rsatish uchun imshow funksiyasidan foydalanishingiz mumkin . Mana bir misol:

import numpy as np
from scipy.misc import imread, imresize
import matplotlib.pyplot as plt

img = imread('assets/cat.jpg')
img_tinted = img * [1, 0.95, 0.9]

# Original suratni chiqarish
plt.subplot(1, 2, 1)
plt.imshow(img)

# Ranglangan suratni chiqarish
plt.subplot(1, 2, 2)

# tasvirni ko'rsatishdan oldin uni uint8 ga konvert qilamiz
plt.imshow(np.uint8(img_tinted))
plt.show()
Enter fullscreen mode Exit fullscreen mode

img1

Top comments (0)