如下在我们拿到二值化的图像之后,想要计算红框内黑白像素在该区域的占比。注意单通道的图像无法出现黑白以外的颜色。


上图为我们拿到的红色区域二值化之后的图像。我们通过遍历该区域所有像素来判断。若值为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计算指定区域黑白像素占比相关推荐

  1. OpenCV计算指定区域的黑白像素个数

    过程模拟模板匹配过程,可修改成模板匹配方式: 过程:读取一张图片->从图片中选取感兴趣区域(ROI),并保存->把保存下来的区域图片(ROI)读取出来->预处理后计算黑白像素的个数 ...

  2. 用OpenCV计算图像的亚像素值

    原理如图: float subPixelValue(cv::Mat &img, float x, float y) {// boundary checkif (x < 0)x = 0;i ...

  3. Google Earth Engine (GEE)——如何统计指定区域的像素数量和总量

    很多时候我们想统计研究区的像素数量,但是用错了函数,本来用ee.reducer.sum(), ee.reducer.count()混淆使用,我们发现有很多人要统计像素数量,但却统计成了总量,所以我们首 ...

  4. Python项目实践(一)去除PDF指定区域内的水印

    目录 前言 对比图(水印去除前后) 一.原理 二.代码实现 三.使用教程 1. 文件夹目录(pic和res文件夹需提前创建好) 2. 执行第一步代码(注释掉其他代码,以下同理) 3. 执行第二步代码 ...

  5. python黑白像素面积占比计算(脏污、白点等)

    系列文章目录 文章目录 系列文章目录 前言 一.专词解释 二.效果实现 1.源码一 2.源码二 三.效果确认 总结 前言 一.专词解释 1.二值化:图像二值化就是将图像上的像素点的灰度值设置为0或25 ...

  6. 【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )

    文章目录 一.获取图像真实宽高 二.计算解码区域 三.设置解码参数 内存复用 像素格式 四.图像绘制 五.执行效果 六.源码及资源下载 官方文档 API : BitmapRegionDecoder 在 ...

  7. OpenCV:将一幅图像复制到另一幅图像的指定区域中ROI

    用途: 使用一幅图像(或ROI)覆盖(替换)另一图像的指定区域,直接的方法是逐个像素进行复制,但这是一种效率很低的操作,下面介绍opencv中一种效率较高且简便的操作. 函数:roiImg.copyT ...

  8. OpenCV后投影,利用阈值函数分割指定区域生成掩膜,通过直方图分布查找其他图像相同区域。

    一.API函数 void mixChannels(const Mat* src,int nsrc,Mat* dst ,int ndst,const int* fromTo,size_t npairs) ...

  9. OpenCV图像处理(13)——指定区域截取和指定区域复制

    前言: 在令人讨厌的的自动屏保中突然看到一张漂亮的图片(懂就行!),就想赶紧按了键盘上的截屏键,当发现无法去掉上面的文字. 于是乎,图像处理的我就和邱邱一起研究如何将其去掉. 思路: 该图片上的文字和 ...

最新文章

  1. CSDN线上直播操作测试方案
  2. 系统服务器异常0,贪婪洞窟云服务器异常0
  3. Asp.Net生命周期系列三
  4. 反汇编程序导致程序crash的解决思路
  5. docker mysql总是退出_docker 安装 mysql
  6. git介绍和常用操作
  7. webpack文件夹打包_webpack多入口文件页面打包详解
  8. JAVA集合和guava集合使用和原理解析
  9. java中操作docker
  10. endnote设置文献第二行悬挂缩进办法
  11. 2017 Github优秀开源项目整理
  12. 【Unity】让动画系统支持相对坐标
  13. substring从指定字符串开始截取
  14. 树莓派与win10主机传输文件方式(未完,占坑)
  15. 计算机与S7-200 PLC通信的步骤,建立与S7-200 CPU在线联系设置修改PLC通信参数
  16. Systemverilog实现参数化的Round-Robin Arbiter Tree
  17. kedacom摄像头怎么预置_[功能测评]科达(Kedacom)200万红外网络摄像机
  18. 标准字头密码体制c语言,密码 实验1 打印
  19. 阿里面试记录---实习--【第二档】
  20. Enfold主题网站作品欣赏

热门文章

  1. java中extends用法_JAVA的extends用法
  2. 为什么SpringBoot jar包中的文件读取不到?
  3. php骑手轨迹_轨迹分析,如何解决车辆定位与道路的偏差?|斑马数智技术内参...
  4. 剑指offer每日六题---------day five
  5. C++ hdoj 2075 A|B
  6. 求二维整数数组中最大子数组的和(结对作业)
  7. Codeup 1814.剩下的树
  8. 硅谷的程序员, 入职第一天都在干什么?
  9. 均值差异大但是t检验不显著_如何理解均值差异性检验:方差分析?
  10. matlab在线_正版MATLAB向中国人民大学全校师生免费开放!