目录

1. 图片加载、显示和保存

2. 图像显示窗口创建与销毁

3. 图片宽、高、通道数获取

4. 图像像素数目和图像数据类型的获取

5. 生成指定大小的空图像,  生成指定大小的空图像

6. 访问和操作图像像素

7.  图像三通道分离和合并

8. 抓取摄像头


1. 图片加载、显示和保存

import cv2
# 生成图片
img = cv2.imread(r'C:\Users\Desktop\test1.jpg')
# 生成灰色图片
imgGrey = cv2.imread("1.jpg", 0)
#  展示原图
cv2.imshow("img", img)
#  展示灰色图片
#cv2.imshow("imgGrey", imgGrey)
#  等待图片的关闭
cv2.waitKey(0)
# 保存灰色图片
#cv2.imwrite("Copy.jpg", imgGrey)

2. 图像显示窗口创建与销毁

cv2.namedWindow(窗口名,属性) 创建一个窗口,属性—指定窗口大小模式:

cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小

cv2.WINDOW_NORMAL:窗口大小可调整

cv2.destoryAllWindows(窗口名) 删除任何建立的窗口

import cv2# 生成图片img = cv2.imread(r'C:\Users\Desktop\test1.jpg')cv2.namedWindow("img", cv2.WINDOW_NORMAL)cv2.imshow("img", img)cv2.waitKey()cv2.destroyAllWindows()

3. 图片宽、高、通道数获取

img.shape 返回图像高(图像矩阵的行数)、宽(图像矩阵的列数)和通道数3个属性组成的元组,若图像是非彩色图,则只返回高和宽组成的元组。

import cv2img = cv2.imread(r'C:\Users\Desktop\test1.jpg')
imgGray = cv2.imread(r'C:\Users\Desktop\test1.jpg', 0)print('****img*****)
print( img.shape)
print('width: ', img.shape[0])
print('heigh: ', img.shape[1])
print('channel: ', img.shape[2])print('\n\n***imgGray**')
print(imgGray.shape)
print('width: ', imgGray.shape[0])
print('heigh: ', imgGray.shape[1])
print('channel: ', imgGray.shape[2])

4. 图像像素数目和图像数据类型的获取

图像矩阵img的size属性和dtype分别对应图像的像素总数目和图像数据类型。一般情况下,图像的数据类型是uint8。

import cv2img = cv2.imread(r'C:\Users\Desktop\test1.jpg')print('图像类型: ', type(img))
print('图像像素点数: ', img.size)
print('图像像素灰度值类型:', img.dtype)

5. 生成指定大小的空图像,  生成指定大小的空图像

import cv2
import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.jpg')
imgZero = np.zeros(img.shape, np.uint8)
imgFix = np.zeros((300, 500, 3), np.uint8)cv2.imshow("imgZero", imgZero)
cv2.imshow("imgFix", imgFix)
cv2.waitKey()
 

6. 访问和操作图像像素

OpenCV中图像矩阵的顺序是B、G、R。可以直接通过坐标位置访问和操作图像像素。

import cv2
import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.jpg')pixel_50_100 = img[50, 100]
#返回3个值,分别是该像素点在BGR通道的值
print(pixel_50_100)img[50, 100] = (0, 0, 255)cv2.imshow("img", img)
cv2.waitKey()

分开访问图像某一通道像素值也very方便

import cv2
import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.jpg')img[0:100, 100:200, 0] = 255
img[100:200, 200:300, 1] = 255
img[200:300, 300:400, 2] = 255cv2.imshow("img", img)
cv2.waitKey()

更改图像某一矩形区域的像素值也很方便:

import cv2
import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.jpg')
img[0:50, 1:100] = (0, 0, 255)cv2.imshow("img", img)
cv2.waitKey()

7.  图像三通道分离和合并

import cv2
import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.jpg')b, g, r = cv2.split(img)# b = cv2.split(img)[0]
# g = cv2.split(img)[1]
# r = cv2.split(img)[2]merged = cv2.merge([b, g, r])cv2.imshow("Blue", b)
cv2.imshow("Green", g)
cv2.imshow("Red", r)cv2.imshow("Merged", merged)
cv2.waitKey()

8. 抓取摄像头

import cv2
import numpy as npcap  = cv2.VideoCapture(0)for i in range(0, 19):print(cap.get(i)) while(1):ret, frame = cap.read()hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)lower_blue = np.array([100, 47, 47])upper_blue = np.array([124, 255,255])mask = cv2.inRange(hsv, lower_blue, upper_blue) #蓝色掩模res = cv2.bitwise_and(frame, frame, mask = mask)cv2.imshow(u"Capture", frame)cv2.imshow(u"mask", mask)cv2.imshow(u"res", res)key = cv2.waitKey(1)if key & 0xff == ord('q') or key == 27:print(frame.shape,ret)breakcap.release()
cv2.destroyAllWindows()

PyOpenCV 基本操作相关推荐

  1. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)

    我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作:​ 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...

  2. pytorch方法,Tensor及其基本操作_重点

    由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...

  3. Gradle安装使用以及基本操作

    转自:https://www.cnblogs.com/linkstar/p/7899191.html Gradle安装使用以及基本操作 阅读目录 简单介绍 安装 使用idea创建一个web的Gradl ...

  4. c++文件读取空格_程序员术与道:术—C语言对文件进行处理,文件处理的基本操作...

    各种编程语言都实现了文件的基本操作,提供了对应的接口,本篇文章先为你介绍C语言对文件进行处理和文件处理的基本操作.主要从以下几个方面进行介绍: 读取文件 写入文件 重命名文件 读取目录 读取目录下的文 ...

  5. 【Pandas库】(3) DataFrame的创建方法及基本操作

    各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...

  6. 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句

    一.缩略语 PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据 UN:unsigned 无符号整数(非负数) ZF:zer ...

  7. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...

    ### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...

  8. OpenCV-Java版学习(3.对视频的基本操作)

    前言 上一节我们学习了使用OpenCV对图像进行一些基础操作,现在我们学习对视频进行一些基础的操作. 对视频的基本操作 从相机中读取视频 我们从电脑自带的摄像头捕捉一段视频并在屏幕上显示出来,代码如下 ...

  9. JDBC编程:2(数据库的基本操作)

    数据库的基本操作 查询数据 在开始前先简单地介绍一下什么是静态SQL和动态SQL: 静态SQL,在编译阶段就可以确定数据库要做什么事情.在某种高级语言中,如果嵌入了SQL语句,而这个SQL语句的主体结 ...

最新文章

  1. 使用链路聚合进行负载分担
  2. Java学习笔记_数组
  3. 机器学习项目(四)疫情期间网民情绪识别
  4. 双机热备_双机热备软件哪个好?双机热备软件推荐
  5. Python 高级网络操作 - Python Advanced Network Operations
  6. Log4j2日志框架集成Slf4j日志门面
  7. iOS 归档 解档使用总结
  8. php本科毕设,基于php的新闻发布系统1本科毕设论文
  9. 基于Servlet+jsp的web计算器
  10. Springboot+Vue+EasyExcel实现web页面的excel读取
  11. http协议中的keeplive是做什么的?它的适应场景是什么?
  12. PC微信逆向:破解聊天记录文件!
  13. 国内打开Cousera方法
  14. python中iter()的高阶用法
  15. 我的职业性格测评报告
  16. 模电学习心得(转载)_史蒂文森sun_新浪博客
  17. 电脑的任务栏只显示一条杠,没有图标怎么解决,看这里!!!
  18. Python——定义全局变量
  19. mysql替换空行解决导出到excel时由于内容有换行回车导致的问题
  20. (微软官方工具)局域网键鼠共享工具:Mouse without borders

热门文章

  1. 查询计算机专业及选修了英语的学生,实验五 数据库综合查询(学生)
  2. linux 命令解码空格,Shell 编程:Bash空格的那点事
  3. linux终止mysql进程_Ubuntu Linux下定时监测MySQL进程终止时自动重启的方法
  4. stc单片机485发送多出一字节_单片机干货!STC8H案例制作分享(内含高清实物动图)...
  5. 用php模拟斗地主发牌,php模拟实现斗地主发牌
  6. 【渝粤教育】国家开放大学2019年春季 2441经济数学基础1 参考试题
  7. 【渝粤教育】国家开放大学2018年春季 0675-21T中级财务会计(2) 参考试题
  8. [渝粤教育] 西南科技大学 电子商务原理及应用 在线考试复习资料
  9. 基于CC1310的915MHz硬件设计
  10. 浅谈开关量采集回路的设计及交流干扰问题解决方案