做网站给女朋友,网站页面创意,企业运营管理案例分析,网页制作模板设计设置鼠标回调函数
setMouseCallback(winname, callback, userdata) winname:窗口名字 callback:回调函数 userdata:传回callback中
callback(event, x, y, flags,userdata) event:鼠标事件 x: 鼠标的x坐标 y: 鼠标的y坐标 flags:鼠标键和组合键 userdata:setMouseCallback传回…设置鼠标回调函数
setMouseCallback(winname, callback, userdata) winname:窗口名字 callback:回调函数 userdata:传回callback中
callback(event, x, y, flags,userdata) event:鼠标事件 x: 鼠标的x坐标 y: 鼠标的y坐标 flags:鼠标键和组合键 userdata:setMouseCallback传回的值
import cv2
import numpy as np#鼠标回调函数
def mouse_callback(event, x, y, flags, userdata):print(event, x, y, flags, userdata)#mouse_callback(1, 100, 100, 16, 666)cv2.namedWindow(video, cv2.WINDOW_NORMAL)
cv2.resizeWindow(video, 640, 360)#设置鼠标回调
cv2.setMouseCallback(video, mouse_callback,123)img np.zeros((360, 640, 3), np.uint8)
while True:cv2.imshow(video, img)#cv2.resizeWindow(video, 640, 360)if cv2.waitKey(0) 0xff ord(q):breakcv2.destroyAllWindows()如何使用OpenCV中的TrackBar控件
createTrackbar(trackbarname, winnamevalue, count, callback, userdata) trackbarname:TrackBar控件的名字 winname:窗口的名字 value:trackbar当前值 count:最小值为0 最大值为count callback:回调函数 userdata:传给回调函数的值
getTrackbarPos(trackbarname, winname) trackbarname:TrackBar控件的名字 winname:窗口的名字 输出当前值
import cv2
import numpy as npdef callback():pass#创建窗口
cv2.namedWindow(trackbar, cv2.WINDOW_NORMAL)#创建trackbar
cv2.createTrackbar(R, trackbar, 0, 255, callback)
cv2.createTrackbar(G, trackbar, 0, 255, callback)
cv2.createTrackbar(B, trackbar, 0, 255, callback)img np.zeros((480, 640, 3), np.uint8)
while True:#获取当前trackbar的值r cv2.getTrackbarPos(R, trackbar)g cv2.getTrackbarPos(G, trackbar)b cv2.getTrackbarPos(B, trackbar)img[:] [b, g, r]cv2.imshow(trackbar, img)if cv2.waitKey(10) 0xff ord(q):break
cv2.destroyAllWindows()OpenCV的色彩空间(RGB与BGR)
RGB:人眼的色彩空间,OpenCV默认使用BGR,两者之间的区别就是通道顺序不同 OpenCV色彩空间(HSV与HSL)
HSV: H -- Hue:色相即色彩如红色蓝色 S -- Saturation: 饱和度颜色的纯度 V -- Value: 明度 OpenCV为什么要使用HSV 因为OpenCV可以针对颜色的色相进行判断RGB不好判断。
OpenCV色彩空间转换
YUV 主要用在视频中编解码器一般都会使用yvu作为数据源。对于yvu来说主要包括三种类型 1. YUV4:2:0 2. YUV4:2:2 3. YUV4:4:4 以上都是对于像素的描述例如 YUV4:4:4 代表4个Y数据4个U数据4个V数据。Y代表灰色的录像UV代表颜色。比如以前家用的黑白电视黑白电视用的就是数据 Y有了彩色电视兼容黑白电视就有了YUV。这样彩色电视即可以播放黑白画面也可以播放彩色画面。YUV4:4:4类似RGBRGB是8:8:88个红色 8个绿色 8个蓝色。 YUV4:2:0 是一个标准它比 YUV4:4:4 存储空间节省一半。
import cv2def callback():passcv2.namedWindow(color, cv2.WINDOW_GUI_NORMAL)
color_list [cv2.COLOR_BGR2RGBA,cv2.COLOR_BGR2BGRA,cv2.COLOR_BGR2GRAY,cv2.COLOR_HSV2BGR_FULL,cv2.COLOR_BGR2YUV]len len(color_list)
img cv2.imread(./img/cat.jpg)
cv2.createTrackbar(curcolor, color, 0, 4, callback)while True:v cv2.getTrackbarPos(curcolor, color)#颜色空间转换APIcvt_img cv2.cvtColor(img, color_list[v])cv2.imshow(color, cvt_img)if cv2.waitKey(1) 0xff ord(q):break
cv2.destroyAllWindows()