1.opencv
将边缘检测的结果edged复制过来,对轮廓排序,最大的轮廓为边缘
变换(orig为原始图像的副本,第二个参数是根据比率将resize后的图像还原回去)
rect为原始坐标点,dst为计算后想要变换的坐标点
二值处理让得到的结果更加清晰
2.算法(蓝桥杯)
迷宫
#includeusing namespace std; struct Node { int x,y;//坐标 int f; int num; int w;//方向 }a[2605]; void Set(int k,int x,int y,int f,int num,int w) { a[k].x = x; a[k].y = y; a[k].f = f; a[k].num = num; a[k].w = w; } char mp[55][55]; bool book[55][55]; // 右R 上U 下D 左L int n,m,Next[4][2]={1,0,0,-1,0,1,-1,0}; string ans = "DLRU"; void ShowPath(int k) { if(a[k].f != -1) { ShowPath(a[k].f); cout << ans[a[k].w]; } } int main() { scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) scanf("%s",mp[i]+1); memset(book,false,sizeof book); queue< Node> q; int k=1; Set(k,1,1,-1,k,-1); book[1][1] = true; q.push(a[k++]); int tx,ty; bool flag = false; while(!q.empty()) { Node t = q.front();//队首元素 for(int i=0;i<4;i++) { tx = t.x + Next[i][0]; ty = t.y + Next[i][1]; if(tx < 1 || tx > n || ty < 1 || ty > m) continue;//走出边界 if(mp[tx][ty] == '0' && !book[tx][ty]) {//可以走并且没被走过 book[tx][ty] = true; Set(k,tx,ty,t.num,k,i);//录入位置信息 q.push(a[k++]);//入队 } if(tx == n && ty == m) { flag = true; break; } } if(flag) break; q.pop(); } ShowPath(--k); }
特别数的和
#includeint main() { int sum=0,pog=0; int i,j,n; scanf("%d",&n); for(j=1;j<=n;j++) { pog=0; i=j; while(i!=0)//让i进入判断数字,以防改变j { if(i%10==2||i%10==0||i%10==1||i%10==9) { pog=1;//观测值 } i=i/10; } if(pog==1) { sum+=j; } } printf("%d",sum); return 0; }



