过程模拟模板匹配过程,可修改成模板匹配方式:
过程:读取一张图片->从图片中选取感兴趣区域(ROI),并保存->把保存下来的区域图片(ROI)读取出来->预处理后计算黑白像素的个数
#include "stdafx.h"
#include "opencv2/highgui/highgui.hpp"
#include "cv.h"
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>using namespace std;
using namespace cv;//黑白像素个数统计
int PixelCounter(Mat src, int nflag)
{int nCount_White = 0;//白int nCount_Black = 0;//黑//通过迭代器访问图像的像素点Mat_<uchar>::iterator itor = src.begin<uchar>();Mat_<uchar>::iterator itorEnd = src.end<uchar>();for (; itor != itorEnd; ++itor){if ((*itor) > 0){//白:像素值 ptr:255nCount_White += 1;}else{//黑:像素值 ptr:0nCount_Black += 1;}}//根据nflag返回黑或白像素个数if (nflag == 1){//白return nCount_White;}else{//黑return nCount_Black;}}void main()
{//读取图片Mat imgSrc = imread("Pic.bmp");//选取的区域【根据实际可改为动态区域】//Rect rect(150, 180, 110, 100);//黑白区域//Rect rect(10, 10, 110, 100);//全黑区域Rect rect(180, 200, 50, 50);//全白区域//显示选取的区域Mat image_roi = imgSrc(rect);imshow("选取的区域", image_roi);//保存感兴趣区域imwrite("ImgROI.bmp", image_roi);//在源图上框选出roi区域rectangle(imgSrc, rect, Scalar(255, 0, 0), 3);//根据实际修改缩放比例imshow("原图", imgSrc);//-----------------------------------//读取保存的图片(感兴趣区域)static string imgTemp = "ImgROI.bmp";Mat temp = imread(imgTemp);//转成灰度图cvtColor(temp, temp, COLOR_BGR2GRAY);//二值化threshold(temp, temp, 200, 255, THRESH_BINARY);//计算白像素个数int nWhiteCount = PixelCounter(temp, 1);//计算黑像素个数int nBlackCount = PixelCounter(temp, 2);//输出printf("像素个数统计:\n");printf("\n白像素:%d\n黑像素:%d\n总像素:%d\n", nWhiteCount, nBlackCount, (nBlackCount + nWhiteCount));waitKey(0);
}

结果:

黑白区域结果:


全黑区域结果:

全白区域结果:

OpenCV计算指定区域的黑白像素个数相关推荐

  1. opencv计算指定区域黑白像素占比

    如下在我们拿到二值化的图像之后,想要计算红框内黑白像素在该区域的占比.注意单通道的图像无法出现黑白以外的颜色. 上图为我们拿到的红色区域二值化之后的图像.我们通过遍历该区域所有像素来判断.若值为255 ...

  2. 详解为什么OpenCV的直方图计算函数calcHist()计算出的灰度值为255的像素个数为0

    在使用OpenCV的直方图计算函数calcHist()时,发现灰度值为255的像素个数总是为0. 哪怕图像中灰度值为255的像素个数不为0,使用OpenCV的直方图计算函数calcHist()计算出的 ...

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

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

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

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

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

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

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

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

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

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

  8. 使用Python,OpenCV计算图像直方图(cv2.calcHist)

    使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...

  9. matlab计算函数区域面积,matlab 中函数regionprops 求解区域面积的原理

    在matlab图像处理中太有用了,regionprops用来度量图像区域属性的函数. 函数:regionprops.顾名思义:它的用途是get the properties of region,即用来 ...

最新文章

  1. mysql学习资料_一不小心,我就上传了 279674 字的 MySQL 学习资料到 github 上了
  2. 小蓝发布带屏幕的单车,瞄准精准广告媒体平台
  3. Thinkphp 源码分析
  4. 【vijos】P1659 河蟹王国
  5. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题...
  6. 实现iframe_单点登录的三种实现方式,你会几种?
  7. iOS 一个开发者账号 多台Mac 共用
  8. 在运行时交换出Spring Bean配置
  9. 如何击败腾讯_击败股市
  10. 面试官:说说你知道多少种线程池拒绝策略
  11. 优雅的嵌套滑动解决方式-NestedScroll
  12. mybatis 报错 with invalid types () or values 0. Cause: java.lang.NoSuchMethodException:
  13. 计算机二级office高级应用教程,2015计算机二级Office高级应用上机试题及答案
  14. 如何阅读一本书——阅读笔记+个人体会【建议写书评或文献综述前读读这本书】
  15. 利用python写出德州扑克小游戏
  16. 程序猿必备福利之二上篇!!!简易使用Nodejs实现从美图网爬取清晰脱俗的美图???
  17. With...As 用法--公用表达式
  18. 求助做过笔记本ec的大佬
  19. 04、江苏专转本(专业课笔记)第四章、计算机网络与因特网
  20. R语言数据可视化 画并列条形图和堆叠条形图

热门文章

  1. 文艺青年、普通青年、2b青年到底是什么意思?
  2. android studio Instrumented tests代码覆盖率获取方法(补充)
  3. SQL Server使用教程
  4. javaType和ofType的区别
  5. simsimi小黄鸡机器人最新接口api
  6. phpredis手册
  7. printk打印不出信息可能的原因
  8. lerna: 最佳实践
  9. [TensorFlow深度学习入门]实战七·简便方法实现TensorFlow模型参数保存与加载(ckpt方式)
  10. vscode内置浏览器 开发vue 显示网址