//从文件夹中一张张传入图片,统计每张图片中白色像素点占比。累加和除以图片个数,算出平均值 #include <stdio.h> #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/core/core.hpp" #include <opencv\ml.h> #include <iostream> #include "cv.h" #include "highgui.h" #include <vector> #include <math.h> #include <string.h> #include <fstream> using namespace std; using namespace cv; char filename[1000]; char windowname[1000]; int n = 0;//n是所有像素点 int counter = 0;//白色像素点 //计算一张图片的像素点 int bSums(Mat src) { int black = 0;//黑色像素点 //迭代器访问像素点 Mat_<uchar>::iterator it = src.begin<uchar>(); Mat_<uchar>::iterator itend = src.end<uchar>(); for (; it != itend; ++it) { n++; if ((*it) > 0) { counter += 1;//二值化后,像素点是0或者255 } else { black += 1; } } //白色像素点百分比 double biliB = counter * 1.0 / n * 1.0 * 100 * 1.0; //黑色像素点百分比 //double biliH = black * 1.0 / n * 1.0 * 100 * 1.0; //cout << "counter:" << counter << endl; //cout << "black:" << black << endl; //cout << "n:" << n << endl; //cout << "biliB:" << biliB << endl; //cout << "biliH:" << biliH << endl; return biliB; } int main(int argc, char *argv[]) { double sum = 0; double sumB = 0; int i; //循环传入图片 for (i = 1; i <= 999; i++) { //文件夹中照片的名字必须从1开始 sprintf_s(filename, "D://OK//%d.jpg", i); //sprintf(windowname, "window%d.jpg", i); Mat pScr = imread(filename, 1); //cvNamedWindow(windowname, CV_WINDOW_AUTOSIZE); //cvShowImage(windowname, pScr); Mat a1; cvtColor(pScr, a1, COLOR_BGR2GRAY);//转灰度图 Mat a2; threshold(a1, a2, 0, 255, THRESH_BINARY | THRESH_OTSU);//二值化 double B = bSums(a2);//调用函数bSums计算每张图片的白色像素点百分比 sumB += counter; sum += B;//累加所有图片的白色像素点百分比 } double per = sum * 1.0/ i *1.0;//除以图片个数,算出所有图片白色像素点百分比的平均值 cout << "i: " << i << endl; cout << "sum: " << sum << endl; cout << "sumB: " << sumB << endl; cout << "per: " << per << endl; waitKey(); system("pause"); return 0; }
相关推荐
报告、python文件
编写一个程序,对用户由命令行参数传入的一个名称进行判断。如果是一个文件名,则输出该文件相关属性 ( 文件名、路径、绝对路径、是否可读、是否可写和文件的长度等 ) 。如果是一个目录,则输出该目录下的文件及子...
使用ShellExecuteEx调用控制台程序(exe)并传入多个参数
传入图片网址$_GET["pic1"]到$_GET["pic6"];运行合并
使用ShellExecuteEx调用控制台程序(exe)并传入多个参数
根据url和图片左上右下两点坐标裁剪图片并返回base64格式字符串,java工具类,适用于人脸识别
本组件是一个基于 vue 编写的vue图片预览组件,支持单图和多图预览,仅传入一个图片地址,即可实现图片预览效果,比较适合给文章及页面的所有图片添加预览效果,预览背景色,关闭按钮颜色,控制条的背景也和字体颜色...
OpenGL 几何着色器 传入点,绘制三角形.rar ) http://blog.csdn.net/yulinxx/article/details/59538755
2 支持了7个以上图片 并可翻页浏览 每页7个 大图的next还是下一个图片 3 自动播放支持到本页最后一个图片后自动翻页 如果到最后一页的最后一个图片 会返回第一页的第一个图片 4 支持鼠标移入大图停止自动播放 移出...
编写c语言小程序,使传入一个字符串按反序存放,在主函数中输入和输出字符串。
将图片格式转换为二进制数组,从而传入数据库,再由数据库取出。由于示例,小BUG比较多。多担待。
前端 js 将图片转换为base64 后,传入 后端并且将图片存入指定目录,还有涉及图片转为base64后值太大而导致后端接收为null的解决方案
编写一个函数,由实参传入一串字符,统计这串字符中字母、数字、空格、和其他 字符的个数,在主函数中输入字符串以及输出上述结果。
DES加密 VC2005工程 实现对称加密,实现了的函数有:传入字符串和传入文件。
Qt QListWidget传入多张图片,...但是需要我们对数据建模有一定的了解,而QListWidget是一个升级版本的QListView,它已经为我们建立了一个数据存储模型QListWidgetItem,操作方便,直接调用addItem即可添加Item项。
定义一个方法传入一个 int 类型数组,输出这个数组中每一个数字及其出现的个数 例如 传入数组[1,2,2,2,3,3,4,4,4,4] 打印结果: 数字 1 出现了 1 次 数字 2 出现了 3 次…
Java实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数
mfc使用回调函数(系统api)并传入对象指针 mfc使用回调函数(系统api)并传入对象指针 mfc使用回调函数(系统api)并传入对象指针 mfc使用回调函数(系统api)并传入对象指针 mfc使用回调函数(系统api)并传入对象...
fastreport.net web 动态传入数据,与数据库无关
图片可以看作是很多像素点组成的,每个像素点都是一个RGB颜色,(red, green, blue), 那么合成两张照片就有办法了,我们可以在一张新的RGB色的图片里一个像素点取图片一的对应位置的像素,下一个像素点取图片二的像素...