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 ...
随机推荐
- java ant 编译打包build.xml完整配置范例
java ant 编译打包build.xml完整配置范例 <?xml version="1.0" encoding="UTF-8" ?> <p ...
- 自测 基础 js 脚本。
<html> <head> <script> //function(<text>a{[]}lert('x')</text>)() docum ...
- Python学习--08函数式编程
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数. 高阶函数 Python支持高阶函数(Higher-order function). 什么是高阶函数呢?把函数作为参 ...
- Tensorflow运用RNN注意事项
一.学习单步的RNN:RNNCell 如果要学习TensorFlow中的RNN,第一站应该就是去了解“RNNCell”,它是TensorFlow中实现RNN的基本单元,每个RNNCell都有一个cal ...
- 【IT笔试面试题整理】位操作
如何准备: Bit manipulation can be a scary thing to many candidates, but it doesn't need to be! If you're ...
- asp.net mvc 微信公众号token验证
本人的公众号要申请成为开发者,必须经过token认证.微信公众号的官方代码只列出了PHP代码的实例,明显是歧视.net用户.我用的asp.net mvc中的web api,结果调了好久都没有成功,最后 ...
- WPF 中Canvas图形移动、缩放代码
从Flash转C#,很多内容一知半解,边摸索边前进,代码粗糙,权当留个脚印. 只是想得到一个基础的移动和缩放功能的界面,找了很久都是画线.画矩形等基础形状的代码,移动和缩放说的并不清晰,只能自己努力来 ...
- 记一次webapi传参数的问题
.net小白一枚,经过了几个小时的研究,由于错误的写法导致后台始终接受不到前台传递过来的参数.首先看看控制器的参数 public Core.MVC.ServiceResult<DTO.Out.M ...
- 【Java并发编程】7、线程池
1. 为什么使用线程池 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,这种方式可能是通过网络协 ...
- [小技巧]Filezilla无法确定拖放操作目标,由于shell未正确安装__解决办法
重装系统及相关软件之后,用filezilla拖拽ftp上的文件到桌面的时候,提示"无法确定拖放操作目标......" 解决办法很简单,执行如下几步就OK了 ①在CMD中,进入Fil ...