关于opencv编程get到两个小技巧
来源:互联网 发布:java经典实例 第三版 编辑:程序博客网 时间:2024/06/01 22:48
今天看代码,get到两个小技巧,因为最近写程序也在用,所以很开森
1.读按一定规则命名的图像序列
以前是这样子读的:
int i;//图像命名规则是frame*.png,*代表编号,0,1,2....string path = "E:\\images\\frame";char str[5];Mat image;for(i=0;i<100;i++){sprintf(str,"%d",i);path += str;path += ".png";image = imread(path);}
今天学到了这样读:
int i;char filePath[200];char basePath[100] = "E:\\images\\frame";Mat image;for(i=0;i<200;i++){sprintf(filePath,"%s%d.png",basePath,i);image = imread(filePath);}
感觉是简便多了,主要还是没理解sprintf函数的精髓啊
2.在二值图像中,如果背景是白色,图案是黑色,要取出黑色区域的边框
tip1:
Rect calcRoi(Mat &image){int minx,maxx,miny,maxy;int width = image.cols;int height = image.rows;int i;//找到边框的左边界for(i=0;i<width;i++){Mat colImg = image.col(i);int num = countNonZero(colImg);if(num < height){minx = i;break;}}//寻找右边界for(i=width-1;i>=0;i--){Mat colImg = image.col(i);int num = countNonZero(colImg);if(num < height){maxx = i;break;}}//上边界for(i=0;i<height;i++){Mat rowImg = image.row(i);int num = countNonZero(rowImg);if(num < width){miny = i;break;}}//下边界for(i=height-1;i>=0;i--){Mat rowImg = image.row(i);int num = countNonZero(rowImg);if(num < width){maxy = i;break;}}Rect roiRect = Rect(minx,miny,maxx-minx,maxy-miny);return roiRect;}
tip2:
Mat image = imread("test.png",0);int left,right,top,bottom;left = image.cols;right = 0;top = image.rows;bottom = 0;int i,j;for(i=0;i<image.rows;i++){for(j=0;j<image.cols;j++){if(image.at<uchar>(i,j) > 0){if(j < left) left = j;if(j>right) right = j;if(i < top) top = i;if(i > bottom) bottom = i;}}}Rect roi(left,top,right-left,bottom-top);rectangle(image,roi,Scalar(255),1);imshow("image",image);waitKey(0);
效果图:
0 0
- 关于opencv编程get到两个小技巧
- 面试小技巧 get
- SybaseASE中关于触发器使用的两个小技巧
- flex 关于布局控制的两个小技巧
- opencv实用小技巧
- OpenCV小技巧
- opencv使用小技巧
- 两个JSP小技巧
- C++两个小技巧
- Jsp两个小技巧
- tar 两个小技巧
- 两个sed小技巧
- opencv编程入门技巧
- 关于cocos2d-x编程的一些小技巧
- OpenCV的几个小技巧
- OpenCV的几个小技巧
- CSS的两个小技巧
- CSS的两个小技巧
- 重拾java基础(七):匿名对象总结
- POST从入门到精通3[JavaScript上篇](在线观看)
- 每天10个前端知识点:数组应用
- 删除已排序数组中的重复数据
- QT学习笔记08QtCreator常见快捷键
- 关于opencv编程get到两个小技巧
- Android多渠道打包详解
- STM32F1系列——固件库函数使用手册摘要(慢更新)
- 在checkebok选项中进行批量删除
- QT学习笔记09QT编程规范
- 【LeetCode】41. First Missing Positive
- 10分钟带你光速入门运维工具之-Puppe
- 敏捷合同VS传统合同
- JavaScript DOM操作