Я написал простую кодовую функцию анализа изображений на своем лабораторном компьютере, используя openCV, и она работала хорошо.По некоторым причинам, это не будет работать на моем Mac дома.Изображение всплывает (для использования трекбара) зависает и не отвечает.Есть идеи почему?
Iv'e пытался найти решение этой проблемы, но не смог.
def leaf2score(file_name):
#assign strings for ease of coding
hh='Hue High'
hl='Hue Low'
sh='Saturation High'
sl='Saturation Low'
vh='Value High'
vl='Value Low'
cv2.namedWindow("Tracking") #creating a window named "Tracking"
cv2.createTrackbar(hl, "Tracking", 0, 179, nothing)
cv2.createTrackbar(sl, "Tracking", 0, 179, nothing)
cv2.createTrackbar(vl, "Tracking", 0, 255, nothing)
cv2.createTrackbar(hh, "Tracking", 255, 255, nothing)
cv2.createTrackbar(sh, "Tracking", 255, 255, nothing)
cv2.createTrackbar(vh, "Tracking", 255, 255, nothing)
#assigning the trackbar values to control the masking of the img
while True:
img = cv2.imread(file_name) #reading the image using CV2
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) #transform the img from BGR to HSV
frame=cv2.GaussianBlur(hsv,(5,5),0)
l_h = cv2.getTrackbarPos(hl, "Tracking")
l_s = cv2.getTrackbarPos(sl, "Tracking")
l_v = cv2.getTrackbarPos(vl, "Tracking")
u_h = cv2.getTrackbarPos(hh, "Tracking")
u_s = cv2.getTrackbarPos(sh, "Tracking")
u_v = cv2.getTrackbarPos(vh, "Tracking")
l_green = np.array([l_h, l_s, l_v]) #determining the lower limit for color thresholding (hue, saturation, value)
u_green = np.array([u_h, u_s, u_v]) #determining the upper limit for color thresholding
mask = cv2.inRange(frame, l_green, u_green) #creating a mask for our filtration
res = cv2.bitwise_and(frame, frame, mask=mask) #the RESULT image after applying the mask
cv2.imshow("frame", frame) #showing each of the images throughout the process
cv2.imshow("mask", mask)
cv2.imshow("res", res)
key = cv2.waitKey(1) #close image windows
if key == 27:
break
cv2.destroyAllWindows()
bgr = cv2.cvtColor(res, cv2.COLOR_HSV2BGR) #converting the HSV back to BGR
b,g,r = cv2.split(bgr) #Splitiing the channels of the image
mean_g = cv2.mean(g)
mean_r = cv2.mean(r)
print(mean_g)
print(mean_r)
score = mean_g[0] + mean_r[0] #calculating the score of the color by summing the green & red channels
return (score)