一个个传入图片(二值化后)并统计像素点

2023-12-22 08:09

本文主要是介绍一个个传入图片(二值化后)并统计像素点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//从文件夹中一张张传入图片,统计每张图片中白色像素点占比。累加和除以图片个数,算出平均值
#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;
}

 

这篇关于一个个传入图片(二值化后)并统计像素点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/523201

相关文章

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

Java实现数据库图片上传功能详解

《Java实现数据库图片上传功能详解》这篇文章主要为大家详细介绍了如何使用Java实现数据库图片上传功能,包含从数据库拿图片传递前端渲染,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、数据库搭建&nbsChina编程p; 3、后端实现将图片存储进数据库4、后端实现从数据库取出图片给前端5、前端拿到

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

Python脚本实现图片文件批量命名

《Python脚本实现图片文件批量命名》这篇文章主要为大家详细介绍了一个用python第三方库pillow写的批量处理图片命名的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言源码批量处理图片尺寸脚本源码GUI界面源码打包成.exe可执行文件前言本文介绍一个用python第三方库pi

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图