Effect image
Operation interface diagram:
RGB code:
from tkinter import * from tkinter.filedialog import askopenfilename import cv2 import numpy as np def selectPath(): # path_ = askdirectory() path_ = askopenfilename() path.set(path_) print(path_) def stackImages(scale, imgArray): rows = len(imgArray) cols = len(imgArray[0]) rowsAvailable = isinstance(imgArray[0], list) width = imgArray[0][0].shape[1] height = imgArray[0][0].shape[0] if rowsAvailable: for x in range(0, rows): for y in range(0, cols): if imgArray[x][y].shape[:2] == imgArray[0][0].shape[:2]: imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale) else: imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale) if len(imgArray[x][y].shape) == 2: imgArray[x][y] = cv2.cvtColor(imgArray[x][y], cv2.COLOR_GRAY2BGR) imageBlank = np.zeros((height, width, 3), np.uint8) hor = [imageBlank] * rows hor_con = [imageBlank] * rows for x in range(0, rows): hor[x] = np.hstack(imgArray[x]) ver = np.vstack(hor) else: for x in range(0, rows): if imgArray[x].shape[:2] == imgArray[0].shape[:2]: imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale) else: imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None, scale, scale) if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR) hor = np.hstack(imgArray) ver = hor return ver def empty(a): pass cv2.namedWindow("TrackBars") cv2.resizeWindow("TrackBars",680,240) cv2.createTrackbar("R", "TrackBars", 0,255, empty) cv2.createTrackbar("G", "TrackBars", 0, 255, empty) cv2.createTrackbar("B", "TrackBars", 0, 255, empty) # The maximum and minimum values on the toolbar img = cv2.imdecode(np.fromfile(path_, dtype=np.uint8), 1) while True: b,g,r=cv2. split(img) b1,g1,r1=cv2. split(img) b2,g2,r2=cv2. split(img) # Get the data value according to the character r[:,:] = cv2. getTrackbarPos("R", "TrackBars") g1[:,:] = cv2. getTrackbarPos("G", "TrackBars") b2[:,:]= cv2. getTrackbarPos("B", "TrackBars") cv2.imshow("original", img) rgb=cv2. merge((r,g,b)) cv2.imshow("r_img", rgb) rgb_1 = cv2. merge((r1, g1, b1)) cv2.imshow("g_img", rgb_1) rgb_2 = cv2. merge((r2, g2, b2)) cv2.imshow("b_img", rgb_2) k = cv2.waitKey(1) if k == ord('q'): break cv2.destroyAllWindows() if __name__ == '__main__': root = Tk() path = StringVar() Label(root, text="Image path:").grid(row=0, column=0) Entry(root, textvariable=path).grid(row=0, column=1) Button(root, text="Open Image", command=selectPath).grid(row=0, column=2) Label(root, text="Remarks: Press q to exit image display").grid(row=1, column=0) root. mainloop()
HSV code:
from tkinter import * from tkinter.filedialog import askopenfilename import cv2 import numpy as np def selectPath(): # path_ = askdirectory() path_ = askopenfilename() path.set(path_) print(path_) def stackImages(scale, imgArray): rows = len(imgArray) cols = len(imgArray[0]) rowsAvailable = isinstance(imgArray[0], list) width = imgArray[0][0].shape[1] height = imgArray[0][0].shape[0] if rowsAvailable: for x in range(0, rows): for y in range(0, cols): if imgArray[x][y].shape[:2] == imgArray[0][0].shape[:2]: imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale) else: imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale) if len(imgArray[x][y].shape) == 2: imgArray[x][y] = cv2.cvtColor(imgArray[x][y], cv2.COLOR_GRAY2BGR) imageBlank = np.zeros((height, width, 3), np.uint8) hor = [imageBlank] * rows hor_con = [imageBlank] * rows for x in range(0, rows): hor[x] = np.hstack(imgArray[x]) ver = np.vstack(hor) else: for x in range(0, rows): if imgArray[x].shape[:2] == imgArray[0].shape[:2]: imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale) else: imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None, scale, scale) if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR) hor = np.hstack(imgArray) ver = hor return ver def empty(a): pass cv2.namedWindow("TrackBars") cv2.resizeWindow("TrackBars",680,320) cv2.createTrackbar("Hue min", "TrackBars", 0, 180, empty) cv2.createTrackbar("Hue max", "TrackBars", 50, 180, empty) cv2.createTrackbar("Sat min", "TrackBars", 0, 255, empty) cv2.createTrackbar("Sat max", "TrackBars", 250, 255, empty) cv2. createTrackbar("Val min", "TrackBars", 255, 255, empty) cv2. createTrackbar("Val max", "TrackBars", 255, 255, empty) # The maximum and minimum values on the toolbar img = cv2.imdecode(np.fromfile(path_, dtype=np.uint8), 1) while True: imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # Get the data value according to the character h_min = cv2.getTrackbarPos("Hue min", "TrackBars") h_max = cv2.getTrackbarPos("Hue max", "TrackBars") s_min = cv2.getTrackbarPos("Sat min", "TrackBars") s_max = cv2.getTrackbarPos("Sat max", "TrackBars") v_min = cv2.getTrackbarPos("Val min", "TrackBars") v_max = cv2.getTrackbarPos("Val max", "TrackBars") # print(h_min, h_max, s_min, s_max, v_min, v_max) lower = np.array([h_min, s_min, v_min]) upper = np.array([h_max, s_max, v_max]) mask = cv2.inRange(imgHSV, lower, upper) imgResult = cv2. bitwise_and(img, img, mask=mask) cv2.imshow("original", img) # cv2.imshow("HSV",imgHSV) print(mask. shape, lower, upper) cv2.imwrite("a.jpg",mask) cv2.imshow("Mask", mask) k = cv2.waitKey(1) if k == ord('q'): break cv2.destroyAllWindows() if __name__ == '__main__': root = Tk() path = StringVar() Label(root, text="Image path:").grid(row=0, column=0) Entry(root, textvariable=path).grid(row=0, column=1) Button(root, text="Open Image", command=selectPath).grid(row=0, column=2) Label(root, text="Remarks: Press q to exit image display").grid(row=1, column=0) root. mainloop()
Note:
This code is only for personal collection. If there is any infringement, please contact and delete it.