start
This commit is contained in:
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Black">
|
||||||
|
<option name="sdkName" value="Python 3.11" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/PyColors.iml" filepath="$PROJECT_DIR$/.idea/PyColors.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
import cv2
|
||||||
|
import numpy as np
|
||||||
|
import mss
|
||||||
|
import pygetwindow as gw
|
||||||
|
from colorama import Fore, Style, init
|
||||||
|
from pynput import mouse
|
||||||
|
|
||||||
|
# Initialize colorama
|
||||||
|
init()
|
||||||
|
|
||||||
|
# Define a dictionary of color ranges and their names
|
||||||
|
colors = {
|
||||||
|
"red": ([0, 50, 50], [10, 255, 255]),
|
||||||
|
"green": ([36, 50, 50], [89, 255, 255]),
|
||||||
|
"blue": ([90, 50, 50], [128, 255, 255]),
|
||||||
|
"yellow": ([25, 50, 50], [35, 255, 255]),
|
||||||
|
"orange": ([10, 50, 50], [24, 255, 255]),
|
||||||
|
"purple": ([129, 50, 50], [158, 255, 255]),
|
||||||
|
"pink": ([159, 50, 50], [179, 255, 255]),
|
||||||
|
"cyan": ([90, 50, 50], [100, 255, 255])
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to detect the color at the given pixel
|
||||||
|
def detect_color(hsv_frame, x, y):
|
||||||
|
pixel = hsv_frame[y, x]
|
||||||
|
for color_name, (lower, upper) in colors.items():
|
||||||
|
lower = np.array(lower, dtype="uint8")
|
||||||
|
upper = np.array(upper, dtype="uint8")
|
||||||
|
if np.all(lower <= pixel) and np.all(pixel <= upper):
|
||||||
|
return color_name
|
||||||
|
return "unknown"
|
||||||
|
|
||||||
|
# Function to list all windows and let the user select one
|
||||||
|
def select_window():
|
||||||
|
windows = gw.getAllTitles()
|
||||||
|
windows = [w for w in windows if w] # Filter out empty titles
|
||||||
|
print("Available Windows:")
|
||||||
|
for i, window in enumerate(windows):
|
||||||
|
print(f"{i + 1}: {window}")
|
||||||
|
|
||||||
|
choice = int(input("Select the window number: ")) - 1
|
||||||
|
return windows[choice]
|
||||||
|
|
||||||
|
# Mouse position
|
||||||
|
mouse_x, mouse_y = 0, 0
|
||||||
|
|
||||||
|
# Mouse listener callback
|
||||||
|
def on_move(x, y):
|
||||||
|
global mouse_x, mouse_y
|
||||||
|
mouse_x, mouse_y = x, y
|
||||||
|
|
||||||
|
# Start mouse listener
|
||||||
|
listener = mouse.Listener(on_move=on_move)
|
||||||
|
listener.start()
|
||||||
|
|
||||||
|
# Screen capture setup
|
||||||
|
with mss.mss() as sct:
|
||||||
|
# Get the selected window
|
||||||
|
selected_window_title = select_window()
|
||||||
|
selected_window = gw.getWindowsWithTitle(selected_window_title)[0]
|
||||||
|
|
||||||
|
while True:
|
||||||
|
# Capture the selected window
|
||||||
|
monitor = {
|
||||||
|
"top": selected_window.top,
|
||||||
|
"left": selected_window.left,
|
||||||
|
"width": selected_window.width,
|
||||||
|
"height": selected_window.height,
|
||||||
|
"mon": 1
|
||||||
|
}
|
||||||
|
screenshot = sct.grab(monitor)
|
||||||
|
frame = np.array(screenshot)
|
||||||
|
frame = cv2.cvtColor(frame, cv2.COLOR_BGRA2BGR)
|
||||||
|
|
||||||
|
# Convert the frame to HSV
|
||||||
|
hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
|
||||||
|
|
||||||
|
# Adjust mouse coordinates relative to the selected window
|
||||||
|
relative_mouse_x = mouse_x - selected_window.left
|
||||||
|
relative_mouse_y = mouse_y - selected_window.top
|
||||||
|
|
||||||
|
# Check if mouse is within the window bounds
|
||||||
|
if 0 <= relative_mouse_x < monitor["width"] and 0 <= relative_mouse_y < monitor["height"]:
|
||||||
|
# Detect the color at the mouse position
|
||||||
|
color_name = detect_color(hsv_frame, relative_mouse_x, relative_mouse_y)
|
||||||
|
|
||||||
|
# Display the resulting frame
|
||||||
|
cv2.putText(frame, f"Color: {color_name}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)
|
||||||
|
cv2.circle(frame, (relative_mouse_x, relative_mouse_y), 10, (255, 255, 255), -1)
|
||||||
|
cv2.imshow('Color Detection', frame)
|
||||||
|
|
||||||
|
# Print the color name to console with colorama
|
||||||
|
colorama_color = {
|
||||||
|
"red": Fore.RED,
|
||||||
|
"green": Fore.GREEN,
|
||||||
|
"blue": Fore.BLUE,
|
||||||
|
"yellow": Fore.YELLOW,
|
||||||
|
"orange": Fore.LIGHTRED_EX,
|
||||||
|
"purple": Fore.MAGENTA,
|
||||||
|
"pink": Fore.LIGHTMAGENTA_EX,
|
||||||
|
"cyan": Fore.CYAN,
|
||||||
|
"unknown": Fore.WHITE
|
||||||
|
}
|
||||||
|
print(f"Mouse Position: ({relative_mouse_x}, {relative_mouse_y}), Detected color: {colorama_color[color_name]}{color_name}{Style.RESET_ALL}")
|
||||||
|
|
||||||
|
# Break the loop on 'q' key press
|
||||||
|
if cv2.waitKey(1) & 0xFF == ord('q'):
|
||||||
|
break
|
||||||
|
|
||||||
|
# When everything done, release the capture
|
||||||
|
cv2.destroyAllWindows()
|
||||||
|
listener.stop()
|
||||||
Reference in New Issue
Block a user