📳0. 劫图之后
😲 :大仙,大仙,劫图之后没什么用处啊,如何把光斑摘下来?
🐍 :私,私,私 ,Threshhold 啦!
😄 :大仙显灵啦,小的们,快给我抓这个什么猴?
😎 :是!大哥,打开 PyCharm,接上 OpenCV,然后…呢,大哥?
😶 :笨,我来,当然是设计窗口了,用码字调试,天都黑了。
1. GUI 设计
OpenCV 有很简单的 GUI 设计,叫 HighGUI,如果要增加设计量,你要重新用 OpenCV 的源码, 选 Python 的 Qt 项来 Build。
🤫:那太费时间了,估计他们之间可能有什么牙齿印,要不 OpenCV 这么长时间都没有直接用 Qt ,非要我们去 compile。八卦完了,我们继续。
🖼🖼🖼: 三个窗口
-
Controls 窗:调节 Threshold 阈(读遇,俺没写过。)值 的高低。结果显示在右边那个 Blob detection 窗 。
-
Blob Detection 窗:找泡泡的地方。
-
Map LED Locations 窗:显示 LED 的位置。
✒️2. 打🐴:测老鼠。
🔌 开头
import cv2 as cv
from imutils import contours
from skimage import measure
import numpy as np
import glob
import imutils
import random as rng
# random seed
rng.seed(12345)
📚读画
# =====================================
# main
# =====================================
# BGR color
red = (0, 0, 255)
green = (0, 255, 0)
# file io
sample1 = ".\\image\\*.jpg"
jpg_list = glob.glob(sample1)
# map image
map_file = jpg_list[0]
map_img = cv.imread(map_file)
update_map = True
# images for detection
del jpg_list[0]
count = 0
final_view = map_img.copy()
maxLeds = len(jpg_list)
foundLed = []
main 以下: 增加固定图,主图是 0 号,读取后,在图的队列删除。
…
🌍 Map 窗:定光洞
# =====================================
# Map Window
# =====================================
map_window = "Map LED Locations"
cv.namedWindow(map_window)
cv.moveWindow(map_window, 156, 210)
# show map image
cv.imshow(map_window, map_img)
# mouse setting: scan region
drawing = False
ix, iy = -1, -1
alpha = 0.5
isSetScanArea = False
point = (0, 0)
scanArea = [] # point array
cv.setMouseCallback(map_window, mouse_drawing)
增加老鼠的参数,用来选择检测区域。
main 上面:
# set detection region by mouse
def mouse_drawing(event, x, y, flags, params):
global scanArea, drawing, ix, iy, alpha, green, isSetScanArea
overlay = map_img.copy()
output = map_img.copy()
if event == cv.EVENT_LBUTT