九 图像的基础操作
a获取像素值并修改
b获取图像的属性(信息)
c图像的ROI()
d图像通道的拆分和合并
1 获取并修改像素值
import cv2
import numpy as np
img=cv2.imread('test.jpg')
#取得像素
px=img[20,20]
print(px)
blue=img[20,20,0]
print(blue)
#显示结果如下
#[191 191 191]
#191
#修改像素
img[20,20]=[255,255,255]
print(img[20,20])
#更好的方法
print(img.item(10,10,2))
img.itemset((10,10,2),100)
print(img.item(10,10,2))
2 获取图像属性
print(img.shape)
#(220,#行数
265,#列数
3)#通道数
#取得图形的像素数
print(img.size)
#174900
#返回图像的数据类型
print(img.dtype)
#uint8
常用属性:
行
列
通道
图像数据类型
像素数目
3 图像的ROI
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/11/14 11:24
# @Author : Retacn
# @Site : 对一幅图像的特定区域进行操作,先择部分图像考贝到图像的其他区域
# @File : ROITest.py
# @Software: PyCharm
import cv2
import numpy as
np
img=cv2.imread("test.jpg")
ball=img[20:30,30:40]
img[200:210,100:110]=ball
#显示图像,窗口会自动调整为图像大小
cv2.imshow("DrawView",img)
#等待用户键入
k=cv2.waitKey(0)
#释放窗体
cv2.destroyAllWindows()
4 拆分及合并图像通道
把RGB拆分为单个通道
把独立通道的图片合并成一个RGB图像
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/11/14 11:43
# @Author : Retacn
# @Site : 图像的拆分和合并图像通道
# @File : viewMarge.py
# @Software: PyCharm
import cv2
import numpy as
np
img=cv2.imread('test.jpg')
b,g,r=cv2.split(img)
img=cv2.merge(b,g,r)
#b=img[:,:,0]
#img[:,:,2]
5 为图像扩边
cv2.copyMakeBorder()
def copyMakeBorder(src,#输入图像
top,#对应边界的像素数
bottom,
left,
right,
borderType,#要添加的边界类型
dst=None,
value=None)
cv2.BORDER_CONSTANT#添加有颜色的常数边界值
cv2.BORDER_REFLECT#边界元素的镜像
cv2.BORDER_REFLECT_101
cv2.BORDER_REPLICATE#重复最后一个元素
cv2.BORDER_WRAP
示例代码如下:#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/11/14 11:55
# @Author : Retacn
# @Site :
# @File : makeBorder.py
# @Software: PyCharm
import cv2
import numpy as
np
from matplotlib
import pyplot as
plt
BLUE=[255,0,0]
img1=cv2.imread("test.jpg")
replicate=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE)
reflect=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT)
reflect101=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101)
wrap=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP)
constant=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)
plt.subplot(231),plt.imshow(img1,'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(reflect101,'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()
分享到:
相关推荐
OpenCV-python 学习笔记 OpenCV图像阈值 OpenCV 提供了两种阈值处理方法:简单阈值和自适应阈值。阈值处理是指将图像分割成不同的区域,以便后续处理和分析。 简单阈值 简单阈值处理使用 `cv2.threshold()` 函数...
1. openCV-python 环境搭建: 2. OpenCV 的图像读取显示及保存 1. 导入图像: 2. 显示图像: 3. 保存图像: 3. OpenCV
2. 平均 3. 高斯模糊 4. 双边滤波 5. 中值模糊
1. 使用摄像头捕获视频 2. 从文件中播放视频 3. 保存视频
1. 扩展缩放 2. 平移 3. 旋转 4. 仿射变换 5. 透视变换
1. 腐蚀 2. 膨胀 3. 开运算 4. 闭运算 5. 形态学梯度 6. 礼帽 7. 黑帽 8. 形态学操作之间关系及结构化元素
1. 转换色彩空间 2. 物体跟踪 3. 寻找跟踪对象的HSV值
lp__Python学习笔记之人脸识别
基于Python和OpenCV的目标跟踪学习笔记
https://www.bilibili.com/video/BV1PV411774y?p=47
本篇文章主要介绍了详解python OpenCV学习笔记之直方图均衡化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
学习笔记python+opencv利用拉普拉斯算子锐化与sobel算子锐化(csdn)————程序
Opencv现在支持与计算机视觉和机器学习有关的多种算法,并且正在日益扩展。 Opencv支持多种编程语言,例如C++, Python, Java等,并且可以再Windows , Linux , OS X , Android和IOS等不同平台上使用。基于CUDA和...
Learning-OpenCV-3-Computer-Vision-with-Python 书本PDF以及代码
之前曾经写过一道数米粒的作业,当时用的是c++中的opencv,这次用python试了一下。 原图及效果图 咦?水印怎么去啊 程序流程 程序的大致流程为: 1.读取图片 2.灰度化 3.二值化 4.膨胀、腐蚀等 5.边缘检测 6....
主要介绍了OpenCV+python实现实时目标检测功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
大多数应用程序都是用Python编写的,但是,我很快将为所有应用程序添加C ++版本。 应用菜单 应用领域 相关话题 演示版 绿屏色度键控 Alpha混合,模糊 进行中 文件扫描仪 影像透视变换 进行中 淡斑卸妆水 无缝克隆 ...
本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d_histogram.html 在前一篇文章中,我们计算并绘制了一维的直方图。它被...
学习python_OpenCV的笔记及代码,bilibili上的某个视频的代码,可以借鉴一下,以便节省一部分时间