====== CV ====== 创建日期 星期三 01 五月 2019 ==== 安装 ==== * pip install opencv-python * pip install opencv-contrib-python * Windows:https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv * Linux: AttributeError: partially initialized module ‘cv2’ has no attribute ‘gapi_wip_gst_GStreamerPipeline’ (most likely due to a circular import) ” . 解决方案 检索的方法里有几个不太适用,尝试了几个后亲测这个方法有效: ''pip install opencv-python install "opencv-python-headless<4.3"'' ==== 生成棋盘格 ==== ''img=255*ones( (900,1440)) for r in range(700): for c in range(800): r_=r//100 c_=c//100 # print(r_,c_) if (r_+c_)%2==0: img[r+100][c+150]=0'' ==== 图像基本操作 ==== ------ cv2.erode(), cv2.dilate(), cv2.morphologyEx() kernel = np.ones((5, 5), np.uint8) erosion = cv2.erode(img, kernel) # 腐蚀 dilation = cv2.dilate(img, kernel) # 膨胀 kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 定义结构元素 img = cv2.imread('j_noise_out.bmp', 0) opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) # 开运算 img = cv2.imread('j_noise_in.bmp', 0) closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) # 闭运算 opencv 图像ROI ============ ### 从中心拖动 import cv2 import numpy as np if name == 'main' : # Read image im = cv2.imread("image.jpg") # Select ROI r = cv2.selectROI(im) # Crop image imCrop = im[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])] # Display cropped image cv2.imshow("Image", imCrop) cv2.waitKey(0) ### 从左上角拖动矩形到右下角 fromCenter = False r = cv2.selectROI(im, fromCenter) ### 使用现有的窗口 fromCenter = False r = cv2.selectROI("Image", im, fromCenter) ### 不显示十字线 现在,假设你不喜欢十字准线,并希望看到没有它的矩形。 您可以修改代码以不显示十字线。 showCrosshair = False fromCenter = False r = cv2.selectROI("Image", im, fromCenter, showCrosshair) ### 选择多个感兴趣区域(roi) selectROI函数还允许您选择多个感兴趣的区域,但似乎有两个错误。 Bug警告1:根据说明,您可以拖动一个矩形,然后按ENTER并拖动另一个矩形。 但是,OpenCV 3.2中的实现似乎存在一个错误。 您必须在第一个矩形后两次按ENTER键。 对于所有后续的矩形,您应该按ENTER一次。 # Note this code does not work. # Specify a vector of rectangles (ROI) rects = [] fromCenter = false # Select multiple rectangles selectROI("Image", im, rects, fromCenter)