Python图像处理(5):直方图
来源:互联网 发布:淘宝售后管理制度 编辑:程序博客网 时间:2024/05/18 15:57
快乐虾
http://blog.csdn.net/lights_joy/
欢迎转载,但请保留作者信息
直方图的计算采用OpenCV的calcHist完成。
OpenCV的C++接口中calcHist有三种形式:
//! computes the joint dense histogram for a set of images.CV_EXPORTS void calcHist( const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=false );//! computes the joint sparse histogram for a set of images.CV_EXPORTS void calcHist( const Mat* images, int nimages, const int* channels, InputArray mask, SparseMat& hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=false );CV_EXPORTS_W void calcHist( InputArrayOfArrays images, const vector<int>& channels, InputArray mask, OutputArray hist, const vector<int>& histSize, const vector<float>& ranges, bool accumulate=false );
但导出的Python接口却只有一个:
static PyObject* pyopencv_calcHist(PyObject* , PyObject* args, PyObject* kw){ PyObject* pyobj_images = NULL; vector_Mat images; PyObject* pyobj_channels = NULL; vector_int channels; PyObject* pyobj_mask = NULL; Mat mask; PyObject* pyobj_hist = NULL; Mat hist; PyObject* pyobj_histSize = NULL; vector_int histSize; PyObject* pyobj_ranges = NULL; vector_float ranges; bool accumulate=false; const char* keywords[] = { "images", "channels", "mask", "histSize", "ranges", "hist", "accumulate", NULL }; if( PyArg_ParseTupleAndKeywords(args, kw, "OOOOO|Ob:calcHist", (char**)keywords, &pyobj_images, &pyobj_channels, &pyobj_mask, &pyobj_histSize, &pyobj_ranges, &pyobj_hist, &accumulate) && pyopencv_to(pyobj_images, images, ArgInfo("images", 0)) && pyopencv_to(pyobj_channels, channels, ArgInfo("channels", 0)) && pyopencv_to(pyobj_mask, mask, ArgInfo("mask", 0)) && pyopencv_to(pyobj_hist, hist, ArgInfo("hist", 1)) && pyopencv_to(pyobj_histSize, histSize, ArgInfo("histSize", 0)) && pyopencv_to(pyobj_ranges, ranges, ArgInfo("ranges", 0)) ) { ERRWRAP2( cv::calcHist(images, channels, mask, hist, histSize, ranges, accumulate)); return pyopencv_from(hist); } return NULL;}
因此Python的接口看起来有点奇怪:
hist = cv2.calcHist([src], [0], None, [256], [0, 255])
即使是只对一张图片进行操作,也必须使用数组的形式进行参数传递。
写个简单的Python程序,获取单个通道的直方图:
# -*- coding: utf-8 -*- import cv2import numpy as npimport matplotlib.pyplot as plt# 单通道直方图测试src = cv2.imread('f:\\tmp\\cotton.jpg')cv2.imshow('src', src)hist = cv2.calcHist([src], [0], None, [256], [0, 255])plt.plot(hist)plt.show()cv2.waitKey()
结果如下:
符合我们对直方图的预期。
0 0
- Python图像处理(5):直方图
- python 图像直方图处理
- 用python简单处理图片(5):图像直方图
- 用python简单处理图片(5):图像直方图
- 用python简单处理图片(5):图像直方图
- 直方图均衡化处理图像(python)
- 【python图像处理】python绘制灰度直方图
- python 简单图像处理(8) 直方图均衡化
- 【Python图像处理】图片读取/提取直方图
- Python与图像处理(1):绘制图像,点和线,图像轮廓,直方图
- Python-OpenCV 处理图像(四):图像直方图和反向投影
- Python-OpenCV 处理图像(四)(五):图像直方图和反向投影 图像中边界和轮廓检测
- 图像处理(二)直方图均衡化
- 图像处理(三)直方图匹配
- 图像处理(〇)直方图修改基础
- 图像处理(1)直方图均衡
- 图像处理(三):直方图均衡化
- MATLAB数字图像处理(一)图像直方图
- mysql安装图文并茂
- php数据库编程,php数据库编程步骤
- Android的Adapter接口使用详解
- Beeframework添加UIScrollView截获touch事件
- 如何做EL表达式能调用的函数-小例子
- Python图像处理(5):直方图
- 多线程(一)基本概念
- Searching: Fibonaccian Search-3: N+1 is NOT a perfect Fibonacci number
- 苹果公司如何推动整个产业的前进
- Material Design兼容库(Design Support Library)
- Axure原创教程网 » AxureRP 7.0最新版和汉化包下载
- 变强真的很难么?
- 多线程(二)生命周期和同步
- ugui学习资料