OpenCV python学习笔记(二)

不多说,上代码,全在里面
# -*- coding:utf-8 —*-

import numpy as np
import cv2

# 目标:
#     获取像素值并修改
#     获取图像的信息
#     图像的RIO()
#     图象通道的拆分及合并

# step1: 获取图像的信息

# 读取图片  读入彩色图和灰度图
# color_img = cv2.imread("TestOpencv.jpg", cv2.IMREAD_COLOR)
# gray_img = cv2.imread("TestOpencv.jpg", cv2.IMREAD_GRAYSCALE)

# 获取信息
# 图像的信息包括:行、列、通道、图像数据类型、像素数目
# print color_img.shape
# #(1050L, 700L, 3L)        代表的意思是:(行、列、通道数)\
# print color_img.size
# #2205000                  代表的意思是:*个像素数
# print color_img.dtype
# #uint8                    代表图像的类型,在OpenCV-python中经常出项数据类型不一致的错误,因此该属性特别重要

#获取并修改像素值
# 可以根据像素的行列坐标获取像数值,对于RGB模式的返回的是r,g,b的值,对于灰度图则返回灰度值

# 获取某个点的像素值
# color_px = color_img[100,100]
# gray_px = gray_img[100,100]
# print color_px, gray_px
# #[199 222 224] 220

# 修改末各点的像素值
# color_img[100,100] = [255, 255, 255]
# gray_img[100, 100] = 255
# 警告: Numpy是经过优化的进行矩阵快速计算运算包,所以不推荐逐个修改像素值,很慢,所以能用矩阵运算的绝不用循环


# 获得像素值更好的方法
# 不是很明白???      好像和Numpy有点关系
# print color_img.item(10, 10, 2)
# #190
# color_img.itemset((10, 10, 2), 100)
# print color_img.item(10, 10, 2)
# # 100

# 图像的ROI
# ROI是使用Numpy索引来获得的
# 作用:对一幅图片的特定区域进行操作
# 情景:例如在一个想象中找到人的眼睛,则应该先找到脸,再找眼睛

# img = cv2.imread("TestOpencv.jpg", cv2.IMREAD_COLOR)
# pice_img = img[120:320, 300:450]
# cv2.namedWindow("show")
# # cv2.imshow("show", pice_img)
# img[420:620, 400:550] = pice_img
# cv2.imshow("show", img)
# if cv2.waitKey(0) == 27:
#     cv2.destroyAllWindows()
# # elif cv2.waitKey(0) == ord("s"):


# 拆分及合并图像通道
# 有时我们需要分别对R、G、B三个通道分别惊醒操作,又是我们则要将一个地理通道分成BGR

# img = cv2.imread("TestOpencv.jpg", cv2.IMREAD_COLOR)
# b, g, r = cv2.split(img)
# print b, "\n\n"
# print g, "\n\n"
# print r, "\n\n"
# # 将红色通道全部变为0
# b = img[:,:,0]
# # 警告:cv2.split() 是一个比较耗时的操作。只有真正需要时才用它,能用 Numpy 索引就尽量用。

# 为图像扩边(填充)
# 如果你想在图像周围创建一个边,就像相框一样,你可以使用cv2.copyMakeBorder() 函数。
# 这经常在卷积运算或 0 填充时被用到。
# 这个函数包括如下参数:
#     • src 输入图像
#     • top, bottom, left, right 对应边界的像素数目。
#     • borderType 要添加那种类型的边界,类型如下
#         – cv2.BORDER_CONSTANT 添加有颜色的常数值边界,还需要 下一个参数(value)。
#         – cv2.BORDER_REFLECT边界元素的镜像。比如: fedcba|abcde- fgh|hgfedcb
#         – cv2.BORDER_REFLECT_101orcv2.BORDER_DEFAULT 跟上面一样,但稍作改动。
#             例如: gfedcb|abcdefgh|gfedcba
#         – cv2.BORDER_REPLICATE重复最后一个元素。
#             例如: aaaaaa| abcdefgh|hhhhhhh
#         – cv2.BORDER_WRAP 不知道怎么说了,
#               就像这样: cdefgh| abcdefgh|abcdefg
#     • value 边界颜色,如果边界的类型是 cv2.BORDER_CONSTANT















  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值