技术标签: 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()
前几天在seaborn中看到了这个图,还以为是什么树叶图,一开始就是觉得图挺有意思,但是并不知道是什么意思,这里就整理一下我们先看个例子小提琴图和箱线图有点儿类似,用来显示数据分布和概率密度这种图结合了箱线图和密度图的特征,用来显示数据的分布形状中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间,而白点则为中位数。参考文章:小提琴图这个图中间那一块就是箱线图,外面包裹着一个密度图2人点赞数据分析更多精彩内容,就在简书A...
**一、登录企业微信管理后台**点击下方的链接,前往企业微信管理后台,使用管理员的企业微信扫码登录[https://work.weixin.qq.com/](https://work.weixin.qq.com/)**二、获取企业ID**( CorpId )在企业微信管理后台点击“我的企业”,如下图所示。",1000); window.clearTimeout(timeId);定时执行timeId=window.setInterval("m...
前言开发app中,使用的网络框架多种多样,其中包括:1、HttpClient(听说过,没用到过),HttpURLConnection2、AsyncTask3、OkHttp4、Retrofit5、Volley以上等等框架,今天就介绍Volley框架的原理与好处。。。(请准备好瓜子)1、简介Volle于2013年Google I/O大会上推出的一个新的网络通信框架,在性能方面进行了大幅度的调整。2、如...
聊到小提琴,我们很多人都知道,有人问小提琴1234567位置图解,另外,还有人问小提琴1234567位置图解,这到底是咋回事?其实小提琴1234567位置图解呢,今天我们就来看看小提琴1234567位置图解,一起来了解下吧。小提琴1234567位置图解◆小提琴有4根弦,从低到高是以五度关系增高其空弦的音高的,所以它的空弦音从低到高是5263。这样每根弦上就有了不同的排音规律,请看下图,便可一目了然...
vue2 + elementUI + echarts1.侧边栏菜单选中后刷新页面, 保持状态2.侧边栏折叠/展开后刷新页面, 保持状态 a.将collapse:false保存在vuex的state中, 在页面调用 b.App.vue页面页面刷新时,如何保持原有vuex中的state信息 - 浅笑· - 博客园3.隐藏echarts滑轮两侧的字dataZoom-slider.textStyle. color :"transpare...
1.词袋模型 词袋模型(BOW, Bag-of-Words) 模型是NLP领域中的一个基本假设,一个文档(document)被表示为一组单词(word/term)的无序组合,而忽略了语法或者词序的部分,存在缺陷: 稀疏性: 对于大词典,尤其是包括了生僻字的词典,文档稀疏性不可避免; 多义词: BOW模型只统计单词出现的次数,而忽略了一个词可能存在多种含义,一词多义; 同义
原标题:python中画图如何修改横坐标大小? 用matplotlib画二维图像时,默认情况下的横坐标和纵坐标显示的值有时达不到自己的需求,需要借助xticks()和yticks()分别对横坐标x-axis和纵坐标y-axis进行设置。import numpy as npimport matplotlib.pyplot as pltx = range(1,13,1)y = range(1,13,1...
论文地址:https://arxiv.org/abs/1512.02134v1背景 光流估计(optial flow estimation)可以在一个大型合成数据集上训练,受此启发,本文将光流估计模型扩展到视差估计(disparity estimation)和场景流估计(Scene Flow estimation),在大型合成数据集上使用CNN来解决视差估计与场景流估计问题;网络结构DispNet是基于FlowNet的结构进行小改而来,网路的整体与FlowNet的结构是一致的;FlowNet
一、检查sim卡功能是否可用1、首先打开一个终端,查询sim卡适配节点,如下图所示ttyUSB2就是适配节点adb shellcd dev/ll2、再打开一个终端,输入adb shellcat /dev/ttyUSB23、上面打开的终端不要关闭,再次打开一个新的终端,输入adb shellecho -e "AT+CFUN? \r\n" > ...