python_developer
1.54K subscribers
3.74K photos
1.97K videos
232 files
434 links
کانال اموزش پایتون @Real_developer
تبلیغات پذیرفته میشود.
Download Telegram
اگر بگم من یک نسخه از یک تصویر از یک منظره در فضای باز را که آسمان و دریا را منع می کند دوست دارم. ابتدا می توانیم پیکسل های موجود در محدوده رنگ آبی را پیدا کنیم که قسمت های آبی آسمان و دریا ی تصویر را شناسایی می کند. برای دریافت بخش هایی از تصویر که آسمان و دریا نیستند، ما می توانیم مقادیر با 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 ()
import cv2
import numpy as np
img = cv2.imread('sample.jpg',0)
ret,threshold1 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
cv2.imshow('threshold ',threshold1)
cv2.waitKey (0)
cv2.destroyAllWindows ()
This media is not supported in your browser
VIEW IN TELEGRAM
درک این موضوع با یک تصویر دیگر