标签分类
技术文章
当前位置:主页 > 计算机编程 > python > Python OpenCV处理图像之滤镜和图像运算

Python OpenCV处理图像滤镜和图像运算用法知识点

  • 发布时间:
  • 作者:码农之家原创
  • 点击:147

Python OpenCV处理图像之滤镜和图像运算

这篇文章主要知识点是关于python,OpenCV,滤镜,图像,Python OpenCV处理图像之滤镜和图像运算,的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python极客项目编程
  • 类型:Python编程大小:6.5 MB格式:PDF出版:人民邮电出版社作者:Mahesh Venkitachalam
立即下载

更多相关的学习资源可以参阅 程序设计电子书Python电子书、等栏目。

本文实例为大家分享了Python OpenCV处理图像之滤镜和图像运算的具体代码,供大家参考,具体内容如下

0x01. 滤镜

喜欢自拍的人肯定都知道滤镜了,下面代码尝试使用一些简单的滤镜,包括图片的平滑处理、灰度化、二值化等:

import cv2.cv as cv
 
image=cv.LoadImage('img/lena.jpg', cv.CV_LOAD_IMAGE_COLOR) #Load the image
cv.ShowImage("Original", image)
 
grey = cv.CreateImage((image.width ,image.height),8,1) #8depth, 1 channel so grayscale
cv.CvtColor(image, grey, cv.CV_RGBA2GRAY) #Convert to gray so act as a filter
cv.ShowImage('Greyed', grey)
 
# 平滑变换
smoothed = cv.CloneImage(image)
cv.Smooth(image,smoothed,cv.CV_MEDIAN) #Apply a smooth alogrithm with the specified algorithm cv.MEDIAN
cv.ShowImage("Smoothed", smoothed)
 
# 均衡处理
cv.EqualizeHist(grey, grey) #Work only on grayscaled pictures
cv.ShowImage('Equalized', grey)
 
# 二值化处理
threshold1 = cv.CloneImage(grey)
cv.Threshold(threshold1,threshold1, 100, 255, cv.CV_THRESH_BINARY)
cv.ShowImage("Threshold", threshold1)
 
threshold2 = cv.CloneImage(grey)
cv.Threshold(threshold2,threshold2, 100, 255, cv.CV_THRESH_OTSU)
cv.ShowImage("Threshold 2", threshold2)
 
element_shape = cv.CV_SHAPE_RECT
pos=3
element = cv.CreateStructuringElementEx(pos*2+1, pos*2+1, pos, pos, element_shape)
cv.Dilate(grey,grey,element,2) #Replace a pixel value with the maximum value of neighboors
#There is others like Erode which replace take the lowest value of the neighborhood
#Note: The Structuring element is optionnal
cv.ShowImage("Dilated", grey)
 
cv.WaitKey(0)

0x02. HighGUI

OpenCV 内建了一套简单的 GUI 工具,方便我们在处理界面上编写一些控件,动态的改变输出:

import cv2.cv as cv
 
im = cv.LoadImage("img/lena.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE)
thresholded = cv.CreateImage(cv.GetSize(im), 8, 1)
 
def onChange(val):
  cv.Threshold(im, thresholded, val, 255, cv.CV_THRESH_BINARY)
  cv.ShowImage("Image", thresholded)
 
# 创建一个滑动条控件
onChange(100) #Call here otherwise at startup. Show nothing until we move the trackbar
cv.CreateTrackbar("Thresh", "Image", 100, 255, onChange) #Threshold value arbitrarily set to 100
 
cv.WaitKey(0)

0x03. 选区操作

有事希望对图像中某一块区域进行变换等操作,就可以使用如下方式:

import cv2.cv as cv
 
im = cv.LoadImage("img/lena.jpg",3)
 
# 选择一块区域
cv.SetImageROI(im, (50,50,150,150)) #Give the rectangle coordinate of the selected area
 
# 变换操作
cv.Zero(im)
#cv.Set(im, cv.RGB(100, 100, 100)) put the image to a given value
 
# 解除选区
cv.ResetImageROI(im) # Reset the ROI
 
cv.ShowImage("Image",im)
 
cv.WaitKey(0)

0x04. 运算

对于多张图片,我们可以进行一些运算操作(包括算数运算和逻辑运算),下面的代码将演示一些基本的运算操作:

import cv2.cv as cv#or simply import cv
 
im = cv.LoadImage("img/lena.jpg")
im2 = cv.LoadImage("img/fruits-larger.jpg")
cv.ShowImage("Image1", im)
cv.ShowImage("Image2", im2)
 
res = cv.CreateImage(cv.GetSize(im2), 8, 3)
 
# 加
cv.Add(im, im2, res) #Add every pixels together (black is 0 so low change and white overload anyway)
cv.ShowImage("Add", res)
 
# 减
cv.AbsDiff(im, im2, res) # Like minus for each pixel im(i) - im2(i)
cv.ShowImage("AbsDiff", res)
 
# 乘
cv.Mul(im, im2, res) #Multiplie each pixels (almost white)
cv.ShowImage("Mult", res)
 
# 除
cv.Div(im, im2, res) #Values will be low so the image will likely to be almost black
cv.ShowImage("Div", res)
 
# 与
cv.And(im, im2, res) #Bit and for every pixels
cv.ShowImage("And", res)
 
# 或
cv.Or(im, im2, res) # Bit or for every pixels
cv.ShowImage("Or", res)
 
# 非
cv.Not(im, res) # Bit not of an image
cv.ShowImage("Not", res)
 
# 异或
cv.Xor(im, im2, res) #Bit Xor
cv.ShowImage("Xor", res)
 
# 乘方
cv.Pow(im, res, 2) #Pow the each pixel with the given value
cv.ShowImage("Pow", res)
 
# 最大值
cv.Max(im, im2, res) #Maximum between two pixels
#Same form Min MinS
cv.ShowImage("Max",res)
 
cv.WaitKey(0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到儿童python编程入门书籍推、 vue项目中使用md5加密以及、 解决axios.interceptors.respon、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:Python读mat文件转为csv的实例代码详解

下一篇:Python如何查看list中是否含有某元素

展开 +

收起 -

学习笔记
网友NO.837567

如何构建OpenCV和Python环境

Open Source Computer Vision Library.OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、MacOS操作系统上。它轻量级而且高效——由一系列 C 函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。最新版本是3.1 ,2016年1月29日发布。 简言之,通过openCV可实现计算机图像、视频的编辑。广泛应用于图像识别、运动跟踪、机器视觉等领域。 一切就绪以后以管理员身份运行cmd或PowerShell。依次输入以下命令:(推荐学习:Python视频教程) pip install --upgrade setuptoolspip install numpy Matplotlibpip install opencv-python opencv环境已经整好,就是这么简单。只需要numpy、Matplotlib、opencv-python三个包,都不大很快就可以下好,如果下载中间出现error或wrong,重新输入命令即可。 测试 #导入cv模块import cv2 as cv#读取图像,支持 bmp、jpg、png、tiff 等常用格式img = cv.imread(D:\python\test.jpg)#创建窗口并显示图像cv.namedWindow(Image)cv.imshow(Image,img)cv.waitKey(0)#释放窗口cv2.destroyAllWindows() 运行以上脚本,如果可以显示出测试的图像,则环境搭建成功 更多Python相关技术文章,请访问Python教程栏目进行学习! 以上就是如何构建OpenCV和Python环……

网友NO.281658

基于OpenCV python3实现证件照换背景的方法

简述 生活中经常要用到各种要求的证件照电子版,红底,蓝底,白底等,大部分情况我们只有其中一种,所以通过技术手段进行合成,用ps处理证件照,由于技术不到位,有瑕疵,所以想用pythonnbsp; 如图所示蓝色的背景在图中用白色表示,白色区域就是要替换的部分,但是黑色区域内有白点干扰,所以进一步优化。 腐蚀和膨胀 #腐蚀膨胀erode=cv2.erode(mask,None,iterations=1)cv2.imshow('erode',erode)dilate=cv2.dilate(erode,None,iterations=1)cv2.imshow('dilate',dilate) 经过腐蚀和膨胀操作后如下图 处理后图像单独白色点消失。 替换背景色 遍历全部像素点,如果该颜色为dilate里面为白色(255)则说明该点所在背景区域,于是在原图img中进行颜色替换。 #遍历替换for i in range(rows): for j in range(cols): if dilate[i,j]==255: img[i,j]=(0,0,255)#此处替换颜色,为BGR通道cv2.imshow('res',img) 最终结果如下 (图片源于网络,已经马赛克处理,如有侵权,私信立即删除) 总结 最开始想直接通过遍历全图进行替换背景色,但是图像中难免有些像素点和背景色一样,造成了干扰,导致最后结果不尽人意,所以想通过这种方法进行处理。显然最后有明显的ps痕迹。 最后贴上完整代码,不足之处欢迎各位指正! import cv2import numpy as npimg=cv2.imread('zjz.jpg')#缩放rows,cols,channels = img.shapeimg=cv2.resi……

网友NO.642477

python+opencv 读取文件夹下的所有图像并批量保存ROI的方法

如下所示: import cv2import os import numpy as np root_path = "I:/Images/2017_08_03/"dir = root_path+"images"+"/"count = 0for root,dir,files in os.walk(dir): for file in files: srcImg = cv2.imread(root_path+"images"+"/"+str(file)) roiImg = srcImg[36:521, 180:745] cv2.imwrite(root_path+"Image"+"/"+str(file),roiImg) count +=1 if count%400==0: print count 以上这篇python+opencv 读取文件夹下的所有图像并批量保存ROI的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.170642

python使用opencv驱动摄像头的方法

如下所示: #coding:utf-8 import cv2import sysfrom PIL import Image def CatchUsbVideo(window_name, camera_idx): cv2.namedWindow(window_name) # 捕捉摄像头 cap = cv2.VideoCapture(camera_idx) while cap.isOpened(): ok, frame = cap.read() # 读取一帧数据 if not ok: break # 显示图像 cv2.imshow(window_name, frame) c = cv2.waitKey(10) if c & 0xFF == ord('q'): break # 释放摄像头并销毁所有窗口 cap.release() cv2.destroyAllWindows() if __name__ == '__main__': CatchUsbVideo("FaceRect", 0) 以上这篇python使用opencv驱动摄像头的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明