opencv学习(一)图像的基本操作

news2024/11/15 15:57:04
  1. 数据的读取

  • cv2.IMREAD_COLOR:彩色图像

  • cv2.IMREAD_GRAYSCALE:灰度图像

import cv2 
img = cv2.imread('E:/opencv/open-cv/2-7/cat.jpg',1)

cv2.imshow("img", img)
cv2.waitKey(0)    
cv2.destroyAllWindows() 
  • cv2.imread()读取图片,当括号里面是1时,也就是替代了cv2.IMREAD_COLOR,得到彩色图

  • cv2.imread()读取图片,当括号里面是0时,替代了cv2.IMREAD_GRAYSCALE,得到灰度图

  • cv.inshow()函数为创建一个展示窗口,括号里面分别为图片名字读取哪个图片

  • cv2.waitKey(0) 等待时间多久,其中括号中0表示任意键可以中止显示图片。

  • cv2.destroyAllWindows() 关闭窗口。

2.opencv图片颜色转换

import cv2 
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline 

img=cv2.imread('E:/opencv/open-cv/2-7/cat.jpg')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow("img_gray", img_gray)
cv2.waitKey(0)    
cv2.destroyAllWindows() 
  • 由于cv2读取的图像格式为BGR,而Matplotlib画的是RGB,因此需要对格式进行转换。

cv2.COLOR_BGR2GRAY转化成灰度图,cv2.COLOR_BGR2RGB转换成RGB图,cv2.COLOR_BGR2HSV转换成HSV图。

其中HSV分别表示如下,转换图片也如下图所示:

  • H - 色调

  • S - 饱和度

  • V值(强度)

3.图像保存

cv2.inwrite('cat.png',img_gray)
img_gray.type()
  • 只需要输入cv2.inwrite()函数即可保存图像。

  • img_gray.type()可以查看数据类型

4.视频图像的读取

vc = cv2.VideoCapture('E:/opencv/open-cv/2-7/test.mp4')
  • cv2.VideoCapture()函数用来捕捉摄像头,控制不同的设备。

if vc.isOpened():
    open, frame =vc.read()
else:
    open = False
print(frame)
  • 检查视频是否读取错误,其中open只有两个值要么True,要么是Falseframe为读取一帧一帧的值。

while open:
    ret, frame = vc.read()
    #print(ret)
    if frame is None:
        break
    if ret == True:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow('result',gray)
        if cv2.waitKey(20)& 0xFF==27:
            break

vc.release()    
cv2.destroyAllWindows()
  • 其中cv2.waitKey(20)& 0xFF==27,这句就是如果期间有按键按下返回的值就是按下按键的ASCII值,就比如esc键的ASCII值是27,cv2.waitKey(20) & 0xFF==27就是当按下按键是esc的时候返回true。0xFF意思是16进制的FF也就是八位2进制数1111 1111,如果引入& 0xFF==27 那么得出的结果永远是后八位,这样就可以排除其他按键的干扰

  • vc.release() 释放硬件资源。

5.截取图像操作

import cv2 
img = cv2.imread('E:/opencv/open-cv/2-7/dog.jpg',1)
dog = img[0:200,0:200]
cv2.imshow("img", dog)
cv2.waitKey(0)    
cv2.destroyAllWindows() 

截取狗狗图像对比如下:

原始狗狗图像

截取的狗狗图像

6.提取颜色通道

  • 其中一张图片b,g,r的shape值是一样的。利用cv2.merge((b,g,r))函数是可以重构图像颜色通道。

b,g,r = cv2.split(img)
  • 只保留一个通道。b,g,r分别代号为0,1,2,下面保留r通道。

img1 = img.copy()
img1[:,:,0]=0
img1[:,:,1]=0
cv2.imshow('r',img1)

只保留R通道

7.图像边界填充

#边界填充
top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)

replicate = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REPLICATE)
reflect = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REFLECT)
reflect_101 = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REFLECT_101)
wrap = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_WRAP)
constant = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_CONSTANT)

#绘制子图
plt.subplot(231), plt.imshow(img, 'gray'), plt.title('ORIGINAL')
plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title("REPLICATE")
plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('REFLECT')
plt.subplot(234), plt.imshow(reflect_101, 'gray'), plt.title("REFLECT_101")
plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP')
plt.subplot(236), plt.imshow(constant, 'gray'), plt.title("CONSTANT")

plt.show()
  • borderType:图像填充的方法。

  • BORDER_REPLICATE:复制法,也就是复制最边缘像素。

  • BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制

  • BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称。

  • BORDER_WRAP:外包装法。

  • BORDER_CONSTANT:常量法,常数值填充,需要在设置一个value值,已显示填充的颜色。

展示图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/391250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试题,用 Java 解【水仙花数】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

抓包技术(浏览器APP小程序PC应用)

P1 抓包工具 01. Fidder 首先第一个Fiddler它的优势,独立运行,第二个支持移动设备(是否能抓移动APP的包,)在这一块的话wireshark、httpwatch就不支持,因此在这一块就可以排除掉前连个,因为我们…

SpringCloudGateway--基于redis实现令牌桶算法

目录 一、限流算法 1、计数器算法 2、漏桶算法 3、令牌桶算法 二、Gateway中的限流 一、限流算法 1、计数器算法 计数器算法是指从第一个请求开始,每多一个请求就加1,假设设置每秒限流100,当在一秒钟前500ms已经达到100,后面的5…

华为云计算HCIA学习笔记-第1章 云计算基础概念

1.1 云计算课程安排说明 (IA-虚拟化-FC / IP-Linux OpenStack 桌面云/IE-备份容灾迁移) 1.2 为什么云计算IA讲虚拟化? 提前告知学员,为什么IA课程要重点讲解虚拟化?云计算基于OpenStack,其底层虚拟化技术…

赞!中原银行|古风金融产品体验运营数字驾驶舱大屏!

本期「V友故事」:中原银行设计师作品——古风金融产品体验运营大屏 金融行业数字化转型是近年来提出的一个关键词,它不仅在改变金融服务的结构、形式和方式,而且也在影响中国金融行业的扩张规模,基于此行业趋势,金融从…

加密图像的脆弱水印及应用

原文题目:《A self-embedding secure fragile watermarking scheme with high quality recovery》 学习笔记: 应用场景 为了确保图像在传输过程中不被损坏,在将原始图像发送到云端之前,将用于篡改检测和恢复的水印嵌入到原始图像…

docker逃逸复现--pid=host模式下的逃逸

漏洞原理当docker以--pidhost模式启动时,你可以通过在容器进程中注入一些shellcode进行逃逸。相当于给了docker Linux中的CAP_SYS_PTRACE权限--pidhost:意味着宿主机与容器公享一套pid,如此做容器就可以访问并跟踪宿主机的进程Linux中的CAP_S…

【微信小程序】-- 页面导航 -- 导航传参(二十四)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

MyBatis框架快速入门 - 基本使用

文章目录MyBatisMyBatis基本介绍MyBaits快速入门Mapper代理开发MyBatis配置文件MyBatis MyBatis基本介绍 什么是MyBatis? MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software found…

FPGA实现模拟视频BT656解码 TW2867四路PAL采集拼接显示 提供工程源码和技术支持

目录1、前言2、模拟视频概述3、模拟视频颜色空间4、逐行与隔行5、BT656数据与解码BT656数据格式BT656数据解码6、TW2867芯片解读与配置TW2867芯片解读TW2867芯片配置TW2867时序分析7、设计思路与框架8、vivado工程详解9、上板调试验证10、福利:工程代码的获取1、前言…

【Spring6】| GoF之工厂模式

目录 一:GoF之工厂模式 1. 工厂模式的三种形态 2. 简单工厂模式 3. 工厂方法模式 4. 抽象工厂模式(了解) 一:GoF之工厂模式 (1)GoF(Gang of Four),中文名——四人组…

前端开发总结的一些技巧和实用方法(2)

本文主要介绍一些JS中用到的小技巧和实用方法,可以在日常Coding中提升幸福度,也可以通过一些小细节来增加代码可读性,让代码看起来更加优雅,后续将不断更新1.数组 map 的方法 (不使用Array.Map) Array.from 还可以接受第二个参数…

一文讲解JDK自带监控工具查看 JVM 情况

在一文带你了解阿里的开源Java诊断工具 :Arthas_出世&入世的博客-CSDN博客这篇文章中介绍了Arthas的强大功能,但是有些生成环境没有安装,所以还是需要会使用JDK 自带监控JVM的工具。 常用的JDK 自带监控工具如下: jps&#x…

CDH大数据平台入门篇之搭建与部署

一、CDH介绍 1.CDH 是一个强大的商业版数据中心管理工具 提供了各种能够快速稳定运行的数据计算框架,如Spark; 使用Apache Impala做为对HDFS、HBase的高性能SQL查询引擎; 使用Hive数据仓库工具帮助用户分析数据; 提供CM安装HBas…

真正的IT技术男是什么样的?

我们经常会听到很多对IT男士的调侃称呼,“屌丝”、“宅男”,会逗的大家捧腹大笑。但是,大家要不要以为称呼IT男是“屌丝”、“宅男”,就当真以为他们是这样了。今天,青鸟学姐就带大家一起来了解一下,真正的…

代码还原小试牛刀(一):魔改的MD5

一、目标 2023年了,MD5已经是最基础的签名算法了,但如果你还只是对输入做了简单的MD5,肯定会被同行们嘲笑。加点盐(salt)是一种基本的提升,但在这个就业形势严峻的时代,仅仅加盐肯定不够了。 …

原腾讯QQ空间负责人,T13专家,黄希彤被爆近期被裁员,裁员原因令人唏嘘。。...

点击上方“码农突围”,马上关注这里是码农充电第一站,回复“666”,获取一份专属大礼包真爱,请设置“星标”或点个“在看这是【码农突围】的第 431 篇原创分享作者 l 突围的鱼来源 l 码农突围(ID:smartyuge&…

【论文速递】WACV 2023 - 一种全卷积Transformer的医学影响分割模型

【论文速递】WACV 2023 - 一种全卷积Transformer的医学影响分割模型 【论文原文】:The Fully Convolutional Transformer for Medical Image Segmentation 【作者信息】:Athanasios Tragakis, Chaitanya Kaul,Roderick Murray-Smith,Dirk Husmeier 论…

app上架专用软著认证电子版权在主流应用商店的使用说明2023年最新版

软著认证电子版权在主流应用商店的使用说明 目录 一、 华为应用商店 二、 腾讯应用宝 三、 小米开放平台 小米应用提交: 小米游戏提交: 四、 OPPO开放平台 OPPO应用提交: OPPO游戏(App)提交: OPPO小游戏(快应…

Python爬虫之用Selenium做爬虫

我们在用python做爬虫的时候,除了直接用requests的架构,还有Scrapy、Selenium等方式可以使用,那么今天我们就来聊一聊使用Selenium如何实现爬虫。 Selenium是什么? Selenium是一个浏览器自动化测试框架,是一款用于We…