OpenCV 图像特效
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 图像特效的更多相关文章
- 跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效
摘要:本文讲解常见的图像特效处理,从而让读者实现各种各样的图像特殊效果,并通过Python和OpenCV实现. 本文分享自华为云社区<[Python图像处理] 二十四.图像特效处理之毛玻璃.浮雕 ...
- OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...
- Android 中的图像特效(Matrix)
以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,现在在Android中有一个Matrix类,它的中文意思就是矩阵.Matrix主要是用于图像的缩放.平移.旋转.扭曲等操作.图像处理,主要用到的 ...
- 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...
- Opencv 图像叠加 添加水印
Opencv 图像叠加 添加水印 C++: void Mat::copyTo(OutputArray m) const C++: void Mat::copyTo(OutputArray m, Inp ...
- opencv图像读取-imread
前言 图像的读取和保存一定要注意imread函数的各个参数及其意义,尽量不要使用默认参数,否则就像数据格式出现错误(here)一样,很难查找错误原因的: re: 1.opencv图像的读取与保存; 完
- 学习 opencv---(12)OpenCV 图像金字塔:高斯金字塔,拉普拉斯金字塔与图片尺寸缩放
在这篇文章里,我们一起学习下 图像金字塔 的一些基本概念,如何使用OpenCV函数pyrUp和pyrDown 对图像进行向上和向下采样,以及了解专门用于缩放图像尺寸的resize函数的用法.此博文一共 ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget(第二部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
随机推荐
- 线程中的同步辅助类Semaphore
同步辅助类 线程池 并发集合类 都是在线程同步的基础上增加了一些同步的东西,在线程同步的基础上更好的实现线程同步.实现的效率更高,更方便而已. 多线程并不是很难 需要你把代码写出来...然后分析运 ...
- 七、Framework类库
1.Framework类库简介 .Net Framework类库包含Framework类库(Framework Class Library,FCL).FCL是一组DLL程序集的统称,其中含有数千个类型 ...
- Android get current Locale, not default
he default Locale is constructed statically at runtime for your application process from the system ...
- 牛客网Java刷题知识点float数据在内存中是怎么存储的
不多说,直接上干货! float类型数字在计算机中用4个字节存储. 遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e (1)底数部分 使用二进制数来表示此浮点数的实际值 (2)指 ...
- CNN初探
CNN初探 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7450413.html 前言 这篇博客主要讲解卷积神经网络(CNN) ...
- sql的存储过程实例--动态根据表数据复制一个表的数据到另一个表
动态根据表数据复制一个表的数据到另一个表 把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中 如:mac_id=12345678910,则后两位10 对应表为track ...
- SpringBoot入门 (十二) 定时任务
本文记录在SpringBoot中使用定时任务. 在我们的项目中,经常需要用到定时任务去帮我们做一些事情,比如服务状态监控,业务数据状态的更改等,SpringBoot中实现定时任务有2中方案,一种是自带 ...
- Java MongoDB
package com.dys.mongo; import java.io.IOException; import java.util.ArrayList; import java.util.List ...
- Apache 源码安装
8.20]# make[root@yahoo pcre-8.20]# make install 二.安装apache1.下载httpd-2.4.3.tar.gz,地址是:http://httpd.ap ...
- 第四章 使用Servlet处理HTTP请求
回顾上一章的知识: 请求网络资源HTTP会发出多个请求并得到响应 设置响应状态行关键是设置状态码 在向客户端输出内容之前要设置状态码和响应头 设置响应头让Servlet发挥最大功能 消息体可以用文 ...