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 ...
随机推荐
- git提交的问题
1. Pull is not possible because you have unmerged files.症状:pull的时候$ git pull Pull is not possible be ...
- MapReduce中的partitioner
1.日志源文件: 1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 ...
- spring mvc 数据转换
项目目录结构 User.java package org.mythsky.springmvcdemo.model; import org.springframework.format.annotati ...
- Android在代码中获取meta标签内容
最近写SDK需要获取<meta>标签的值,网上资料很多~分享是件好事~我很快就找到了相关资料. 下面贴上代码: ApplicationInfo appInfo = null; String ...
- Vue笔记:使用node开发vue入门实例
安装NPM 首先在命令终端输入 npm -v 检测是否安装 npm.如果没有,按照下面教程进行安装. 下载地址: nodejs中文网 到官网下载自己系统对应的版本,这里我们下载Windows系统的64 ...
- PTA (Advanced Level) 1004 Counting Leaves
Counting Leaves A family hierarchy is usually presented by a pedigree tree. Your job is to count tho ...
- redis使用watch秒杀抢购思路
1.使用watch,采用乐观锁 2.不使用悲观锁,因为等待时间非常长,响应慢 3.不使用队列,因为并发量会让队列内存瞬间升高 测试代码: import java.util.concurrent.Exe ...
- (转)mysql升级5.5.20时遇到的问题:1548-Cannot load from mysql.proc. The table is probably corrupted
LINUX下将mysql从5.1升级至5.5后,发现存储过程不能用了.创建和使用存储过程时就会提示Cannot load from mysql.proc. The table is probably ...
- MFC函数—CWinApp::LoadStdProfileSettings
从 InitInstance 成员函数内调用该函数,启用和加载最近使用的(MRU)文件和最后浏览状态的列表.void LoadStdProfileSettings( UINT nMaxMRU = ...
- (转) C# Async与Await的使用
(转) C# Async与Await的使用 class Program { static void Main(string[] args) { Console.WriteLine("主线程测 ...