opencv计算指定区域黑白像素占比
如下在我们拿到二值化的图像之后,想要计算红框内黑白像素在该区域的占比。注意单通道的图像无法出现黑白以外的颜色。
上图为我们拿到的红色区域二值化之后的图像。我们通过遍历该区域所有像素来判断。若值为255则白色加一,值为0则黑色像素加一。二值化后,只有黑白两色,因此很好判断。
python的opencv代码:
import cv2
import numpy as npimg=cv2.imread('Resources/tom.jpg')
#缩放rows,cols,channels = img.shapeimg=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape#转换hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([78,43,46])
upper_blue=np.array([124,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)#这一步裁剪指定区域图片。
s = mask[30:200, 50:250] #y,x
#起始x,y坐标,终止x,y坐标,而非加上宽和高
# 和之前用到的cv2.boundingRect()函数定位法不同
cv2.rectangle(img,(50,30),(250,200),(0,0,255),3)
cv2.imshow('res',img)cv2.imshow('ss',s)
#注意这里s已经是单通道,此时不返回通道值。
x,y= s.shapebk = 0
wt = 0
#遍历二值图,为0则bk+1,否则wt+1
for i in range(x):for j in range(y):if s[i,j]==0:bk+=1else:wt+=1
rate1 = wt/(x*y)
rate2 = bk/(x*y)
#round()第二个值为保留几位有效小数。
print("白色占比:", round(rate1*100,2),'%')
print("黑色占比:", round(rate2*100,2),'%')cv2.waitKey(0)
运行结果:
第一个图为计算区域,可以看到黑白占比相加为100%。
我发布的另一篇文章识别答题卡里,我曾提到另一个检测选项是否被填涂的方法——计算轮廓内黑白像素的比值,然后给出阈值过滤筛选。这次就给出了计算方法,感兴趣的可以自行替换一试。
可以直接拿二值图来测试,前半部分二值化的操作可以跳过。
**原文链接: opencv计算指定区域黑白像素占比**
对python爬虫和opencv系列感兴趣的可以关注一下⬇⬇⬇欢迎大家来交流呀~
微信公众号:滑稽研究所
opencv计算指定区域黑白像素占比相关推荐
- OpenCV计算指定区域的黑白像素个数
过程模拟模板匹配过程,可修改成模板匹配方式: 过程:读取一张图片->从图片中选取感兴趣区域(ROI),并保存->把保存下来的区域图片(ROI)读取出来->预处理后计算黑白像素的个数 ...
- 用OpenCV计算图像的亚像素值
原理如图: float subPixelValue(cv::Mat &img, float x, float y) {// boundary checkif (x < 0)x = 0;i ...
- Google Earth Engine (GEE)——如何统计指定区域的像素数量和总量
很多时候我们想统计研究区的像素数量,但是用错了函数,本来用ee.reducer.sum(), ee.reducer.count()混淆使用,我们发现有很多人要统计像素数量,但却统计成了总量,所以我们首 ...
- Python项目实践(一)去除PDF指定区域内的水印
目录 前言 对比图(水印去除前后) 一.原理 二.代码实现 三.使用教程 1. 文件夹目录(pic和res文件夹需提前创建好) 2. 执行第一步代码(注释掉其他代码,以下同理) 3. 执行第二步代码 ...
- python黑白像素面积占比计算(脏污、白点等)
系列文章目录 文章目录 系列文章目录 前言 一.专词解释 二.效果实现 1.源码一 2.源码二 三.效果确认 总结 前言 一.专词解释 1.二值化:图像二值化就是将图像上的像素点的灰度值设置为0或25 ...
- 【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )
文章目录 一.获取图像真实宽高 二.计算解码区域 三.设置解码参数 内存复用 像素格式 四.图像绘制 五.执行效果 六.源码及资源下载 官方文档 API : BitmapRegionDecoder 在 ...
- OpenCV:将一幅图像复制到另一幅图像的指定区域中ROI
用途: 使用一幅图像(或ROI)覆盖(替换)另一图像的指定区域,直接的方法是逐个像素进行复制,但这是一种效率很低的操作,下面介绍opencv中一种效率较高且简便的操作. 函数:roiImg.copyT ...
- OpenCV后投影,利用阈值函数分割指定区域生成掩膜,通过直方图分布查找其他图像相同区域。
一.API函数 void mixChannels(const Mat* src,int nsrc,Mat* dst ,int ndst,const int* fromTo,size_t npairs) ...
- OpenCV图像处理(13)——指定区域截取和指定区域复制
前言: 在令人讨厌的的自动屏保中突然看到一张漂亮的图片(懂就行!),就想赶紧按了键盘上的截屏键,当发现无法去掉上面的文字. 于是乎,图像处理的我就和邱邱一起研究如何将其去掉. 思路: 该图片上的文字和 ...
最新文章
- CSDN线上直播操作测试方案
- 系统服务器异常0,贪婪洞窟云服务器异常0
- Asp.Net生命周期系列三
- 反汇编程序导致程序crash的解决思路
- docker mysql总是退出_docker 安装 mysql
- git介绍和常用操作
- webpack文件夹打包_webpack多入口文件页面打包详解
- JAVA集合和guava集合使用和原理解析
- java中操作docker
- endnote设置文献第二行悬挂缩进办法
- 2017 Github优秀开源项目整理
- 【Unity】让动画系统支持相对坐标
- substring从指定字符串开始截取
- 树莓派与win10主机传输文件方式(未完,占坑)
- 计算机与S7-200 PLC通信的步骤,建立与S7-200 CPU在线联系设置修改PLC通信参数
- Systemverilog实现参数化的Round-Robin Arbiter Tree
- kedacom摄像头怎么预置_[功能测评]科达(Kedacom)200万红外网络摄像机
- 标准字头密码体制c语言,密码 实验1 打印
- 阿里面试记录---实习--【第二档】
- Enfold主题网站作品欣赏
热门文章
- java中extends用法_JAVA的extends用法
- 为什么SpringBoot jar包中的文件读取不到?
- php骑手轨迹_轨迹分析,如何解决车辆定位与道路的偏差?|斑马数智技术内参...
- 剑指offer每日六题---------day five
- C++ hdoj 2075 A|B
- 求二维整数数组中最大子数组的和(结对作业)
- Codeup 1814.剩下的树
- 硅谷的程序员, 入职第一天都在干什么?
- 均值差异大但是t检验不显著_如何理解均值差异性检验:方差分析?
- matlab在线_正版MATLAB向中国人民大学全校师生免费开放!