直接读取图片

def display_img(file="p.jpeg"):
  img = cv.imread(file)
  print (img.shape)
  cv.imshow('image',img)
  cv.waitKey(0)
  cv.destroyAllWindows()

读取灰度图片

def display_gray_img(file="p.jpeg"):
  img = cv.imread(file,cv.IMREAD_GRAYSCALE)
  print (img.shape)
  cv.imshow('image',img)
  cv.waitKey(0)
  cv.destroyAllWindows()
  cv.imwrite("gray_img.png",img)

读取视频

def display_video(file="sj.mp4"):
  v = cv.VideoCapture(file)
  if v.isOpened():
    open,frame = v.read()
  else:
    open=False

  while open:
    ret,frame = v.read()
    if frame is None:
      break
  
    if ret == True:
      gray = cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
      cv.imshow("result",gray)
      if cv.waitKey(10) & 0xFF == 27:
        break
  v.release()
  v.waitKey(0)
  v.destroyAllWindows()

截取图片

def get_frame_img(file="p.jpeg"):
  img = cv.imread(file)
  print (img.shape)
  cat = img[0:200,0:200]
  cv.imshow('get_frame_img',cat)
  cv.waitKey(0)
  cv.destroyAllWindows()

提取rgb通道

def extrats_rgb_img(file="p.jpeg"):
  img = cv.imread(file)
  b,g,r = cv.split(img)
  print (b.shape,g.shape,r.shape)
  new_img = cv.merge((b,g,r))
  print (new_img.shape)

  copy_img_r = img.copy()
  copy_img_r[:,:,0]=0
  copy_img_r[:,:,1]=0
  cv.imshow("r_img",copy_img_r)

  copy_img_g = img.copy()
  copy_img_g[:,:,0]=0
  copy_img_g[:,:,2]=0
  cv.imshow("g_img",copy_img_g)

  copy_img_b = img.copy()
  copy_img_b[:,:,1]=0
  copy_img_b[:,:,2]=0
  cv.imshow("b_img",copy_img_b)

边界填充

def border_fill_img(file="p.jpeg"):
  border_type = [
    cv.BORDER_REPLICATE,#复制法,复制边缘
    cv.BORDER_REFLECT, #反射法,对感兴趣的图像中的像素在两边进行复制
    cv.BORDER_REFLECT_101,#反射法,以边缘像素为轴,对称
    cv.BORDER_WRAP,#外包装法
    cv.BORDER_CONSTANT#常量法,常量填充
    ]
  border_title = [
    "REPLICATE",
    "REFLECT",
    "REFLECT_101",
    "WRAP",
    "CONSTANT"
    ]
  img = cv.imread(file)
  top_size,bottom_size,left_size,right_size = (50,50,50,50)
  plt.subplot(231)
  plt.imshow(img,"gray")#原始图像
  plt.title("ORIGNAL")

  for i in range(len(border_type)):
    result = cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,border_type[i])
    plt.subplot(232+i)
    plt.imshow(result,"gray")
    plt.title(border_title[i])

  plt.show()

在这里插入图片描述

图像融合,变换

def img_compose(file1="tu.jpeg",file2="gui.jpeg"):
  img_1 = cv.imread(file1)
  img_2 = cv.imread(file2)
  print (img_1.shape)
  print (img_2.shape)
  img_1= cv.resize(img_1,(500,500))
  img_2= cv.resize(img_2,(500,500))
  print (img_1.shape)
  print (img_2.shape)
  res = cv.addWeighted(img_1,0.4,img_2,0.6,0)
  plt.imshow(res)
  plt.show()


  res = cv.resize(img_1,(0,0),fx=3,fy=1)
  plt.imshow(res)
  plt.show()

  res = cv.resize(img_2,(0,0),fx=1,fy=3)
  plt.imshow(res)
  plt.show()

在这里插入图片描述

二值化处理

def Binarization(filepath):
  img = cv2.imread(filepath,0)
  limit = 120
  ret,thresh=cv2.threshold(img,limit,255,cv2.THRESH_BINARY_INV)
  plt.imshow(thresh,'gray')
  plt.show()
  return thresh
Binarization('t1.jpg')

到此这篇关于Python opencv操作深入详解的文章就介绍到这了,更多相关Python opencv操作内容请搜索乐虎体育以前的文章或继续浏览下面的相关文章希望大家以后多多支持乐虎体育!

Python opencv操作深入详解的更多相关文章

  1. 用OpenCV进行年龄和性别检测的实现示例

    本文主要介绍了用OpenCV进行年龄和性别检测的实现示例,分享给大家,具体如下:在本文中,我将带您完成用 Python 进行机器学习的年龄和性别检测的任务。年龄和性别检测属于计算机视觉的范畴,因此我将在Python中使用OpenCV库。在开始使用Python进行年龄和性别检测任务之前,我将首先带您了......

  2. Python 日志打印之logging.getLogger源码分析

    日志打印之logging.getLogger源码分析日志打印之logging.getLogger源码分析By:授客 QQ:1033553122 #实践环境WIN 10Python 3.6.5#函数说明logging.getLogger(name=None)getLogger函数位于logging/_......

  3. python pandas合并Sheet,处理列乱序和出现Unnamed列的解决

    使用python中的pandas,xlrd,openpyxl库完成合并excel中指定sheet的操作# -*- coding: UTF-8 -*- import xlrdimport pandas as pdfrom pandas import DataFramefrom openpyxl imp......

  4. 如何用python批量调整视频声音

    今天来研究python中moviepy模块的用途近来有大量处理视频的需求,常会碰到一个问题是下载的视频音量过小,会需要将它调大声,虽然有在线工具VideoLouder可以免费调整视频音量大小,但毕竟若量很大的话一个一个上传视频也是挺麻烦的事情,因此决定再用程序帮忙解决。使用教学基础程序调整一个视频音......

  5. 详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    获取要爬取的URL爬虫前期工作用Pycharm打开项目开始写爬虫文件字段文件items# Define here the models for your scraped items## See documentation in:# https://docs.scrapy.org/en/latest/......

  6. Python用requests库爬取返回为空的解决办法

    首先介?一下我??用360搜索派取城市排名前20。我们爬取的网址:https://baike.so.com/doc/24368318-25185095.html我们要爬取的内容:html字段:robots协议:现在我们开始用python IDLE 爬取import requestsr = reque......

  7. 通过python-pptx模块操作ppt文件的方法

    ppt通过其精美的可视化技巧以及良好的演示效果,成为了职场人士的必备技能。ppt的设计是一门大学问,无论是设计技巧,还是操作方法,都衍生出了专门的课程。本文主要介绍python操作ppt的技巧,编程的优势在于处理速度,对于高大上的ppt设计,还是需要"以人为本", 所以该模块的使......

  8. pandas调整列的顺序以及添加列的实现

    在对excel的操作中,调整列的顺序以及添加一些列也是经常用到的,下面我们用pandas实现这一功能。1、调整列的顺序>>> df = pd.read_excel(r'D:/myExcel/1.xlsx')>>> dfA B C D0 bob 12 78 871......

  9. 10步写了个Django网站

    Django做网站只要10步,真的只有10步,不信?咱们来数数……今天主要讲解用Pycharm编辑器搭建网站,网站功能是 实现在局域网中快速传递大文件! 比如:同事要给你个1G的文件,你丢一个网站链接给他。他上传后,文件就在你电脑啦!演示效果如下动图:从电脑F磁盘通过浏览器上传,在D盘出现文件,这里......

  10. 利用python+request通过接口实现人员通行记录上传功能

    前言:脚本中包含以下几点常用功能:(1)实时获取当前时间(2)while循环提交(3)上传图片文件一、上述功能解释:(1)实时获取当前时间,下面展示三种格式化后的日期代码示例#!/usr/bin/python# -*- coding: UTF-8 -*-import time# 格式化成2016-0......

随机推荐

  1. 如何查看postgres数据库端口

    如下所示:Linux:netstat -a | grep PGSQL示例输出:[highgo@hgdbt data]$ netstat -a | grep PGSQLunix 2 [ ACC ] STREAM LISTENING 14710 /tmp/.s.PGSQL.5866补充:post......

  2. pytorch 实现冻结部分参数训练另一部分

    1)添加下面一句话到模型中for p in self.parameters():p.requires_grad = False比如加载了resnet预训练模型之后,在resenet的基础上连接了新的模快,resenet模块那部分可以先暂时冻结不更新,只更新其他部分的参数,那么可以在下面加入上面那句话......

  3. MySQL 利用frm文件和ibd文件恢复表数据

    frm文件和ibd文件简介 在MySQL中,如果我们使用了默认的存储引擎innodb创建一张表,那么在文件夹下面就会出现表名.frm和表名.ibd两个文件,如果我们使用的是Myisam存储引擎,那么就会出现三个文件,这里我们给出例子:[root@ /data/yeyz]#lltotal ......

  4. Vue3(三)CND + ES6的import + 工程化的目录结构

    突发奇想这几天整理了一下vue的几种使用方式,对比之后发现有很多相似之处,那么是不是可以混合使用呢?比如这样:vue的全家桶和UI库,采用传统的方式加载(CND、script)。自己写的js代码,采用ES6的 import 方式加载。目录结构采用vuecli建立的项目的目录结构。入口页面用vite项......

  5. 超有用的linux笔记

    名词解释根目录说明tree -L 1.├── bin -> usr/bin # 英语binary的缩写,表示”二进制文件“,bin目录包含了会被所有用户使用的可执行程序├── boot # 英语boot表示”启动“,boot目录包含与Linux启动密切相关的文件├── dev # 英语devi......

  6. ASP.Net Core 5.0 MVC AppSettings配置文件读取,Startup 类中ConfigureServices 方法、Configure 方法的使用

    配置文件读取1. 新建FirstController控制器在appsettings文件内容替换成以下代码{ "Position": { "Title": "EditTool For human", "Name": &qu......

  7. PostgreSQL之INDEX 索引详解

    之前总结了PostgreSQL的序列相关知识,今天总结下索引。我们都知道,数据库索引最主要的作用是可以提高检索数据的速度,但是索引也不是越多越好。因为索引会增加数据库的存储空间,查询数据是要花较多的时间。1、创建索引SQL语句如下:CREATE INDEX idx_commodityON commo......

  8. 10步写了个Django网站

    Django做网站只要10步,真的只有10步,不信?咱们来数数……今天主要讲解用Pycharm编辑器搭建网站,网站功能是 实现在局域网中快速传递大文件! 比如:同事要给你个1G的文件,你丢一个网站链接给他。他上传后,文件就在你电脑啦!演示效果如下动图:从电脑F磁盘通过浏览器上传,在D盘出现文件,这里......

  9. Python抓取淘宝IP地址数据

    def fetch(ip):url = 'http://ip.taobao.com/service/getIpInfo.php?ip=' + ipresult = []try:response = urllib.urlopen(url).read()jsondata = json.loads(res......

  10. C# 两个类的实例之间相同属性的值的复制

    在进行实体转换操作的时候通常需要在对两个实体之间两个属性字段相同的类要进行一个互相的转换,我们要把a对象的所有字段的值都复制给b对象,我们只能用b.属性=a.属性来写,如果属性字段太多的话,就要写很多行复制语句,并且还容易漏掉一些,这个时候可以利用c#的反射来实现复制。1.适用于创建实体的时候从一个......