Python Forum

Full Version: Saving a mask as a png file in opencv
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi. I am trying to save as png file the mask generated by python when I run the object detection with HSV Color Space in opencv. I used cv2.imwriting function but it doesn't work. Is there another alternative to do this? I want to save the mask as I want later on to do pixel count on it based on colour. This is the code:

import cv2

import numpy as np

def nothing(x):
    pass

cv2.namedWindow("Tracking")

cv2.createTrackbar("LH", "Tracking", 0, 360, nothing)
cv2.createTrackbar("LS", "Tracking", 0, 1, nothing)
cv2.createTrackbar("LV", "Tracking", 40, 40, nothing)
cv2.createTrackbar("UH", "Tracking", 360, 360, nothing)
cv2.createTrackbar("US", "Tracking", 0, 10, nothing)
cv2.createTrackbar("UV", "Tracking", 110, 110, nothing)

while True:
    frame = cv2.imread('cells.png')

    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    l_h = cv2.getTrackbarPos("LH", "Tracking")
    l_s = cv2.getTrackbarPos("LS", "Tracking")
    l_v = cv2.getTrackbarPos("LV", "Tracking")

    u_h = cv2.getTrackbarPos("UH", "Tracking")
    u_s = cv2.getTrackbarPos("US", "Tracking")
    u_v = cv2.getTrackbarPos("UV", "Tracking")

    l_b = np.array([l_h, l_s, l_v])
    u_b = np.array([u_h, u_s, u_v])

    mask = cv2.inRange(hsv, l_b, u_b)

    res = cv2.bitwise_and(frame, frame, mask=mask)

    cv2.imshow("frame", frame)
    cv2.imshow("mask", mask)
    cv2.imshow("res", res)


    #cv2.imwrite(filename, mask1)
    key = cv2.waitKey(1)
    if key == 27:
        break

cv2.destroyAllWindows()
Thanks. Smile
Why does the imwriting function not work? Are you getting an error message?
You could try and save it as a .jpg just for testing purpose. Do you need it in .png format or lets say image format in generel? If not you can use pickle to save the matrix, that represents the image :)