目录

CV

创建日期 星期三 01 五月 2019

安装

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_=r100 c_=c100 # 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)