技术标签: 230_Semantic Segmentation Z-归档_OpenCV
0-255个像素值,每个值出现的频次是多少
256个bin意思就是有256个竖的条条,bin-size是64,意思是以64为bin宽度,统计频次
# -*- coding:utf-8 -*-
# Linda Li 2019/8/25 15:44 cv_28_图像直方图 PyCharm
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def plot_demo(image):
"""
image.ravel()统计频次的
bins 256,256条直方
range[0,256]
"""
plt.hist(image.ravel(), 256, [0, 256])
plt.show()
print("-------hello python--------")
src = cv.imread("../cv_02/cv_193.jpeg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
plot_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
整由于张图片比较偏白色,所以三个通道都在255左右取得波峰,把这些值抠出来,其实就可确定人的位置,背景和前景
# -*- coding:utf-8 -*-
# Linda Li 2019/8/25 15:44 cv_28_图像直方图 PyCharm
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def plot_hist(image):
"""绘制三个通道的图像,这个是个第三方的API模板"""
# 三个颜色 i = 0, 1, 2
color = ('blue', 'green', 'red')
# 绘制每一个颜色对应的直方图
for i, color in enumerate(color):
# 计算直方图
hist = cv.calcHist(image, [i], None, [256], [0, 256])
plt.plot(hist, color=color)
plt.xlim([0, 256])
plt.show()
print("-------hello python--------")
src = cv.imread("../cv_02/cv_291.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
plot_hist(src)
cv.waitKey(0)
cv.destroyAllWindows()
# -*- coding:utf-8 -*-
# Linda Li 2019/8/25 17:37 cv_30_直方图均衡化 PyCharm
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def equal_hist(image):
"""直方图均值化,是图像增强的一个手段"""
# opencv中的直方图均衡化都是基于灰度图像的,所以要先将图像变成灰度图像
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
dst = cv.equalizeHist(gray)
cv.imshow("equal_hist", dst)
print("-------hello python--------")
src = cv.imread("../cv_02/cv_30.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
equal_hist(src)
cv.waitKey(0)
cv.destroyAllWindows()
全局的直方图均衡化有些失真
# -*- coding:utf-8 -*-
# Linda Li 2019/8/25 17:37 cv_30_局部直方图均衡化 PyCharm
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def clahe_demo(image):
"""局部自适应的直方图均衡化"""
# openCv中的直方图均衡化都是基于灰度图像的,所以要先将图像变成灰度图像
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
# clipLimit指的是差异的大小, 8 * 8 的区域
clahe = cv.createCLAHE(clipLimit=5.0, tileGridSize=(8, 8))
dst = clahe.apply(gray)
cv.imshow("clahe_demo", dst)
print("-------hello python--------")
src = cv.imread("../cv_02/cv_30.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
clahe_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
解释
又测试了一张模糊放大的照片相似度如下
巴氏距离:0.060010098789997, 相关性: 0.9992416574913615, 卡方: 2503696.7459648685
# -*- coding:utf-8 -*-
# Linda Li 2019/8/25 17:37 cv_30_局部直方图均衡化 PyCharm
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def create_rgb_hist(image):
h, w, c = image.shape
# 初始化1维度
rgb_hist = np.zeros([16*16*16, 1], np.float32)
# bins bin的数量 16
bsize = 256 / 16
for row in range(h):
for col in range(w):
b = image[row, col, 0]
g = image[row, col, 1]
r = image[row, col, 2]
# 把float转换为int之后才可以做index,每一个出现的是在哪个颜色里面,就给他加一
index = np.int(b/bsize) * 16 * 16 + np.int(g/bsize) * 16 + np.int(r/bsize)
# 本来都是0,加上1
rgb_hist[np.int(index), 0] = rgb_hist[np.int(index), 0] + 1
return rgb_hist
def hist_compare(image1, image2):
hist1 = create_rgb_hist(image1)
hist2 = create_rgb_hist(image2)
# 1.巴氏距离
match1 = cv.compareHist(hist1, hist2, cv.HISTCMP_BHATTACHARYYA)
# 2.相关性
match2 = cv.compareHist(hist1, hist2, cv.HISTCMP_CORREL)
# 3.卡方-不太好度量,还是用1,2比较多
match3 = cv.compareHist(hist1, hist2, cv.HISTCMP_CHISQR)
print("巴氏距离:%s, 相关性: %s, 卡方: %s" % (match1, match2, match3))
print("-------hello python--------")
image1 = cv.imread("../cv_02/cv_193.jpeg")
image2 = cv.imread("../cv_02/cv_181.jpg")
image3 = cv.imread("../cv_02/cv_24r1.png")
cv.imshow("image1", image1)
cv.imshow("image2", image2)
cv.imshow("image3", image3)
# hist_compare(image1, image2)
hist_compare(image1, image3)
cv.waitKey(0)
cv.destroyAllWindows()
c语言取整方法(1)使用int强制转换使用int强制转换的结果就是去掉小数部分。int a;a=int(1.2); //a=1a=int(-1.2); //a=-1(2)使用floor函数向下取整使用floor函数的结果是向下取整,即得到比该数小的最大整数,需要包含头文件math.hin a;a=floor(1.2); //a=1a=floor(-1.2); //a=-2(3)使用ceil函数向上取整使用ceil函数的结果是向上取整,即得到比该数大的最小整数,需要包含头文件ma_%04d:
在日常应用场景中,可能会遇到这么一个情况,需要判断用户是否完整的观看完了一部视频,在这个场景中,和视频相关的事件大体涉及到几个部分,获取视频长度,视频开始播放,暂停播放和播放结束,下面来看下如何通过JavaScript来监听获取视频的这几种状态。html页面视频标签大体如下:视频加载后获取视频的长度:varelevideo=document.getElementById("video");e..._python 检查视频是否播放
今天使用Docker在启动RabbitMQ时发现出错了,整理了一下解决方案出错原因没有开启转发,网桥配置完后,需要开启转发,不然容器启动后,就会没有网络解决步骤执行指令vim /etc/sysctl.conf配置转发 net.ipv4.ip_forward=1重启服务,配置生效 systemctl restart network执行指令 sysctl net.ipv4.ip_forward如果返回“net.ipv4.ip_forward = 1”则表示成功_giobaforwarding[/etc/susconfrestartnetworkiq/networlleas disabled inconfiqur
程序员学习源码的正确方式首先,登录全球最大的同性交流网站 GitHub :https://github.com/输入框输入:spring framework可以看到,spring的全家桶已经start接近100k了spring框架的源码都在这里了,这里可以克隆或者下载..._spring框架学习方式
一、Click事件的用法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>click事件</title></head><body><form action="...
长时间没有练习,考试中间代码打的太慢,一些都想不起来了,浪费很多时间,导致后面选择题没有时间认真看题,随便就把答案写了课后要多看看题,多练习练习,避免下次出现同样的错误。毕竟孰能生巧..._今天考试
VMware EXSI 为虚拟机centos安装VM ware Tools1.首先查看虚拟机是否安装VMware Tools2.打开虚拟机控制台3.选择虚拟机——客户机——安装/升级VMware tools4.建立一个挂载点挂载并拷贝解压5.进入vmware-tools-distrib目录执行 ./vmware-install.pl 开始安装 因为该centos是最小化安装,会报一个错误可以
问题描述:采用ftp远程传输文件,出现问题,且ping不通windows主机解决办法:关闭Windows防火墙具体步骤:打开控制面板–系统和安全–Windows 防火墙–在左边一栏选择"打开或关闭Windows防火墙"–选择"关闭Windows防火墙"再ping主机ip,成功...
平时我们把数据放在那儿,网盘?U盘?还是在硬盘睡觉。如果不想别人看到怎么办?简单的方法就是放在别人找不到的地方,复杂点的方法就是把数据加密,即使别人找到了,没密码也没办法查看。那么数据怎样加密才安全?如果你面对的是一群小白的话,改个文件名、后缀名基本就完事,如果你面对的是比较懂得人,显然需要一种安全的加密手段。有个很用的加密工具-VeraCrypt,平时小电影一些隐私文件有地儿存放。...
选择性操作竖线(|)字符是元字符扩展集的一部分,用于指定正则表达式的联合。如果某行匹配其中的一个正则表达式,那么它就匹配该模式。例如,正则表达式:UNIX|LINUX将匹配包含字符串"UNIX" 或字符串"LINUX" 的行。可以指定更多的选择,例如:UNIX|LINUX|NETBSD使用egrep时,打印匹配这3种模式中任意一种的行。在sed中,没有联合元字符,可以分别指_awk 正则 分组
top -H -p $PID #查看对应进程的那个线程占用CPU过高1、top -H手册中说:-H : Threads toggle加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。2、ps xH手册中说:H Show threads as if they were processes这样可以查看所有存在的线程。3、ps -mp手册中说:m Show th...
Strange Way to Express IntegersTime Limit: 1000MS Memory Limit: 131072KTotal Submissions: 13819 Accepted: 4451DescriptionElina is reading a book written by Ruji