opencv统计二值图黑白像素个数

#include "iostream"
#include "queue"
#include "Windows.h"

#include <opencv2/ml/ml.hpp>
#include "opencv2/opencv.hpp"
#include "Windows.h"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/ml.hpp"
#include "opencv/cv.h"
#include "opencv/ml.h"
#include "opencv/highgui.h"
#include "opencv/cvaux.h"
#include "opencv/cvwimage.h"
#include "opencv/cxcore.h"
#include "opencv/cxmisc.h"
#include "opencv2/cvconfig.h"
#define MAX 30

using namespace cv;
using namespace std;
int color[10000];

int main(int argc, char *argv[]) {    cv::Mat frame;    cv::Mat back;    cv::Mat fore;    //cv::VideoCapture cap("C:\\C_C++ EX8 code\\Video\\MyVideo.wmv");    cv::VideoCapture cap(0);    cv::Ptr<BackgroundSubtractorMOG2> bg = createBackgroundSubtractorMOG2();

    bg->setNMixtures(3);    //bg.bShadowDetection = false;    std::vector<std::vector<cv::Point> > contours;

    cv::namedWindow("Frame");    cv::namedWindow("Background");

    while(1)     {        cap >> frame;        //bg.operator()(frame, fore);        bg->apply(frame, fore,0.01);                cv::erode(fore, fore, cv::Mat());        cv::dilate(fore, fore, cv::Mat());        bg->getBackgroundImage(back);        //cv::findContours(fore, contours, CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);        //cv::drawContours(frame, contours, -1, cv::Scalar(0, 0, 255), 2);        threshold(fore, fore, 20, 250, CV_THRESH_BINARY_INV);        //---------------------------------------------------------------        int nRow = fore.rows;        int nCol = fore.cols;        //imshow("img", binaryimg);        memset(color, 0, sizeof(color));        for (int i = 0; i < nRow; i++)        {            uchar *data = fore.ptr<uchar>(i);            for (int j = 0; j < nCol; j++)            {                if (*data == 0)                    color[j]++;                *data++;            }        }

        int high = 300;        Mat histimg(high, nCol, CV_8UC3);        for (int j = 0; j < nCol; j += 2)        {            line(histimg, Point(j, high - color[j]), Point(j, high), Scalar(0, 0, 250), 1);        }        imshow("Hist", histimg);        //---------------------------------------------------------------                    //---------------------------------------------------------------        cv::imshow("Foreground", fore);        cv::imshow("Frame", frame);        cv::imshow("Background", back);        if (cv::waitKey(40) >= 0)            break;    }    return 0;}
时间: 2024-11-08 11:55:09

opencv统计二值图黑白像素个数的相关文章

使用OpenCV查找二值图中最大连通区域

http://blog.csdn.net/shaoxiaohu1/article/details/40272875 使用OpenCV查找二值图中最大连通区域 标签: OpenCVfindCoutours 2014-10-19 22:31 2802人阅读 评论(0) 收藏 举报  分类: 图像与OpenCV(15)  版权声明:本文为shaoxiaohu原创文章,欢迎转载,请注明出处,谢谢. 上一篇博文中介绍了matlab查找最大连通区域的方法,OpenCV函数中也有类似的函数与之对应,findC

Kinect 2.0 + OpenCV 显示深度数据、骨架信息、手势状态和人物二值图

1.前言 Kinect 2.0实测比第一代性能提升非常多! 本来想简单地找个教程复制黏贴一下,居然还没有人写过C++版的Kinect 2.0教程,自己摸索了一下,现在把结果拿出来和大家分享. 实现的功能是:深度数据(Depth Data),骨架信息(Body Data),手势状态(Hand State)和人物二值图(就是图1的那个东西,微软官方称法是Body Index Data)的提取和显示. 效果如下: 图1 骨架信息,人物二值图和手势状态 图2 深度信息 2.安装 Kinect 2.0的安

opencv二值图反色处理

反色处理指的是:如果原先图像的背景是白色,而目标是黑色的话:经过反色处理后,背景变为白色,目标变为黑色. 在opencv中,对于二值图的反色处理有两种方法: 之前处理好的二值图的定义为:Mat  binaryImg; 1.直接使用opencv中的函数: //! inverts each bit of array (dst = ~src) CV_EXPORTS_W void bitwise_not(InputArray src, OutputArray dst, InputArray mask=n

S0.4 二值图与阈值化

目录 二值图的定义 二值图的应用 阈值化 二值化/阈值化方法 1,无脑简单判断 opencv3函数threshold()实现 2,Otsu算法(大律法或最大类间方差法) OpenCV3 纯代码实现大津法 OpenCV3 threshold算法调用Otsu阈值化 改进版本 OpenCV3函数adaptiveThreshold实现自适应阈值 二值图的定义 二值图是一种特殊的灰度图,即每个像素点要么是白(0),要么是黑(255) 无论是灰度图还是二值图都是用阈值化的知识. 二值图的应用 图像的二值化使

用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪

前言 这个降噪的模型来自 Christopher M. Bishop 的 Pattern Recognition And Machine Learning (就是神书 PRML……),问题是如何对一个添加了一定椒盐噪声(Salt-and-pepper Noise)(假设噪声比例不超过 10%)的二值图(Binary Image)去噪. 原图 添加 10% 椒盐噪声的图 建模 下文中的数学表示: yi:噪声图中的像素 xi:原图中的像素,对应噪声图中的 yi 既然噪声图是从原图添加噪声而来,我们拥

zw&#183;准专利&#183;高保真二值图细部切分算法

zw·准专利·高保真二值图细部切分算法     高保真二值图细部切分算法,是中国字体协会项目的衍生作品.     说准专利算法,是因为对于图像算法的标准不了解,虽然报过专利,但不是这方面的,需要咨询专业的专利顾问.     原型是用opencv+python实现的,因为Halcon,对于协会的设计师,门槛太高,所以,特意设计了一套opencv+python的live-cd,解压即可,无需配置. 中国传统书法,有很多飞白.泼墨的手法,产生了很多小孔.孤点,从图像学角度,这些都是细小的感染区. 传统

opencv 删除二值化图像中面积较小的连通域

对于上图的二值化图像,要去除左下角和右上角的噪点,方法:使用opencv去掉黑色面积较小的连通域. 代码 CvSeq* contour = NULL; double minarea = 100.0; double tmparea = 0.0; CFileDialog dlg(true); if (dlg.DoModal()==IDOK) { CvMemStorage* storage = cvCreateMemStorage(0); IplImage* img_src= cvLoadImage(

C语言实现将彩色BMP位图转化为二值图

CTF做了图片的隐写题,还没有形成系统的认识,先来总结一下BMP图的组成,并通过将彩色图转为二值图的例子加深下理解. 只写了位图二进制文件的格式和代码实现,至于诸如RGB色彩和调色板是什么的一些概念就不啰嗦了. BMP位图文件格式 BMP文件由文件头.位图信息头.调色板和图形数据四部分组成,真彩色图是没有调色板的.每部分的具体结构在代码中具体列出并解释. 结构体的对齐 定义文件头部各结构体时要注意对齐的问题,至于什么是结构体对齐,请看这篇博文,写的很详细http://www.cnblogs.co

c语言实现灰度图转换为二值图

将上篇得到的灰度图转换为二值图,读取像素数据,低于某一值置0,否则设置为255,为得到更好的效果不同图片应采用不同的值 1 /* 2 2015年6月2日11:16:22 3 灰度图转换为二值图 4 blog:http://www.cnblogs.com/wd1001/ 5 */ 6 #include<stdio.h> 7 #include<malloc.h> 8 #include<stdlib.h> 9 /* 10 位图头结构 11 */ 12 #pragma pack