1、RGB ->灰度

#灰度   方式1
img=cv2.imread('b.png',0)
img1=cv2.imread('b.png',1)
height=img1.shape[0]
width=img1.shape[1]
print(img1.shape)
# cv2.imshow('rgb',img1)
# cv2.imshow('gray',img)
# cv2.waitKey(0)
#灰度 方式2
# dst=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)#颜色空间转换
# cv2.imshow('gray1',dst)
# cv2.waitKey(0)
import numpy as np
#灰度 方式3
#RGB R=G=B=GRAY
# dst=np.zeros((height,width,3),np.uint8)
# for i in range(height):
# for j in range(width):
# (b,g,r)=img1[i,j]
# gray=(int(b)+int(g)+int(r))/3
# dst[i,j]=np.uint8(gray)
# cv2.imshow('dst',dst)
# cv2.waitKey(0) #灰度 方式4
# dst=np.zeros((height,width,3),np.uint8)
# for i in range(height):
# for j in range(width):
# (b,g,r)=img1[i,j]
# gray=int(b)*0.114+int(g)*0.587+int(r)*0.299
# dst[i,j]=np.uint8(gray)
# cv2.imshow('dst',dst)
# cv2.waitKey(0) #算法优化
# dst=np.zeros((height,width,3),np.uint8)
# for i in range(height):
# for j in range(width):
# (b,g,r)=img1[i,j]
# b=int(b)
# g=int(g)
# r=int(r)
# # gray=(b*1+g*2+r*1)/4#1+2+1=4 加的值越大越精确
# gray=(b*300+g*200+r*500)/1000
# dst[i,j]=gray
#
# cv2.imshow('优化',dst)
# cv2.waitKey(0)

2、颜色反转,底板效果

# # 灰度图片  255-px
# gray=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
# dst=np.zeros((height,width,1),np.uint8)
# for i in range(height):
# for j in range(width):
# dstpx=255-gray[i,j]
# dst[i,j]=dstpx
#
# cv2.imshow('dst',dst)
# cv2.waitKey(0)
# **************************
# RGB颜色反转
# dst=np.zeros((height,width,3),np.uint8)
# for i in range(height):
# for j in range(width):
# (b,g,r)=img1[i,j]
# dst[i,j]=[255-b,255-g,255-r]
#
# cv2.imshow('dst',dst)
# cv2.waitKey(0)

3、马赛克

# 马赛克
# dst=np.zeros((height,width,3),np.uint8)
# dst=img1
# for i in range(100,150):
# for j in range(50,150):
# if i%10==0 and j%10==0:
# for n in range(10):
# for m in range(10):
# print(img1[i,j])
# # (b,g,r)=img1[i,j]
# # dst[i+n,j+m]=(b,g,r)
# dst[i+n,j+m]=img1[i,j]
# cv2.imshow('masaike',dst)
# cv2.waitKey(0)

4、毛玻璃

# dst=np.zeros(img1.shape,np.uint8)
# 随机数范围mm
# mm=8
#
# for i in range(height):
# for j in range(width):
# index=int(random.random()*8)
# if i+8 < height and j+8 < width:
# dst[i,j]=img1[i+index,j+index]
# else:
# dst[i,j] = img1[i-index, j-index]
#
# cv2.imshow('maoboli',dst)
# cv2.waitKey(0)

5、图片融合

img=cv2.imread('a.jpg',1)
img=cv2.resize(img,(256,256)) roiH=int(height)
roiW=int(width)
# imgROI融合区域大小,两张图片一样大小
imgROI=img[0:roiH,0:roiW]
img1ROI=img1[0:roiH,0:roiW]
dst=np.zeros(img.shape,np.uint8) dst=cv2.addWeighted(imgROI,0.6,img1ROI,0.4,0) cv2.imshow('ss',dst)
cv2.waitKey(0)

6、边缘检测

img=cv2.imread('a.jpg',1)

#1 gray  2 高斯滤波 3 canny

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 高斯滤波 去除干扰像素
imgG=cv2.GaussianBlur(gray,(3,3),0)
# 图像卷积
dst1=cv2.Canny(img,50,50)
dst2=cv2.Canny(imgG,50,50)
cv2.imshow('dst2_meiyoulvbo',dst1)
cv2.imshow('lvbo',dst2)
cv2.waitKey(0)

7、浮雕效果

img=cv2.imread('b.png',1)
cv2.imshow('src',img)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst=np.zeros((height,width,1),np.uint8)
for i in range(height):
for j in range(width-1):
dst[i,j]=gray[i,j]-gray[i,j+1]+150
if dst[i,j]>255:
dst[i,j]=255
if dst[i,j]<0:
dst[i, j]=0
cv2.imshow('dst',dst)
cv2.waitKey(0)

8、对比度

import cv2 as cv
img = cv.imread('3.jpg')
cv.imshow('src', img)
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
cv.imshow('gray', gray)
# 对比度
clahe = cv.createCLAHE(clipLimit=5, tileGridSize=(8, 8))
dst = clahe.apply(gray)
cv.imshow('dst', dst)
cv.waitKey(0)

效果:

OpenCV 图像特效的更多相关文章

  1. 跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效

    摘要:本文讲解常见的图像特效处理,从而让读者实现各种各样的图像特殊效果,并通过Python和OpenCV实现. 本文分享自华为云社区<[Python图像处理] 二十四.图像特效处理之毛玻璃.浮雕 ...

  2. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...

  3. Android 中的图像特效(Matrix)

    以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,现在在Android中有一个Matrix类,它的中文意思就是矩阵.Matrix主要是用于图像的缩放.平移.旋转.扭曲等操作.图像处理,主要用到的 ...

  4. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  5. Opencv 图像叠加 添加水印

    Opencv 图像叠加 添加水印 C++: void Mat::copyTo(OutputArray m) const C++: void Mat::copyTo(OutputArray m, Inp ...

  6. opencv图像读取-imread

    前言 图像的读取和保存一定要注意imread函数的各个参数及其意义,尽量不要使用默认参数,否则就像数据格式出现错误(here)一样,很难查找错误原因的: re: 1.opencv图像的读取与保存; 完

  7. 学习 opencv---(12)OpenCV 图像金字塔:高斯金字塔,拉普拉斯金字塔与图片尺寸缩放

    在这篇文章里,我们一起学习下 图像金字塔 的一些基本概念,如何使用OpenCV函数pyrUp和pyrDown 对图像进行向上和向下采样,以及了解专门用于缩放图像尺寸的resize函数的用法.此博文一共 ...

  8. [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget(第二部分)

    本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...

  9. [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)

    本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...

随机推荐

  1. Android四大组件之一 -- Service详解

    相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序 ...

  2. Google地图开发

    配置Google API SDK 如果要想进行Google Map或者说是定位服务的开发,那么肯定需要下载一个新的SDK的支持. 1.点击Android SDK Manager,下载SDK. 2.直接 ...

  3. tabs高度自适应方法

    1.去掉easyui-tabs类属性,改为id=tabs 2.用js控制高度

  4. 解决Oracle死锁问题,及产生的原因

    文章来源:http://www.cnblogs.com/leijh/archive/2012/10/15/2724165.html 最近老是发现应该执行操作数据库的代码时发现执行不了,查了一下发现是数 ...

  5. java命令行指定log4j2

    java -Dlog4j.configurationFile=directory/file.xml

  6. HDFS恢复误删操作的方法

    1.通过垃圾箱恢复 使用这种方式的前提是在hdfs上面开启trash功能,默认是没有开启的.interval的值默认为0,单位是分钟.只需要在hadoop的配置文件core-site.xml中添加下面 ...

  7. SPA页面初试

    之前一直很好奇,SPA应用到底是怎么实现的,昨天无意间看到了有一篇介绍的文章,就想着来试一下水(以下根据我的理解所写,可能会让你看的云里雾里,如果想加深了解,最好先了解下window.location ...

  8. 在Java的反射中,Class.forName和ClassLoader的区别

    前言 最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别.当时没有想出来后来自己研究了一下就写下来记录一下. 解释 在java中Cl ...

  9. 基于vue实现一个简单的MVVM框架(源码分析)

    不知不觉接触前端的时间已经过去半年了,越来越发觉对知识的学习不应该只停留在会用的层面,这在我学jQuery的一段时间后便有这样的体会. 虽然jQuery只是一个JS的代码库,只要会一些JS的基本操作学 ...

  10. element-ui2源码修改小问题

    最近element-ui升级到2了,添加了不少功能,可喜可贺,可喜可贺! 然而,产品的需求依然那么刁钻,上传与删除图片还是要去改源码,为了同时用新的ele,决定在2中改源码 然而,遇到问题了. 一开始 ...