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

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

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

cv2.namedWindow(窗口名,属性) 创建一个窗口

属性—指定窗口大小模式:

cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小
cv2.WINDOW_NORMAL:窗口大小可调整
cv2.destoryAllWindows(窗口名) 删除任何建立的窗口

import cv2img = cv2.imread("1.jpg")cv2.namedWindow("img", cv2.WINDOW_NORMAL)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()

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

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

import cv2img = cv2.imread("1.jpg")
imgGrey = cv2.imread("1.jpg", 0)sp1 = img.shape
sp2 = imgGrey.shapeprint(sp1)
print(sp2)
# ======输出=======
#(1200, 1920, 3)
#(1200, 1920)

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

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

import cv2img = cv2.imread("1.jpg")imgSize = img.size
print(imgSize)ty = img.dtype
print(ty)
#======输出========
#6912000
#uint8

5 生成指定大小的空图像

生成指定大小的空图像

import cv2
import numpy as npimg = cv2.imread("1.jpg")
imgZero = np.zeros(img.shape, np.uint8)imgFix = np.zeros((300, 500, 3), np.uint8)
# imgFix = np.zeros((300,500),np.uint8)cv2.imshow("img", img)
cv2.imshow("imgZero", imgZero)
cv2.imshow("imgFix", imgFix)
cv2.waitKey()

6. 访问和操作图像像素

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

import cv2img = cv2.imread("01.jpg")numb = img[50,100]
print numbimg[50,100] = (0,0,255)
cv2.imshow("img",img)
cv2.waitKey()

分开访问图像某一通道像素值也炒鸡方便:

import cv2img = cv2.imread("01.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()

嗯,不得不说Python是一个很神奇的存在。

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

import cv2img = cv2.imread("01.jpg")img[0:50,1:100] = (0,0,255)cv2.imshow("img",img)
cv2.waitKey()

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

分离图像通道可以使用cv2中的split函数,合并使用merge函数。

import cv2img = cv2.imread("01.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. 在图像上输出文字

使用putText函数在图片上输出文字,函数原型:
putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)

    1. img: 图像
    2. text:要输出的文本
    3. org: 文字的起点坐标
    4. fontFace: 字体
    5. fontScale: 字体大小
    6. color: 字体颜色
    7. thickness: 字图加粗

import cv2img = cv2.imread("01.jpg")cv2.putText(img,"Print some text to img",(100,100),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255))cv2.imshow("img",img)
cv2.waitKey()

9. 图像缩放

缩放使用cv2.resize()函数,resize函数里的size第一个是宽(列),第二个是高(行)。

import cv2img = cv2.imread("1.jpg")
cv2.imshow("img", img)imgg = cv2.resize(img, (200, 100))cv2.imshow("imgg", imgg)cv2.waitKey()

10.图片灰化处理

# from matplotlib import pyplot as plt
# import cv2
# from pylab import *
#
# # 添加中文字体支持
# from matplotlib.font_manager import FontProperties
# font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc",size = 14)
#
# # 载入图像
# im = cv2.imread('1.jpg')
# # 显示原始图像
# fig = plt.figure()
# subplot(121)
# plt.gray()
# im2 = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) #OpenCV采用BGR排列顺序,需要转换一下.
# imshow(im2)
# title(u'彩色图', fontproperties= font)
# axis('off')
# # 显示灰度化图像
# # 颜色空间转换
# gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
# plt.subplot(122)
# plt.gray()
# imshow(gray)
# title(u'灰度图', fontproperties= font)
# axis('off')
# show()

转换后的结果

11.在python3 下使用OpenCV抓取摄像头图像提取蓝色

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)break
cap.release()
cv2.destroyAllWindows()

以下是从wangyblzu博客截下来的HSV颜色分量范围

https://www.cnblogs.com/wangyblzu/p/5710715.html

三张结果图

转载地址:https://blog.csdn.net/dcrmg/article/details/78817660

Python-OpenCV基本操作cv2相关推荐

  1. Python OpenCV——函数 cv2.findContours 运行错误【in function ‘cv::pointSetBoundingRect‘】解决方案

    问题描述 cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-r2ue8w6k\opencv\m ...

  2. python安装cv2模块的方法_Python opencv模块cv2安装和部分函数使用

    Python opencv模块cv2安装和部分函数使用 前几天做了一下验证码识别,在这里分享一下用到的opencv模块cv2部分函数的使用方法,也是给自己加深一下记忆. 一.cv2模块安装 在这里提醒 ...

  3. python opencv如何读取透明png图片以及如何编辑透明度

    python OpenCV中 cv2.imread(img_path)默认会读取BGR图像,即3通道图像,读出的图像尺寸为h,w,c.cv2.resize(img, (w,h)),resize中的尺寸 ...

  4. python -opencv 使用滑动条 cv2.createTrackbar,cv2.getTrackbarPos(), cv2.setTrackbarPos

    python -opencv 使用滑动条 函数createTrackbar: cv2.createTrackbar("scale", "display", 0, ...

  5. python opencv 等比例调整(缩放)图片分辨率大小代码 cv2.resize()

    # -*- coding: utf-8 -*- """ @File : 200113_等比例调整图像分辨率大小.py @Time : 2020/1/13 13:38 @A ...

  6. python opencv cv2.resize()函数

    **def resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None): # real signature unknown; ...

  7. python opencv cv2.cvtColor()方法(将图像从一种颜色空间转换为另一种颜色空间)(转换成灰度图)

    def cvtColor(src, code, dst=None, dstCn=None): # real signature unknown; restored from __doc__" ...

  8. python opencv cv2.VideoCapture(),read(),waitKey()的使用 ret,frame参数

    参考文章:python-OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用 VideoCapture.py # encoding: utf-8 # modu ...

  9. python怎么导入opencv_对python opencv 添加文字 cv2.putText 的各参数介绍

    如下所示: cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3) 各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字 ...

  10. python opencv图片放大 缩小_Python OpenCV之图片缩放的实现(cv2.resize)

    OpenCV函数原型: cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation) 参数解释: InputArra ...

最新文章

  1. idea中的markdown文档如何插入图片
  2. 初探Oracle--Oracle查询操作
  3. CCF201812-2 小明放学(100分)【序列处理】
  4. WinForm程序设计-ToolTip控件
  5. 《算法的乐趣》终于出版了
  6. Nginx从入门到精通(全)
  7. my ReadBook_liutongjingjixue / circulation economics
  8. 一个例子学会自相关互相关的计算
  9. [系统安全] 二十.PE数字签名之(上)什么是数字签名及Signtool签名工具详解
  10. 学习《医学三字经白话解》之医学源流+中风
  11. CCF-CSP认证历年真题解
  12. C语言六边形蜂巢数组,生活中的数学之奇妙的蜂窝构造
  13. 一个程序员经历的7小时全身麻醉
  14. php 模拟登陆微云,微云 - HHTjim'S 部落格
  15. [ctf web][csaw-ctf-2016-quals]mfw writeup
  16. 英国内政部启动遣返程序 数百非法入境者或遭驱逐
  17. 荣耀加冕,追梦不休 | 我的大学时光
  18. SFuzz: Slice-based Fuzzing for Real-Time Operating Systems
  19. 一文探究OR值和RR值区别
  20. java扰码_TD中下行同步码和扰码的区别和作用

热门文章

  1. boost::stl_interfaces::reverse_iterator相关的测试程序
  2. boost::mp11::mp_push_front相关用法的测试程序
  3. GDCM:gdcm::LO的测试程序
  4. GDCM:dicom文件转储签证变更的测试程序
  5. DCMTK:存储服务类用户(C-STORE操作)
  6. VTK:可视化之BoxClipUnstructuredGrid
  7. VTK:InfoVis之GraphPoints
  8. OpenCV运行分类深度学习网络的实例(附完整代码)
  9. Julia OpenCV绑定简介
  10. C语言实现最大堆max_heap(附完整源码)