用户工具

站点工具


cv

这是本文档旧的修订版!


CV

创建日期 星期三 01 五月 2019

图像基本操作


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)
cv.1559215987.txt.gz · 最后更改: 2020/02/01 21:40 (外部编辑)