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 ...
随机推荐
- Redis学习系列一Linux环境搭建
1.简介 Redis是互联网技术架构中在存储系统中用的最广泛的中间件,是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一.所以Redis是.Net技术开发必须掌握的技能之一.所以通过这个系列的随 ...
- Android的Fragment的第一种声明方式
Android的Frangment的第一种声明方式 实际效果图如下: 项目结构图如下: fragment1: package com.demo.fragementfirst; import andro ...
- CentOS 部署 Python3 的一些注意事项
环境:centos6.7https://github.com/vinta/awesome-pythonhttps://github.com/PyMySQL/PyMySQLhttps://github. ...
- SVM(支持向量机)简介与基础理解
SVM(支持向量机)主要用于分类问题,主要的应用场景有字符识别.面部识别.行人检测.文本分类等领域.原文地址:https://zhuanlan.zhihu.com/p/21932911?refer=b ...
- 使用ffmpeg实现对h264视频解码 -- (实现了一个易于使用的c++封装库)
H264是当今流行的视频压缩格式:ffmpeg是一个开源库,实现了对h264视频文件的解压缩. 为了降低使用ffmpeg的复杂性,尽量隐藏实现细节,我写了一个封装库.c#也可以很方便的使用此库.解压后 ...
- 跨站点请求伪造(CSRF)
一.前言 跨站点请求伪造(Cross-SiteRequest Forgeries, CSRF),是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动 ...
- 从客户端(ASPxFormLayout1$txtRule="<YYYY><MM><DD><XXXX>")中检测到有潜在危险的 Request.Form 值
在有文本框的值属于这种时<YYYY><MM><DD><XXXX>,会报这个错 在webconfig中加入 <httpRuntime request ...
- [Python] 函数基本
使用def 函数名(): 来定义一个函数,函数体一缩进块的形式写,返回结果是return xx 例如: def myAbs(x): if x >= 0: return x else: retur ...
- Spring加载properties文件的两种方式
在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...
- String 字符串相加比较
String 字符串相加 对比 public static void main(String[] args) { String a = "helloword"; final Str ...