def detect_shirt(self):
#self.dst=cv2.inRange(self.norm_rgb,np.array([self.lb,self.lg,self.lr],np.uint8),np.array([self.b,self.g,self.r],np.uint8))
self.dst=cv2.inRange(self.norm_rgb,np.array([20,20,20],np.uint8),np.array([255,110,80],np.uint8))
cv2.threshold(self.dst,0,255,cv2.THRESH_OTSU+cv2.THRESH_BINARY)
fg=cv2.erode(self.dst,None,iterations=2)
#cv2.imshow("fore",fg)
bg=cv2.dilate(self.dst,None,iterations=3)
_,bg=cv2.threshold(bg, 1,128,1)
#cv2.imshow("back",bg)
mark=cv2.add(fg,bg)
mark32=np.int32(mark)
cv2.watershed(self.norm_rgb,mark32)
self.m=cv2.convertScaleAbs(mark32)
_,self.m=cv2.threshold(self.m,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
#cv2.imshow("final_tshirt",self.m)
cntr,h=cv2.findContours(self.m,cv2.cv.CV_RETR_EXTERNAL,cv2.cv.CV_CHAIN_APPROX_SIMPLE)
return self.m,cntr
python类inRange()的实例源码
def FindField(self):
#Feld: Hue zwischen 60 und 100
LowerGreen = np.array([40,0,0])
UpperGreen = np.array([90,255,150])
mask = cv2.inRange(self.ImgHSV,LowerGreen,UpperGreen)
# plt.figure()
# plt.imshow(mask,cmap='gray')
mask = self.SmoothFieldMask(mask)
# plt.figure()
# plt.imshow(mask.copy(),cmap='gray')
im2, contours, hierarchy = cv2.findContours(mask.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
if(len(contours) <= 0):
return
contours_sorted = sorted(contours, key = cv2.contourArea, reverse=True)[:10]
peri = cv2.arcLength(contours_sorted[0],True)
approx = cv2.approxPolyDP(contours_sorted[0], 0.02*peri, True)
if(len(approx) >-1):#== 4):
self.FieldContours = approx
cv2.rectangle(mask,(((self.FieldContours[0])[0])[0],((self.FieldContours[0])[0])[1]),(((self.FieldContours[2])[0])[0],((self.FieldContours[2])[0])[1]),(128,128,128),3)
# plt.imshow(mask, cmap="gray")
# plt.show()
project3.py 文件源码
项目:Self-Driving-Car-ND-Predict-Steering-Angle-with-CV
作者: sjamthe
项目源码
文件源码
阅读 32
收藏 0
点赞 0
评论 0
def yellowgrayscale(image):
#enhance yellow then find grayscale
#image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# define range of yellow color in HSV
#lower = np.array([40,40,40])
#upper = np.array([150,255,255])
#RGB limits
lower = np.array([80,80,40])
upper = np.array([255,255,80])
# Threshold the HSV image to get only yellow colors
mask = cv2.inRange(image, lower, upper)
#show_image('mask',mask)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(image,image, mask= mask)
res = cv2.addWeighted(res, 1.0, image, 1.0, 0)
res = grayscale(res)
return res
def filter_color(self, image, lower_color, upper_color):
'''
Methode maskiert Bereiche auf einem Bild welche nicht im mitgegebenen
HSV Farbraum liegen.
Parameter
---------
image : Bild
lower_color : Tupel
>> (h,s,v)
upper_color : Tupel
>> (h,s,v)
Rückgabe
---------
image : Bild
'''
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_color = np.array(lower_color, np.uint8)
upper_color = np.array(upper_color, np.uint8)
color_mask = cv2.inRange(hsv, lower_color, upper_color)
return cv2.bitwise_and(image, image, mask=color_mask)
def get_color(self, frame, color1, color2):
mask = cv2.inRange(self.hsv, color1, color2)
res = cv2.bitwise_and(frame, frame, mask = mask)
return res
def brightnessFiltering(img):
#this function filters out the darker pixels
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_bright = np.array([0,15,220])
#0,0,220
upper_bright = np.array([150,150,255])
#110,5,255
"""cv2.imshow("imago", hsv)
cv2.waitKey()"""
mask = cv2.inRange(hsv, lower_bright, upper_bright)
"""cv2.imshow("imagiu", mask)
cv2.waitKey()"""
return mask
def brightnessFiltering(img):
#this function filters out the darker pixels
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_bright = numpy.array([0,15,220])
#0,0,220
upper_bright = numpy.array([150,150,255])
#110,5,255
mask = cv2.inRange(hsv, lower_bright, upper_bright)
return mask
def hsv_threshold(img, hue_min, hue_max, sat_min, sat_max, val_min, val_max):
"""
Threshold an HSV image given separate min/max values for each channel.
:param img: an hsv image
:param hue_min:
:param hue_max:
:param sat_min:
:param sat_max:
:param val_min:
:param val_max:
:return: result of the threshold (each binary channel AND'ed together)
"""
hue, sat, val = cv2.split(img)
hue_bin = np.zeros(hue.shape, dtype=np.uint8)
sat_bin = np.zeros(sat.shape, dtype=np.uint8)
val_bin = np.zeros(val.shape, dtype=np.uint8)
cv2.inRange(hue, hue_min, hue_max, hue_bin)
cv2.inRange(sat, sat_min, sat_max, sat_bin)
cv2.inRange(val, val_min, val_max, val_bin)
bin = np.copy(hue_bin)
cv2.bitwise_and(sat_bin, bin, bin)
cv2.bitwise_and(val_bin, bin, bin)
return bin
def repaint_skin(filename):
import cv2
shutil.copy(filename, filename + '.bak')
frame = cv2.imread(filename)
HSV = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
l = np.array([0, 50, 80], dtype = "uint8")
u = np.array([23, 255, 255], dtype = "uint8")
skin_area = cv2.inRange(HSV, l, u)
not_skin_area = cv2.bitwise_not(frame, frame, mask = skin_area)
cv2.imwrite(filename, not_skin_area)
def bin_thresholding(image, image_lower=0, image_upper=256):
binary_img = cv2.inRange(image, np.asarray(image_lower),
np.asarray(image_upper))
return binary_img
def solidRedFilter(self):
# find all the 'red' shapes in the image
lower = np.array([0, 0, 0])
upper = np.array([15, 15, 15])
self.img = cv2.inRange(self.img, lower, upper)
title = self.tgen.next('solidRedFilter')
if self.show: ImageViewer(self.img).show(window=title, destroy = self.destroy, info = self.info, thumbnailfn = title)
def filter_smooth_thres(self, RANGE, color):
for (lower, upper) in RANGE:
lower = np.array(lower, dtype='uint8')
upper = np.array(upper, dtype='uint8')
mask_bottom = cv2.inRange(self.img_roi_bottom_hsv, lower, upper)
mask_top = cv2.inRange(self.img_roi_top_hsv, lower, upper)
blurred_bottom = cv2.medianBlur(mask_bottom, 5)
blurred_top = cv2.medianBlur(mask_top, 5)
# Morphological transformation
kernel = np.ones((2, 2), np.uint8)
smoothen_bottom = blurred_bottom #cv2.morphologyEx(blurred, cv2.MORPH_OPEN, kernel, iterations=5)
smoothen_top = blurred_top # cv2.morphologyEx(blurred, cv2.MORPH_OPEN, kernel, iterations=5)
"""
if self.debug:
cv2.imshow('mask bottom ' + color, mask_bottom)
cv2.imshow('blurred bottom' + color, blurred_bottom)
cv2.imshow('mask top ' + color, mask_top)
cv2.imshow('blurred top' + color, blurred_top)
"""
return smoothen_bottom, smoothen_top
# Gets metadata from our contours
def test_features():
from atx.drivers.android_minicap import AndroidDeviceMinicap
cv2.namedWindow("preview")
d = AndroidDeviceMinicap()
# r, h, c, w = 200, 100, 200, 100
# track_window = (c, r, w, h)
# oldimg = cv2.imread('base1.png')
# roi = oldimg[r:r+h, c:c+w]
# hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
# mask = cv2.inRange(hsv_roi, 0, 255)
# roi_hist = cv2.calcHist([hsv_roi], [0], mask, [180], [0,180])
# cv2.normalize(roi_hist, roi_hist, 0, 255, cv2.NORM_MINMAX)
# term_cirt = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1)
while True:
try:
w, h = d._screen.shape[:2]
img = cv2.resize(d._screen, (h/2, w/2))
cv2.imshow('preview', img)
hist = cv2.calcHist([img], [0], None, [256], [0,256])
plt.plot(plt.hist(hist.ravel(), 256))
plt.show()
# if img.shape == oldimg.shape:
# # hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# # ret, track_window = cv2.meanShift(hsv, track_window, term_cirt)
# # x, y, w, h = track_window
# cv2.rectangle(img, (x, y), (x+w, y+h), 255, 2)
# cv2.imshow('preview', img)
# # cv2.imshow('preview', img)
cv2.waitKey(1)
except KeyboardInterrupt:
break
cv2.destroyWindow('preview')
ColoredObjectDetector.py 文件源码
项目:robot-camera-platform
作者: danionescu0
项目源码
文件源码
阅读 23
收藏 0
点赞 0
评论 0
def find(self, image):
hsv_frame = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv_frame, self.__hsv_bounds[0], self.__hsv_bounds[1])
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
contours = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)[-2]
if len(contours) == 0:
return (False, False)
largest_contour = max(contours, key=cv2.contourArea)
((x, y), radius) = cv2.minEnclosingCircle(largest_contour)
M = cv2.moments(largest_contour)
center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))
return (center, radius)
def throttle_ocr(image,coords):
img = image[coords[1]:coords[3],coords[0]:coords[2]]
# lower and upper ranges for green pixels, format BGR
lower = np.array([0,110,0])
upper = np.array([90,200,90])
res = cv2.inRange(img,lower,upper)
count = np.count_nonzero(res)
return count
def brake_ocr(image,coords):
img = image[coords[1]:coords[3],coords[0]:coords[2]]
# lower and upper ranges for red pixels, format BGR
lower = np.array([0,0,100])
upper = np.array([50,50,200])
res = cv2.inRange(img,lower,upper)
count = np.count_nonzero(res)
return count
def mask_image(lower_mask, upper_mask, img, apply_mask=False):
"""" Masks an image according to the upper and lower bounds
Parameters
----------
lower_mask : ndarray
lower mask to apply to image, length must match image channels
upper_mask : ndarray
upper mask to apply to image, length must match image channels
img : ndarray
image to apply mask to
apply_mask : bool
returns the masked image instead of the mask itself
"""
shape = np.array(img.shape).flatten()
if len(np.array(img.shape).flatten()) == 3:
shape_size = shape[-1]
else:
shape_size = 1
assert (len(lower_mask) == shape_size)
assert (len(upper_mask) == shape_size)
color_min = np.array(lower_mask, np.uint8)
color_max = np.array(upper_mask, np.uint8)
new_img = cv2.inRange(img, color_min, color_max)
if apply_mask:
return cv2.bitwise_and(img, img, mask=new_img)
return new_img
def check_if_battle(self, img):
img = np.array(img)
img = img[750:800, 0:400]
blue_min = np.array([250, 250, 250], np.uint8)
blue_max = np.array([255, 255, 255], np.uint8)
amount = cv2.inRange(img, blue_min, blue_max)
if cv2.countNonZero(amount) > (50 * 200):
return True
return False
def test_features():
from atx.drivers.android_minicap import AndroidDeviceMinicap
cv2.namedWindow("preview")
d = AndroidDeviceMinicap()
# r, h, c, w = 200, 100, 200, 100
# track_window = (c, r, w, h)
# oldimg = cv2.imread('base1.png')
# roi = oldimg[r:r+h, c:c+w]
# hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
# mask = cv2.inRange(hsv_roi, 0, 255)
# roi_hist = cv2.calcHist([hsv_roi], [0], mask, [180], [0,180])
# cv2.normalize(roi_hist, roi_hist, 0, 255, cv2.NORM_MINMAX)
# term_cirt = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1)
while True:
try:
w, h = d._screen.shape[:2]
img = cv2.resize(d._screen, (h/2, w/2))
cv2.imshow('preview', img)
hist = cv2.calcHist([img], [0], None, [256], [0,256])
plt.plot(plt.hist(hist.ravel(), 256))
plt.show()
# if img.shape == oldimg.shape:
# # hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# # ret, track_window = cv2.meanShift(hsv, track_window, term_cirt)
# # x, y, w, h = track_window
# cv2.rectangle(img, (x, y), (x+w, y+h), 255, 2)
# cv2.imshow('preview', img)
# # cv2.imshow('preview', img)
cv2.waitKey(1)
except KeyboardInterrupt:
break
cv2.destroyWindow('preview')
def mask_image(self):
"""Converts image to HSV mode and
filters color using values defined in sliders"""
hsv_im = cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV)
min_target_color = self.get_hsv_color('min')
max_target_color = self.get_hsv_color('max')
self.mask = cv2.inRange(hsv_im,
min_target_color,
max_target_color)