Opencv&Python-图像基本的操作

本文详细介绍了使用OpenCV进行图像处理的基本操作,包括获取和修改像素、图像属性、兴趣区域提取、像素通道分离与合并等,并展示了如何利用Numpy和Matplotlib辅助实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、图像基本的操作内容

1、获得图像像素,修改定义图像像素。

2、获得图像的特性

3、提取兴趣区域

4、将图像的像素通道进行分离和合并

参考教程:https://docs.opencv.org/master/d3/df2/tutorial_py_basic_ops.html

二、额外用到的两个库

Numpy 和Matplotlib

# Author Copyright LAPLA.Inc Time: 2018/8/11
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

img=cv.imread("he.jpg",1)
gray_img=cv.imread("he.jpg",0)

#Drawing and Writing text on image
# cv.line(img,(0,0),(200,200),(0,0,255),2,cv.LINE_AA)
# cv.putText(img,'helin',(10,180),cv.FONT_HERSHEY_SIMPLEX,0.5,(123,100,50),2)

#####Access pixs of a iamge#####
# pix=gray_img[0,0] #访问图片的某个像素,输入坐标即可访问,img[row,column],如果是灰度图,则得到的是图像的像素点的强度,如果是彩色图像,则得到彩色图的(B,G,R)值。
# pix1=img[0,0] #访问单个像素
# #  print(pix,pix1)
# gray_img[:,100]=0 #将第十列的像素值赋值为0,像这种访问一个区域的像素值用Numpy库效率会更高。访问单个用Numpy则会降低效率
# print(img.item(10,10,2)) #用Numpy访问单个像素,用arry.iterm()和arry.setiterm((10,10,2),100).注意此处用的是圆括号,而不是方括号,另外openc里图像的通道顺序为BGR,而不是RGB格式
# img.itemset((10,10,2),100)
# print(img.item(10,10,2))

# #####Accessing Image Properties#####
# print(img.shape,gray_img.shape)#如果图像为彩色图像,则返回值为图像的大小和通道数;灰色图像只返回图像的大小
# print(gray_img.size,img.size) #统计像素数量,灰度图为n=row*colomn.彩色图为n=row*column*通道数。
# print(img.dtype,gray_img.dtype)#查看图像的数据类型

# #####Image ROI#####
# roi=img[50:100,50:100]#图像的区域第50行到第100行,第50列到第100列
# img[150:200,150:200]=roi#赋值区域到图像上。注意roi的大小要和放入区域的大小一致

# # #####Splitting and Merging Image Channels#####
# b,g,r=cv.split(img)#源对象必须是多通道的阵列。分离出BGR的值,也可以这样单独获得某个通道的值:r=img[:,:,2],":"两边为空表示所有的意思。注意cv.split()比较耗费运算时间,最好用Numpy.
# merge_img=cv.merge((r,g,b))#将这三个矩阵合并为一个图像
# cv.imshow("merge",merge_img)
# print(b,g,r)
# img[:,:,0]=0#把img图像的B通道赋值为0.

# #####Making Boeders for Image#####
# border=cv.copyMakeBorder(img,10,10,10,10,cv.BORDER_CONSTANT,value=(0,0,255))#cv.BORDER_CONSTANT为边界的类型,有很多种,比如镜像等,只有是cv.BORDER_CONSTANT类型时,才可以用value值定义边框的颜色
# cv.imshow("he3",border)

# #####Matplotlib Application#####
# plt.subplot(121),plt.imshow(img),plt.title("Colorful")#subplot()画子图,参数表示展示几行几列第几个图,plt.imshow()显示的通道顺序为RGB,而cv.imshow()顺序为BGR
# plt.show()

cv.imshow("he",gray_img)
cv.imshow("he2",img)

cv.waitKey(0)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值