@TOC
筹备工作python配置numpy和openCv库
读取图像和视频图像cv2.imread(门路)cv2.imshow(窗口名称,输入对象)cv2.waitkey(等待时间)import cv2img = cv2.imread("./Resources/3-1P316104441.jpg")//以后我的项目目录下cv2.imshow("output", img)cv2.waitKey(0)视频cv2.VideoCapture(门路或数字)set()(1) set(3,数字)设置显示区域宽(2) set(4,数字)设置显示区域高(3) set(10,数字)设置亮度
read()cv2.imshowimport cv2cap = cv2.VideoCapture("./Resources/Ninja Track.mp4")while True: #success是bool值,用于判断是否读取胜利 success, img = cap.read() cv2.imshow("video", img) if cv2.waitKey(1) & 0xFF == ord('q'): break根底性能图像cv2.cvtColor(对象,cv2.COLOR_BGR2GRAY) 转换为灰度图像cv2.GaussianBlur(对象,(奇数,奇数),0)设置含糊,值越大,含糊水平越大cv2.Canny(对象,数字,数字)设置Canny边缘检测器,数字越大,显示的越少cv2.dilate(边缘对象,矩阵,iteration=数字) 图像收缩,即:减少图像边缘厚度cv2.erode(对象,矩阵而过,iteration=数字)图像侵蚀,即:缩小图像边缘厚度裁剪图像扭转图像大小对象.shape用于显示图片大小print(img.shape)#先显示高度,再显示宽度cv2.resize(对象,(宽度,高度))扭转图片大小imgResize = cv2.resize(img, (200,300))#先定义宽度,在定义高度裁剪图像对象[数字:数字,数字:数字]先高度后宽度
imgCropped = img[0:100,200:300]#先高度后宽度绘制图形和文本创立简略图像numpy.zeros((512,512)) 建设矩阵,0示意彩色为图像增加色彩通道numpy.zeros((数字,数字,3),numpy.unint8)增加色彩三个色彩通道,色彩值为0~255为图像上色对象[数字:数字,数字:数字]=rgb值
img[200:300,:]=255,0,0绘制线条cv2.line(对象,(终点坐标),(起点坐标),(rgb色彩值),厚度)
cv2.line(img,(0,0),(300,300),(0,255,0),3)绘制矩形cv2.rectangle(对象,(终点坐标),(起点坐标),(rgb色彩值),厚度)
cv2.rectangle(img,(0,0),(100,100),(0,0,255),3)cv2.rectangle(img,(0,0),(100,100),(0,0,255),cv2.FILLED)填充图形绘制圆cv2.circle(对象,(圆心坐标),半径,(rgb色彩值),厚度)
cv2.circle(img,(100,100),30,(255,255,0),2)显示文字cv2.putText(对象,“文本内容",(起始坐标),字体款式,缩放比例,(rgb色彩值),厚度)
cv2.putText(img,"good",(200,200),cv2.FONT_HERSHEY_COMPLEX,1,(0,150,0),1)视角转换设置待转换坐标numpy.float32([[坐标1],[坐标2],[坐标3],[坐标4]])
pts1 = np.float32([[111,219],[287,188],[154,482],[352,440]])设置转换后坐标numpy,float32([[0,0],[width,0],[0,height],[width,height]])透视图转换cv2.getPrespectiveTransform(待转换坐标,转换后坐标)转换后图像cv2.warpPerspective(对象,透视图转换,(width,height))img = cv2.imread("Resources/puke_zhipai-003.jpg")width,height=250,250pts1 = np.float32([[111,219],[287,188],[154,482],[352,440]])pts2 = np.float32([[0,0],[width,0],[0,height],[width,height]])matrix = cv2.getPerspectiveTransform(pts1,pts2)#透视图转换,将世界坐标系变为屏幕坐标系imgoutput = cv2.warpPerspective(img,matrix,(width,height))cv2.imshow("card",imgoutput)cv2.waitKey(0)图像拼接无奈调整图像大小程度拼接numpy.hstack((对象,对象))
hor = np.hstack((img, img))垂直拼接numpy.vstack((img,img))
ver = np.vstack((img,img))可能调整图像大小编写stackImages函数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 verstackImages(缩放比例,程度拼接,垂直拼接)stackImages(0.5,([img,img,img]))stackImages(0.5,([img,img,img],[img,img,img]))色彩检测转换为HSV空间cv2.cvtColor(对象,cv2.COLOR_BGR2HSV)设置色彩调节器定义一个窗口cv2.namedWindow("窗口名")设置窗口大小cv2.resizeWindow("对应窗口名",宽度,高度)创立滑动控制器def empty(): passcv2.namedWindow("TrackBars")cv2.resizeWindow("TrackBars", 640, 240)cv2.createTrackbar("Hue Min", "TrackBars", 0, 179, empty)cv2.createTrackbar("Hue Max", "TrackBars", 179, 179, empty)cv2.createTrackbar("Sat Min", "TrackBars", 0, 255, empty)cv2.createTrackbar("Sat Max", "TrackBars", 255, 255, empty)cv2.createTrackbar("Val Min", "TrackBars", 0, 255, empty)cv2.createTrackbar("Val Max", "TrackBars", 255, 255, empty)将色彩调节器和HSV图像进行关联获取控制器值cv2.getTrackbarPos("控制器名","相应窗口名") 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")设置过滤图像(1)最低阀值
...