ceph已有image怎么更改feature
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ceph已有image怎么更改feature相关的知识,希望对你有一定的参考价值。
参考技术A 1.首先使用rbd -p <pool-name> info <image-name>来查看你当前image的features2.使用rbd feature enable exclusive-lock -p <pool-name> --image <image-name>可以修改feature,其中deep-flatten无法修改,只能创建image的时候增加该feature。
"features_name": [
"deep-flatten",
"exclusive-lock",
"fast-diff",
"layering",
"object-map" 参考技术B Ceph 是一个将数据存储在单一分布式计算机集群上的开源软件平台。当你计划构建一个云时,你首先需要决定如何实现你的存储。开源的 Ceph 是红帽原生技术之一,它基于称为 RADOS 的对象存储系统,用一组网关 API 表示块、文件、和对象模式中的数据。由于它自身开源的特性,这种便携存储平台能在公有云和私有云上安装和使用。Ceph 集群的拓扑结构是按照备份和信息分布设计的,这种内在设计能提供数据完整性。它的设计目标就是容错、通过正确配置能运行于商业硬件和一些更高级的系统。Ceph 能在任何 Linux 发行版上安装,但为了能正确运行,它需要最近的内核以及其它最新的库。在这篇指南中,我们会使用最小化安装的 CentOS-7.0。
Contour Features 边界特征
查找轮廓 findContours
1 cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) → image, contours, hierarchy
参数解释
-
image:原图像,可以事先由compare()、inRange()、threshold()等得到binary的image图像
-
mode:轮廓检索模式
-
method:轮廓近似方法
mode参数可取值为
-
CV_RETR_EXTERNAL 仅检索外部轮廓。
-
CV_RETR_LIST 检索所有轮廓但是不建立层次关系。
-
CV_RETR_CCOMP 检索所有轮廓并建立两级层次结构。
-
CV_RETR_TREE 检索所有轮廓并建立嵌套轮廓层次结构。
method参数可取
-
CV_CHAIN_APPROX_NONE 存储所有轮廓点。
-
CV_CHAIN_APPROX_SIMPLE 压缩水平、垂直和对角线,仅留下其端点。
-
CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS 应用了Teh-Chin链式近似算法的一种风格
计算图像的轮廓面积 cv2.contourArea()
1 cv2.contourArea(contour[, oriented]) → retval
计算图像的矩 cv2.moments()
1 cv2.moments(array[, binaryImage]) → retval
具体见代码
1 import cv2 2 import numpy as np 3 4 img = cv2.imread(‘star.jpg‘,0) 5 ret,thresh = cv2.threshold(img,127,255,0) 6 contours,hierarchy = cv2.findContours(thresh, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) 7 8 cnt = contours[0] 9 M = cv2.moments(cnt) 10 print(cv2.contourArea(cnt)) 11 print(M) 12 13 #得到{‘m00‘: 0.5, ‘m10‘: 53.83333333333333, ‘m01‘: 367.3333333333333, ‘m20‘: 5796.083333333333, ‘m11‘: 39549.541666666664, ‘m02‘: 269867.5833333333, ‘m30‘: 624050.9500000001, ‘m21‘: 4258186.233333333, ‘m12‘: 29055722.733333334, ‘m03‘: 198262758.70000002, ‘mu20‘: 0.027777777778283053, ‘mu11‘: -0.01388888888322981, ‘mu02‘: 0.027777777810115367, ‘mu30‘: -0.003703703638166189, ‘mu21‘: 0.0018518519221615293, ‘mu12‘: 0.001851847569924292, ‘mu03‘: -0.0037037134170532227, ‘nu20‘: 0.11111111111313221, ‘nu11‘: -0.05555555553291924, ‘nu02‘: 0.11111111124046147, ‘nu30‘: -0.020951311664420796, ‘nu21‘: 0.01047565641531008, ‘nu12‘: 0.010475631795338369, ‘nu03‘: -0.020951366982159467} 14 15 #我们利用这个可以得到重心 16 cx = int(M[‘m10‘]/M[‘m00‘]) 17 cy = int(M[‘m01‘]/M[‘m00‘]) 18 #contourArea的结果和m00的结果一致 19
轮廓周长计算 cv2.arcLength()
1 perimeter = cv2.arcLength(cnt,True)
-
第一个参数是contour
-
第二个参数指定形状是不是闭合轮廓,true就是闭合的,否则是曲线
轮廓近似
1 cv2.approxPolyDP(curve, epsilon, closed[, approxCurve]) → approxCurve
参数解释
-
curve:输入的2D点,比如findContours得到的contour
-
epsilon:精度
-
closed:是否闭合,跟之前说的一样
输出的是近似之后的Contour
轮廓线拟合
1 cv2.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) → img
参数解释
-
img:输入图像
-
pts:要拟合的轮廓的集合,例如[contours[1],contours[2]]
-
isClosed:是否闭合,跟之前说的一样
-
color:颜色,例如(0,0,255)
-
thickness:厚度,1 2 3等等
-
linetype:线的类型
-
shift:定点坐标中小数位数
1 import cv2 as cv 2 import numpy as np 3 img = cv.imread("test.jpg",0) 4 _,contours,_ = cv.findContours(img,2,1) 5 cnt = contours[0] 6 epsilon = 0.01 * cv.arcLength(cnt,True)#这里用arcLength得到轮廓周长或者曲线长度 7 approx = cv.approxPolyDP(cnt,epsilon,True) 8 out_img = cv.polylines(img,[approx],True,(0,0,255),2) 9 cv.imshow("image",out_img) 10 k = cv.waitKey(1) & 0xFF 11 if k== 27: 12 cv.destroyAllWindows()
凸包检测
1 cv2.convexHull(points[, hull[, clockwise[, returnPoints]]]) → hull
参数解释
-
points:输入的2D点集,如findContours得到的contour
-
hull:输出凸包
-
clockwise:如果是True,则输出凸包顺序为顺时针方向,否则为逆时针方向
函数返回的是凸包(点集)
1 import cv2 as cv 2 import numpy as np 3 img = cv.imread("test.jpg",0) 4 _,contours,_ = cv.findContours(img,2,1) 5 cnt = contours[1] 6 hull = cv.convexHull(cnt) 7 out_img = cv.polylines(img,[hull],True,(0,255,255),2) 8 cv.imshow("image",out_img) 9 cv.waitKey(0)
边界矩形
得到直边界矩形
1 cv2.boundingRect(points) → retval
参数解释
-
points:给出的需要确定边界的点集,例如contour
函数返回的是得到的边界矩形的四个顶点坐标
得到旋转矩形
1 cv2.minAreaRect(points) → retval
参数说明:
-
points :是findCountours得到的contour
使用
import cv2 as cv import numpy as np img = cv.imread("test.jpg",0) _,contours,_ = cv.findContours(img,cv.RETR_LIST,cv.CHAIN_APPROX_SIMPLE) cnt = contours[0] rect_vertical = cv.boundingRect(cnt) rect = cv.minAreaRect(cnt)#这里得到的是旋转矩形 box = cv.cv.BoxPoints(rect)#得到端点 box = np.int0(box)#向下取整
最小封闭圆
1 cv2.minEnclosingCircle(points) → center, radius
参数解释
-
points:输入点集,如contour
输出为圆中心点坐标和半径
椭圆拟合
1 cv2.fitEllipse(points) → retval
参数解释
-
points:输入点集,如contour
输出为椭圆,其属性有中心点坐标、两轴长、偏转角度
使用
1 import cv2 as cv 2 import numpy as np 3 img = cv.imread("test.jpg",0) 4 _,contours,_ = cv.findContours(img,cv.RETR_LIST,cv.CHAIN_APPROX_SIMPLE) 5 cnt = contours[0] 6 circle = cv.minEnclosingCircle(cnt) 7 ellipse = cv.fitEllipse(cnt) 8 out_1 = cv.circle(img,circle,(0,255,255),2) 9 out_2 =cv.ellipse(img,ellipse,(0,255,255),2) 10 cv.imshow("img1",out_1) 11 cv.imshow("img2",out_2) 12 cv.waitKey(0)
以上是关于ceph已有image怎么更改feature的主要内容,如果未能解决你的问题,请参考以下文章