1.opencv
形态学
img = cv2.imread("dige.png")
cv2.imshow('img',img)
cv2.waitKey(0);
cv2.destroyAllWindows()
kernel = np.ones((3,3),np.uint8)
dog_erosion = cv2.erode(img,kernel,iterations = 1)
'''改变(3,3)的值或者iterations的值腐蚀效果不同.(消除毛刺)'''
dog_dilate = cv2.dilate(dog_erosion,kernel,iterations = 1)
'''改变(3,3)的值或者iterations的值膨胀效果不同.(可以还原腐蚀操作对图片的损害,但是不还原毛刺,如加粗线条)'''
开运算与闭运算
#开:先腐蚀,再膨胀
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
#闭:先膨胀,再腐蚀
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
梯度运算
#梯度 = 膨胀 - 腐蚀
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
礼帽:MORPH_TOPHAT(礼帽 = 原始输入 - 开运算)
黑帽:MORPH_BLACKHAT(黑帽 = 闭运算 - 原始输入)
Sobel算子(cv2.CV_64F:保证计算结果为负数继续保持负数,不被0—255截断。)
converScaleAbs(取绝对值)
Scharr算子(更敏感一些)、laplacian算子
Canny边缘检测 (参数越小越细致。(50,100)比(80,150)细致)
图像金字塔
高斯金字塔:向下采样方法(缩小) down=cv2.pyrDown(img)
高斯金字塔:向上采样方法(放大) up=cv2.pyrUp(img)
拉普拉斯金字塔
图像轮廓
轮廓近似
epsilon:阈值,以该与值为界,处理为近似轮廓
2.蓝桥杯
贪心
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct Item {
int c, w;
};//定义结构体,c代表价值,w代表重量
Item item[1010];
bool cmp(Item a, Item b){
return a.w * b.c > b.w * a.c;
}//排序函数,说白了就是比性价比
int main() {
int N, V;
cin >> N >> V;
for (int i = 1; i <= N; i++) {
cin >> item[i].c >> item[i].w;
}
sort(item + 1, item + N + 1, cmp);//输入后排序
double ans = 0;
for(int i=1; i<=N; i++){
if(V <= item[i].c){
ans += (double)item[i].w / item[i].c * V;//因为上面结构体定义的w是int不是double,前面一定加(double)或1.0 * 。
V = 0;
break;//如果背包容量不够放下所有这种金币,就把背包装满,然后break。
}
else{
ans += item[i].w;
V -= item[i].c;
}//够的话全装进去
}
printf("%.2lf", ans);//保留2位小数输出
return 0;
}
排队取水
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct AC{
int a;//序号
int b;//时间
};
AC f[1005];
bool cmp(const AC i,const AC j){//重要cmp,根据时间排序
if(i.b<j.b)return 1;
else return 0;
}
int main(){
int n;
double ans;
cin>>n;
for(int i=1;i<=n;i++){
cin>>f[i].b;
f[i].a=i;//存入序号
}
sort(f+1,f+1+n,cmp);//直接快排
for(int i=1;i<=n;i++){
printf("%d ",f[i].a);//输出序号
}
printf("\n");//换行
for(int i=1;i<=n;i++){
ans+=f[i].b*(n-i);//计算总值
}
printf("%.2f\n",ans/n);//直接输出平均值
return 0;
}