python_developer
1.54K subscribers
3.74K photos
1.97K videos
232 files
434 links
کانال اموزش پایتون @Real_developer
تبلیغات پذیرفته میشود.
Download Telegram
import numpy as np
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('test.jpg')
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# threshold for hue channel in blue range
blue_min = np.array([100, 100, 100], np.uint8)
blue_max = np.array([140, 255, 255], np.uint8)
threshold_blue_img = cv2.inRange(img_hsv, blue_min, blue_max)

threshold_blue_img = cv2.cvtColor(threshold_blue_img, cv2.COLOR_GRAY2RGB)

plt.imshow(threshold_blue_img)

plt.show()
💢Masking with a binary threshold💢

حالا که میتوانیم رنگها را شناسایی کنیم، کارهای جالبی مثل استفاده از تصویر باینری به عنوان ماسک میتوانیم انجام دهیم.
یک ماسک معمولا یک ماتریس از صفرها (برای قطعاتی است که باید حذف شوند) و غیر صفر (برای قطعاتی که میخواهیم نگهداریم).
اگر بگم من یک نسخه از یک تصویر از یک منظره در فضای باز را که آسمان و دریا را منع می کند دوست دارم. ابتدا می توانیم پیکسل های موجود در محدوده رنگ آبی را پیدا کنیم که قسمت های آبی آسمان و دریا ی تصویر را شناسایی می کند. برای دریافت بخش هایی از تصویر که آسمان و دریا نیستند، ما می توانیم مقادیر با bitwise_not را معکوس کنیم، که قطعاتی را که آبی نیستند به ما می دهد و به ما ماسک می دهد.
import numpy as np
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('5.jpg')

img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
blue_min = np.array([100, 100, 100], np.uint8)
blue_max = np.array([140, 255, 255], np.uint8)
mask_inverse = cv2.inRange(img_hsv, blue_min, blue_max)

mask = cv2.bitwise_not(mask_inverse)

plt.imshow(cv2.cvtColor(mask, cv2.COLOR_GRAY2RGB))

plt.show()
Using binary thresholding to obtain an image mask
import numpy as np
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('5.jpg')

img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

blue_min = np.array([100, 100, 100], np.uint8)
blue_max = np.array([140, 255, 255], np.uint8)
mask_inverse = cv2.inRange(img_hsv, blue_min, blue_max)

mask = cv2.bitwise_not(mask_inverse)

plt.imshow(cv2.cvtColor(mask, cv2.COLOR_GRAY2RGB))

mask_rgb = cv2.cvtColor(mask, cv2.COLOR_GRAY2RGB)

masked_upstate = cv2.bitwise_and(img, mask_rgb)
masked_replace_white = cv2.addWeighted(masked_upstate, 1, cv2.cvtColor(mask_inverse, cv2.COLOR_GRAY2RGB), 1, 0)

plt.imshow(cv2.cvtColor(masked_replace_white, cv2.COLOR_BGR2RGB))

plt.show()
This media is not supported in your browser
VIEW IN TELEGRAM
سه روش آستانه گیری:
+ Simple thresholding
+ Adaptive thresholding
+ Otsu's thresholding
Simple Thresholding
اگر مقدار پیکسل از مقدار آستانه بزرگتر باشد،یک مقدار میگیره (ممکنه اون سفید باشه) و اگر کمتر باشه (ممکنه اون مقدار سیاه باشه).
در آستانه گیری ساده ا ز تابع cv2.threshold استفاده میکنیم.
- اولین آرگومان این تابع مربوط به تصویر اولیه میباشد که باید سیاه و سفید باشد.
- آرگومان دوم مقدار آستانه ای که برای طبقه بندی مقادیر پیکسل استفاده میشود.
- آرگومان سوم maxVal که نشان دهنده
بیشترین مقدار از مقدار آستانه است.
- سبک های مختلف آستانه توسط آرگومان چهارم مشخص میشود:
cv2.THRESH_BINARY
cv2.THRESH_BINARY_INV
cv2.THRESH_TRUNC
cv2.THRESH_TOZERO
cv2.THRESH_TOZERO_INV
import cv2
import numpy as np
img = cv2.imread('sample.jpg',0)
retval,threshold = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
cv2.imshow('Original ',img)
cv2.imshow('threshold ',threshold)
cv2.waitKey (0)
cv2.destroyAllWindows ()
import cv2
import numpy as np
img = cv2.imread('sample.jpg',0)
ret,threshold1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
cv2.imshow('threshold ',threshold1)
cv2.waitKey (0)
cv2.destroyAllWindows ()
import cv2
import numpy as np
img = cv2.imread('sample.jpg',0)
ret,threshold1 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
cv2.imshow('threshold ',threshold1)
cv2.waitKey (0)
cv2.destroyAllWindows ()
import cv2
import numpy as np
img = cv2.imread('sample.jpg',0)
ret,threshold1 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
cv2.imshow('threshold ',threshold1)
cv2.waitKey (0)
cv2.destroyAllWindows ()