import cv2
import numpy as np
import glob'''
img  = cv2.imread('figures/img_1.jpg')
cv2.imshow('src', img)
print(img.shape)   #(h,w,c) 打印图片的维度,(高度,宽度,通道数)
print(img.size)   #像素总数目
print(img.dtype)    #unit8
print(img)           #显示一个numpy矩阵
cv2.waitKey()      #图片显示着,直到按下任意一个键才被关掉

gray = cv2.imread('figures/img_1.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('gray',gray)
cv2.waitKey()
anyColor = cv2.imread('figures/img_1.jpg', cv2.IMREAD_ANYCOLOR)
cv2.imshow('anyColor',anyColor)
cv2.waitKey()
Color = cv2.imread('figures/img_1.jpg', cv2.IMREAD_COLOR)
cv2.imshow('Color',Color)
cv2.waitKey()

#也可以先读入彩色图,在转换为灰色图
color_1 = cv2.imread('figures/img_1.jpg')
gray_1 = cv2.cvtColor(color_1, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_1', gray_1)
cv2.waitKey()

#读到图片不存在时,加入判断语句,如果为空,做异常处理
img_2 = cv2.imread('figures/img_2.jpg')
if img_2 == None:
    print('Fail to load image!')
'''

'''
#图片的矩阵变换
#做卷积的时候,需要对不同通道应用卷积,这时:(height,width,channel)---> (channel,height,width)
img = cv2.imread('figures/img_1.jpg')
cv2.imshow('img', img)
print(img.shape)
cv2.waitKey()
img_1 = img.transpose(2, 0, 1)
#cv2.imshow('img_1', img_1) #转换之后不能再显示,执行会出错
print(img_1.shape)
#cv2.waitKey()

#扩展维度,例如--->(batch_size, channels, height, width)
#预测单张图片,加一列作为图片的个数
img_2 = np.expand_dims(img, axis=0)
print(img_2.shape)    #(1, 480, 854, 3)

#训练阶段构建patch---> (batch_size, channels, height, width)
data_list = []
images = glob.glob('D:/PycharmProjects/image2video/blackswan/*.png')
for imageName in images:
    im = cv2.imread(imageName)
    data_list.append(im)
data_arr = np.array(data_list)
print(data_arr.shape)       #(50, 480, 854, 3)
'''

'''
#图片归一化
#opencv读入的图片矩阵数值是0-255,有时我们需要对其进行归一化处理
img = cv2.imread('figures/img_1.jpg')
print(img.dtype)    #unit8
print(img)
img_1 = img.astype("float") / 255.0   #img为unit8,需要先转换为float型
print(img_1.dtype)     #float64
print(img_1)

# 存储图片
cv2.imwrite('img_2.jpg', img_1)
img_3 = img_1 * 255     #要得到可视化的图片,需要乘以255还原
cv2.imwrite('img_3.jpg', img_3)

# BGR---->RGB,opencv读入的图片通道排列是BGR,而不是RGB
img_4 = cv2.imread('figures/img_1.jpg')
img_4 = cv2.cvtColor(img_4, cv2.COLOR_BGR2RGB)

#访问像素
gray = cv2.cvtColor(img_4, cv2.COLOR_BGR2GRAY)
print(img_4[10,10])  #3channels
print(gray[10, 10])      #1channel
img_4[10, 10] = [255, 255, 255]    #修改像素值
gray[10,10] = 255
print(img_4[10,10])    #----->[255,255,255]
print(gray[10,10])     #----->255

#ROI操作(提取感兴趣的区域)
roi = img_4[200:550,100:450,:]
cv2.imshow('roi',roi)
cv2.waitKey()

'''

#通道操作
#分离通道
img_5 = cv2.imread('figures/img_1.jpg')
b, g, r = cv2.split(img_5)
print(b)         #[[]]
print(img_5)     #[[[]]]

#合并通道
img_6 = cv2.merge((b, g, r))
print(img_6)img_5[:, :, 2] = 0
print(img_5)
cv2.imshow('img5', img_5)
cv2.waitKey()

python-opencv的一些基础操作相关推荐

  1. [python opencv 计算机视觉零基础到实战] 十、图片效果毛玻璃

    一.学习目标 了解高斯模糊的使用方法 了解毛玻璃的图片效果添加 了解如何自己做一个噪声图片 上一篇:[python opencv 计算机视觉零基础到实战] 九.模糊 如有错误欢迎指出~ 二.了解模糊与 ...

  2. [python opencv 计算机视觉零基础到实战] 八、ROI泛洪填充

    一.学习目标 了解什么是ROI 了解floodFill的使用方法 如有错误欢迎指出~ 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[pyth ...

  3. [python opencv 计算机视觉零基础到实战] 七、逻辑运算与应用

    一.学习目标 了解opencv中图像的逻辑运算 了解opencv中逻辑运算的应用 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python ...

  4. [python opencv 计算机视觉零基础到实战] 三、numpy与图像编辑

    一.学习目标 了解图片的通道与数组结构 了解使用numpy创建一个图片 了解使用numpy对图片的一般操作方法 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的hell ...

  5. 【python opencv 计算机视觉零基础到实战】二、 opencv文件格式与摄像头读取

    一.学习目标 了解图片的结构属性 了解如何捕获视频 了解waitkey的使用方法 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python ...

  6. [python opencv 计算机视觉零基础到实战] 一 opencv的helloworld

    前置条件 说明:本系列opencv实战教程将从基础到实战,若只是简单学习完python也可以通过该教程完成一般的机器学习编程:文中将会对很多python的基础内容进行讲解,但由于文章定位的原因将不会赘 ...

  7. [python opencv 计算机视觉零基础到实战] 十一找到图片中指定内容

    一.学习目标 了解图片内容定位方法matchTemplate使用 了解minMaxLoc方法使用 上一篇<[python opencv 计算机视觉零基础到实战] 十.图片效果毛玻璃> 如有 ...

  8. [python opencv 计算机视觉零基础到实战] 六、图像运算

    一.学习目标 了解opencv中图像运算的方法 了解opencv中图像运算的运用 如有错误欢迎指出~ 二.了解OpenCV中图像运算的运用 目录 [python opencv 计算机视觉零基础到实战] ...

  9. [python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解

    一.学习目标 了解什么是色彩空间 了解opencv中色彩空间的转换 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python opencv ...

  10. python 新建文件 hdfs_python基础操作以及hdfs操作

    一.前言 作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路,大体实现的功能是写一个通用类库将服务器本地存储的文件进行 ...

最新文章

  1. Redhat linux5.5下Oracle 10g 安装配置手册一
  2. Leetcode 208. 实现 Trie (前缀树) 解题思路及C++实现
  3. 九十六、双指针和滑动窗口算法模板
  4. python爬虫实训心得_Python爬虫小结
  5. wxWidgets:支持插件的程序
  6. SAP中国招聘内部顾问,工作职责是做客户项目,ABAP开发
  7. MySQL流浪记(七)—— MySQL删除表数据
  8. tcmalloc编译
  9. python数据可视化柱状图_python数据可视化示例柱状图
  10. JNI_OnLoad
  11. 动态执行javascript代码
  12. 无法ping通别的计算机名,解决主机无法ping通问题
  13. 职称计算机个人档案号查询,干部人事档案编号在线查询
  14. 平面设计中都有哪些风格?常用的风格有哪些?
  15. 通灵学院|游戏设计研习9:游戏社群★(1500字)
  16. 论剑大数据技术,效率为王!天善智能掘金数据技术沙龙【上海站 12.09】
  17. Telemetry 基础
  18. 【C++入门基础篇】---- 万字解析
  19. Layui实现之登陆页面实现扩展模块
  20. 4.Deferred

热门文章

  1. css的sprites什么意思,CSS Sprites是什么
  2. 关于已上发布app,升级admob后,激励视频返回code=3 message=“No ad config“
  3. 第五章 政策问题与议程设定
  4. java爬取堆糖所有头像(高质量版头像)
  5. python安装失败0x80070005_win10下载安装软件时提示“0x80070005-拒绝访问”
  6. Python学习笔记(01 Hello World的条件输出 02 数值运算)
  7. js复制一个数组(浅复制、深复制)
  8. 【云存储】IOPS概念及测试方法
  9. Unity3D | 经典小游戏Pacman
  10. UNITY设计一款简单的3d射击小游戏(虚拟现实大作业)