九、图像直方图

一、图像直方图的属性

说白了就是将图像上的各个颜色通道上的像素点的像素值进行统计,例如:像素值为14的像素点个数有几个,进行显示。
在这里插入图片描述在这里插入图片描述
图像的像素值取值范围为[0,255],这个范围也成为直方图的range也就是直方图的横坐标轴
每一个像素值所对应的个数称之为bin

二、对图像进行直方图统计

image.ravel()把图像的所有像素点信息进行统计
plt.hist(image.ravel(),256,[0,256])将图像信息进行统计,统计成256个bin,范围为[0,255]
cv2.calcHist([image],[i],None,[256],[0,256])[image]为当前出来图像,[i]这里使用了一个循环也就是依次BGR三个通道,None是掩膜信息这里没有用到,[256]表示直方图的size,[0,256]BGR三颜色的像素值的范围

import cv2
import numpy as np
from matplotlib import pyplot as pltdef plot(image):plt.hist(image.ravel(),256,[0,256])plt.show("matlab自带直方图")def hist(image):color = ('blue','green','red')for i,color in enumerate(color):hist = cv2.calcHist([image],[i],None,[256],[0,256])plt.plot(hist,color=color)plt.xlim([0,256])plt.show()src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)plot(src)
hist(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果图如下:
在这里插入图片描述

三、直方图的均衡化

OpenCV中的直方图均衡化针对的都是灰度图

Ⅰ全局直方图均衡化
import cv2
import numpy as np
from matplotlib import pyplot as pltdef equalizeHist(image):gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)dst = cv2.equalizeHist(gray)#yy = cv2.cvtColor(dst,cv2.COLOR_GRAY2BGR)cv2.imshow("equalizeHist",dst)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\mi.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)equalizeHist(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果图如下:
在这里插入图片描述

Ⅱ局部直方图均衡化
import cv2
import numpy as np
from matplotlib import pyplot as pltdef clahe(image):gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))dst = clahe.apply(gray)cv2.imshow("clahe",dst)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\mi.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)clahe(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果图如下:
在这里插入图片描述

四、直方图反向投影

Ⅰ2D直方图

cv2.calcHist([image],[0,1],None,[180,256],[0,180,0,256])其中[180,256]表示bin的个数,可以修改,当然范围越小越精确

import cv2
import numpy as np
from matplotlib import pyplot as pltdef hist2d(image):hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)hist = cv2.calcHist([image],[0,1],None,[180,256],[0,180,0,256])cv2.imshow("hist2d",hist)def hist2d_1(image):hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)hist = cv2.calcHist([image],[0,1],None,[180,256],[0,180,0,256])plt.imshow(hist,interpolation='nearest')plt.title("2D Histogram")plt.show()src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\l.png")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
hist2d(src)
hist2d_1(src)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果图如下:
在这里插入图片描述

Ⅱ直方图反向投影

cv2.calcHist([roi_hsv],[0,1],None,[32,48],[0,180,0,256])其中[32,48]表示bin的个数,可以修改,当然范围越小越精确

import cv2
import numpy as np
from matplotlib import pyplot as pltdef back_projection():sample = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\yg1.jpg")target = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\yg.jpg")roi_hsv = cv2.cvtColor(sample,cv2.COLOR_BGR2HSV)target_hsv = cv2.cvtColor(target,cv2.COLOR_BGR2HSV)cv2.imshow("sample",sample)cv2.imshow("target",target)roiHist = cv2.calcHist([roi_hsv],[0,1],None,[32,48],[0,180,0,256])cv2.normalize(roiHist,roiHist,0,255,cv2.NORM_MINMAX)dst = cv2.calcBackProject([target_hsv],[0,1],roiHist,[0,180,0,256],1)cv2.imshow("back_projection",dst)back_projection()
cv2.waitKey(0)
cv2.destroyAllWindows()

效果图如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BIFR的完整形式是什么?

BIFR:工业和金融重组委员会 (BIFR: Board of Industrial and Financial Reconstruction) BIFR is an abbreviation of the Board of Industrial and Financial Reconstruction. It was an organization of the Government of India and a branch of the Department …

LeetCode 101. 对称二叉树 思考分析

题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1/ 2 2 / \ / 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1/ 2 2 \ 3 3 进阶: 你可以运用递归和迭代两种方法解决这个…

内心能不能宁静一点,做事能不能坚持一下

内心能不能宁静一点,做事能不能坚持一下 每次朋友问我怎么样,我总感觉不好回答,如果说实话我想他们或许是不能理解我的处境的,只能报以“还好”之类的语言,糊弄一下。唯一一次说了实话是:我坠落了&#xff…

直方图反向投影

通过直方图反向投影,根据目标衣服颜色的特征来进行定位 cv2.calcHist([roi_hsv],[0,1],None,[32,48],[0,180,0,256])其中[32,48]表示bin的个数,可以修改,当然范围越小越精确 import cv2 import numpy as np from matplotlib import pyplot …

javascript 排序_JavaScript中的排序方法

javascript 排序There are tons of sorting algorithms available like bubble sort, merge sort, insertion sort etc. You must have implemented some of these in other programming languages like C or C. But in this article, I will be demonstrating the Sorting met…

LeetCode 二叉树、N叉树的最大深度与最小深度(递归解)

目录104. 二叉树的最大深度559. N叉树的最大深度111. 二叉树的最小深度之前的笔记中,已经用层序遍历解决过这个问题了现在试着用深度的解法去求解104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径…

十、模板匹配

一、概念 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。 需要首先给定一个模板图像A,和一个待检测图像B。 在待检测图像B上,从左往右,从上往下计算待检测图像B和模板图像A所重叠的匹配度,匹配度越高则两者相同的可…

基于WF的意见征集4(浅析)

接口项目&#xff1a;IClass&#xff08;项目名称&#xff09; HTHuiFuusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Workflow.Runtime;using System.Workflow.Activities;namespace IClass{ /// <summary> /…

那些VisualStudio隐藏的调试功能

VisualStudio是一个强大的调试工具&#xff0c;里面很多隐藏功能少有人问津&#xff0c;但是在特定场景可以节省你很多时间&#xff0c;本文主要介绍一些VisualStudio调试相关的隐藏功能&#xff0c;欢迎大家补充。 运行到指针(Run to cursor) 大多数人用Visual Studio在调试程…

php连接数据库代码_PHP代码连接各种数据库

php连接数据库代码1)用PHP连接MySQL (1) Connecting with MySQL in PHP) <?php$host "localhost";$uname "username";$pw "password";$db "newDB";try {$conn new PDO("mysql:host$host;dbname$db", $uname, $pw);…

【C++ grammar】对象和类(创建对象、对象拷贝、分离声明与实现)

目录1、用类创建对象1、面向对象的特征2、对象由什么构成3、如何定义对象4、创建对象并访问对象成员1. Constructors(构造函数)2. Constructing Objects (创建对象)3. Object Member Access Operator(对象访问运算符)2、对象拷贝以及分离声明与实现1、类是一种数据类型1.1. 定义…

十一、图像二值化

一、二值图像 其实就是把图像转换为只有黑白的两种颜色图像&#xff0c;即像素值非零即一 三角阈值二值化 对一个图像进行操作&#xff0c;获取图像的直方图&#xff0c;找到波峰和波谷进行连线设为线段A&#xff0c;每个点做有关线段A的垂线垂足在线段A上&#xff0c;最后将…

百度地图LV1.5实践项目开发工具类bmap.util.jsV1.2

/*** 百度地图使用工具类-v1.5* * author boonya* date 2013-7-7* address Chengdu,Sichuan,China* email boonyasina.com* company KWT.Shenzhen.Inc.com* notice 有些功能需要加入外部JS库才能使用&#xff0c;另外还需要申请地图JS key .* 申请地址&#xff1a;http…

isatty_带有示例的Python File isatty()方法

isatty文件isatty()方法 (File isatty() Method) isatty() method is an inbuilt method in Python, it is used to check whether a file stream is an interactive or not in Python i.e. a file stream is connected to a terminal device. If a file is connected to a ter…

地毯店 如何辨别地毯的好坏?

在实地选购地毯品牌时&#xff0c;许多地方需要引起注意&#xff0c;而且要显得专业&#xff0c;这样才能科学深入地辨别地毯的好坏。比如&#xff0c;辨明拉绞地毯和抽绞地毯两种工艺的打结方法几乎相同&#xff0c;只是变绞形式上有所区别。抽绞的方式较古老&#xff0c;一般…

十二、图像金字塔

一、原理 reduce高斯模糊降采样 expand扩大卷积 PyrDown&#xff1a;降采样 PyrUp&#xff1a;还原 二、高斯金字塔 import cv2 import numpy as np from matplotlib import pyplot as pltdef pyramid(image):level 3temp image.copy()pyramid_image []for i in range(le…

java uuid静态方法_Java UUID toString()方法与示例

java uuid静态方法UUID类toString()方法 (UUID Class toString() method) toString() method is available in java.util package. toString()方法在java.util包中可用。 toString() method is used for string denotation of this UUID. toString()方法用于此UUID的字符串表示…

LeetCode 110. 平衡二叉树思考分析

题目 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / 9 20 / 15 7 返回 true 。 示例 2…

Redhat配置XDMCP及相关linux命令

为了能够使用 Xwin32 或 Xmanager 登录到 Linux 主机所进行的配置。需要首先在linux上进行相关配置 1.“系统”菜单中选择“管理”下的“登录屏幕” 2.出现“登录窗口首选项”窗口。选择“远程”选项卡&#xff0c;将“样式”改为:“与本地相同” 3.选择“安全”选项卡&#xf…

充实的日子里忙忙碌碌

实习已经有一个多月了&#xff0c;话说这个月发工资就有我的份儿了&#xff0c;哇咔咔~~~感觉忙忙碌碌的生活其实很充实的。工作日每天都是7点10分左右起来&#xff0c;8点半到公司买早饭吃东西&#xff0c;9点上班开工。先罗列要干的东西&#xff0c;然后一项一项完成&#xf…