====== 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)