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. 线程中的同步辅助类Semaphore

    同步辅助类  线程池  并发集合类 都是在线程同步的基础上增加了一些同步的东西,在线程同步的基础上更好的实现线程同步.实现的效率更高,更方便而已. 多线程并不是很难 需要你把代码写出来...然后分析运 ...

  2. 七、Framework类库

    1.Framework类库简介 .Net Framework类库包含Framework类库(Framework Class Library,FCL).FCL是一组DLL程序集的统称,其中含有数千个类型 ...

  3. Android get current Locale, not default

    he default Locale is constructed statically at runtime for your application process from the system ...

  4. 牛客网Java刷题知识点float数据在内存中是怎么存储的

    不多说,直接上干货! float类型数字在计算机中用4个字节存储. 遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e (1)底数部分 使用二进制数来表示此浮点数的实际值 (2)指 ...

  5. CNN初探

    CNN初探 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7450413.html 前言 这篇博客主要讲解卷积神经网络(CNN) ...

  6. sql的存储过程实例--动态根据表数据复制一个表的数据到另一个表

    动态根据表数据复制一个表的数据到另一个表 把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中 如:mac_id=12345678910,则后两位10 对应表为track ...

  7. SpringBoot入门 (十二) 定时任务

    本文记录在SpringBoot中使用定时任务. 在我们的项目中,经常需要用到定时任务去帮我们做一些事情,比如服务状态监控,业务数据状态的更改等,SpringBoot中实现定时任务有2中方案,一种是自带 ...

  8. Java MongoDB

    package com.dys.mongo; import java.io.IOException; import java.util.ArrayList; import java.util.List ...

  9. Apache 源码安装

    8.20]# make[root@yahoo pcre-8.20]# make install 二.安装apache1.下载httpd-2.4.3.tar.gz,地址是:http://httpd.ap ...

  10. 第四章 使用Servlet处理HTTP请求

      回顾上一章的知识: 请求网络资源HTTP会发出多个请求并得到响应 设置响应状态行关键是设置状态码 在向客户端输出内容之前要设置状态码和响应头 设置响应头让Servlet发挥最大功能 消息体可以用文 ...