OpenCV 图片美化
1、彩色直方图
def ImgHist(image,type):
color = (255,255,255)
windowName='gray' if type==31:
color=(255,0,0)
windowName='B'
elif type==32:
color=(0,255,0)
windowName='G'
elif type==33:
color=(0,0,255)
windowName='R'
#[0]通道
hist=cv2.calcHist([image],[0],None,[256],[0.0,255.0])
minV,maxV,minL,maxL=cv2.minMaxLoc(hist)
print('minV,maxV,minL,maxL',minV,maxV,minL,maxL)
histImg=np.zeros([256,256,3],np.uint8)
for i in range(256):
intenNormal=int(hist[i]*256/maxV)
print(hist[i],hist[i]*256/maxV)
cv2.line(histImg,(i,256),(i,256-intenNormal),color)
cv2.imshow(windowName,histImg)
return histImg
img=cv2.imread('b.png',1)
channels=cv2.split(img)#RGB--->R G B
for i in range(3):
ImgHist(channels[i],31+i)
cv2.waitKey(0)
结果:

2、灰度化
img = cv2.imread('b.png',1)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#原图
dst=cv2.equalizeHist(gray)#均衡化
cv2.imshow('dst',dst)
cv2.imshow('gray',gray)
cv2.waitKey(0)
结果:;

3、彩色
分别将各个通道进行均衡化,然后组合
img=cv2.imread('b.png',1)
b,g,r=cv2.split(img)
bH=cv2.equalizeHist(b)
gH=cv2.equalizeHist(g)
rH=cv2.equalizeHist(r)
dst=cv2.merge((bH,gH,rH))
cv2.imshow('dst',dst)
cv2.waitKey(0)
结果:

4、YUV 亮度与色度分离
imgyuv=cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)
channels=cv2.split(imgyuv)
channels[0]=cv2.equalizeHist(channels[0])
channels[1]=cv2.equalizeHist(channels[1])
channels[2]=cv2.equalizeHist(channels[2])
dst=cv2.merge(channels)#融合通道
cv2.imshow('dst',dst)
cv2.waitKey(0)
结果:

5、滤波(双边滤波,高斯滤波)
# 2 双边滤波器
cv2.imshow('src',img)
dst=cv2.bilateralFilter(img,100,200,160)
cv2.imshow('shangbian',dst)
# cv2.waitKey(0)
# 高斯中值滤波
dst=np.zeros(img.shape,np.uint8)
height=img.shape[0]
width=img.shape[1]
for i in range(3,height-3):
for j in range(3,width-3):
sum_b=int(0)
sum_g=int(0)
sum_r=int(0)
for m in range(-3,3):
for n in range(-3,3):
(b,g,r)=img[i+m,j+n]
sum_b=sum_b+int(b)
sum_g=sum_g+int(g)
sum_r=sum_r+int(r)
b=np.uint8(sum_b/36)
g=np.uint8(sum_g/36)
r=np.uint8(sum_r/36)
dst[i,j]=(b,g,r)
cv2.imshow('gaosi',dst)
cv2.waitKey(0)
结果:

OpenCV 图片美化的更多相关文章
- 基于opencv图片切割
基于opencv图片切割为n个3*3区块 工作原因,切割图片,任务急,暂留调通的源码,留以后用. package com.rosetta.image.test; import org.opencv.c ...
- 图片美化增强AI接口调用手册
在调合合AI平台提供的图片美化增强API接口,API平台链接:https://ai.ccint.com/doc/api/crop_enhance_image, 因为有遇到一些问题,写篇博客记录一下 A ...
- Opencv图片明暗处理
Opencv图片明暗处理 #include <iostream> #include <opencv2/opencv.hpp> using namespace std; usin ...
- Python OpenCV图片转视频 工具贴(三)
Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...
- OpenCV图片类cv::Mat和QImage之间进行转换(好多相关文章)
在使用Qt和OpenCV混合编程时,我们有时需要在两种图片类cv::Mat和QImage之间进行转换,下面的代码参考了网上这个帖子: //##### cv::Mat ---> QImage ## ...
- OpenCV图片矩阵操作相关,对png图片操作(多通道)
文献链接: http://www.cnblogs.com/tornadomeet/archive/2012/12/26/2834336.html 下面这个高手,写了个小程序我还没有调试,回头 调试看看 ...
- opencv图片转幻灯片视频
/*g++ *.cpp `pkg-config --cflags --libs opencv` -std=c++11*/ #include <opencv2/opencv.hpp> usi ...
- opencv图片右转函数
因为需要将函数进行右转,发现opencv自带 的过于麻烦.自己写了个右转的.可以根据这个想法写出任何方向的 //函数功能,右转图片 IplImage* convertImage(IplImage* i ...
- opencv图片压缩视频并读取
import os import cv2 import numpy as np import time path = './new_image/' filelist = os.listdir(path ...
随机推荐
- How to change windows applicatioin's position via Win32 API
可以使用的Win32 API是: [DllImport("user32.dll")] private extern static bool SetWindowPos(IntPtr ...
- 监督学习——决策树理论与实践(下):回归决策树(CART)
介绍 决策树分为分类决策树和回归决策树: 上一篇介绍了分类决策树以及Python实现分类决策树: 监督学习——决策树理论与实践(上):分类决策树 决策树是一种依托决策而建立起来的一种 ...
- 静态编译 Qt5.7.0 (含 openssl 支持)
关于Qt静态便宜的环境等,请先参见 Win10 + VS2015 下编译 Qt5.6.0 . 首先编译 openssl .我这里用的版本是 openssl 1.0.2j (新的1.1版本的便宜稍有不同 ...
- Android的几种弹出框
项目效果图: 新建一个项目,结构图如下所示: activity_main.xml: <?xml version="1.0" encoding="utf-8" ...
- 升级Ghost
环境:CentOS 6.3 [root@AY1406151605405725a8Z ghost]# ls -l total 108 -rw-rw-rw- 1 root root 1132 Sep ...
- JavaScript -- Enumerator
-----022-Enumerator.html----- <!DOCTYPE html> <html> <head> <meta http-equiv=&q ...
- [Java初探08]__简单学习Java类和对象
前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...
- Notification 浏览器的消息推送
Notification 对象,存在于window上,可以生成一个通知对象以推送推送浏览器消息通知. 这玩意兼容性不咋地,实不实用看场景.对外用户的应用,自然是鸡肋功能,因为你无法知道用户使用的是哪家 ...
- Shell脚本 | 性能测试之启动流量
安卓应用的流量统计有多种方式,点击「阅读原文」可以看到一篇别人写的文章,关于安卓流量数据的获取,写的挺全的,列举了几种不同方式的优劣.(见文末参考链接) 今天我要分享的是通过脚本一键获取应用的启动流量 ...
- MVC源码分析 - Error过滤器
接 上一篇 内容, 这里先看一下错误处理过滤器. 在看此部分之前, 先看看MVC已经提供的功能吧. 一. MVC 自带功能 1. 配置方法 <system.web> <!--mode ...