ceph已有image怎么更改feature

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ceph已有image怎么更改feature相关的知识,希望对你有一定的参考价值。

参考技术A 1.首先使用rbd -p <pool-name> info <image-name>来查看你当前image的features
2.使用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参数可取值为
  1. CV_RETR_EXTERNAL 仅检索外部轮廓。
  2. CV_RETR_LIST 检索所有轮廓但是不建立层次关系。
  3. CV_RETR_CCOMP 检索所有轮廓并建立两级层次结构。
  4. CV_RETR_TREE 检索所有轮廓并建立嵌套轮廓层次结构。
method参数可取
 
  1. CV_CHAIN_APPROX_NONE 存储所有轮廓点。
  2. CV_CHAIN_APPROX_SIMPLE 压缩水平、垂直和对角线,仅留下其端点。
  3. 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的主要内容,如果未能解决你的问题,请参考以下文章

更改页面上已有图像的加载顺序

ceph之image(转)

删除 Ceph 集群异常客户端 watcher

linux 怎么修改已有用户的所属组

ceph对接openstack

Ceph 知识摘录(块存储操作-1)