opencv学习(一)图像的基本操作
创始人
2024-05-29 09:28:14
0
  1. 数据的读取

  • cv2.IMREAD_COLOR:彩色图像

  • cv2.IMREAD_GRAYSCALE:灰度图像

import cv2 
img = cv2.imread('E:/opencv/open-cv/2-7/cat.jpg',1)cv2.imshow("img", img)
cv2.waitKey(0)    
cv2.destroyAllWindows() 
  • cv2.imread()读取图片,当括号里面是1时,也就是替代了cv2.IMREAD_COLOR,得到彩色图。

  • cv2.imread()读取图片,当括号里面是0时,替代了cv2.IMREAD_GRAYSCALE,得到灰度图。

  • cv.inshow()函数为创建一个展示窗口,括号里面分别为图片名字和读取哪个图片。

  • cv2.waitKey(0) 等待时间多久,其中括号中0表示任意键可以中止显示图片。

  • cv2.destroyAllWindows() 关闭窗口。

2.opencv图片颜色转换

import cv2 
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline img=cv2.imread('E:/opencv/open-cv/2-7/cat.jpg')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow("img_gray", img_gray)
cv2.waitKey(0)    
cv2.destroyAllWindows() 
  • 由于cv2读取的图像格式为BGR,而Matplotlib画的是RGB,因此需要对格式进行转换。

cv2.COLOR_BGR2GRAY转化成灰度图,cv2.COLOR_BGR2RGB转换成RGB图,cv2.COLOR_BGR2HSV转换成HSV图。

其中HSV分别表示如下,转换图片也如下图所示:

  • H - 色调

  • S - 饱和度

  • V值(强度)

3.图像保存

cv2.inwrite('cat.png',img_gray)
img_gray.type()
  • 只需要输入cv2.inwrite()函数即可保存图像。

  • img_gray.type()可以查看数据类型

4.视频图像的读取

vc = cv2.VideoCapture('E:/opencv/open-cv/2-7/test.mp4')
  • cv2.VideoCapture()函数用来捕捉摄像头,控制不同的设备。

if vc.isOpened():open, frame =vc.read()
else:open = False
print(frame)
  • 检查视频是否读取错误,其中open只有两个值要么True,要么是False;frame为读取一帧一帧的值。

while open:ret, frame = vc.read()#print(ret)if frame is None:breakif ret == True:gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('result',gray)if cv2.waitKey(20)& 0xFF==27:breakvc.release()    
cv2.destroyAllWindows()
  • 其中cv2.waitKey(20)& 0xFF==27,这句就是如果期间有按键按下返回的值就是按下按键的ASCII值,就比如esc键的ASCII值是27,cv2.waitKey(20) & 0xFF==27就是当按下按键是esc的时候返回true。0xFF意思是16进制的FF也就是八位2进制数1111 1111,如果引入& 0xFF==27 那么得出的结果永远是后八位,这样就可以排除其他按键的干扰。

  • vc.release() 释放硬件资源。

5.截取图像操作

import cv2 
img = cv2.imread('E:/opencv/open-cv/2-7/dog.jpg',1)
dog = img[0:200,0:200]
cv2.imshow("img", dog)
cv2.waitKey(0)    
cv2.destroyAllWindows() 

截取狗狗图像对比如下:

原始狗狗图像

截取的狗狗图像

6.提取颜色通道

  • 其中一张图片b,g,r的shape值是一样的。利用cv2.merge((b,g,r))函数是可以重构图像颜色通道。

b,g,r = cv2.split(img)
  • 只保留一个通道。b,g,r分别代号为0,1,2,下面保留r通道。

img1 = img.copy()
img1[:,:,0]=0
img1[:,:,1]=0
cv2.imshow('r',img1)

只保留R通道

7.图像边界填充

#边界填充
top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)replicate = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REPLICATE)
reflect = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REFLECT)
reflect_101 = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REFLECT_101)
wrap = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_WRAP)
constant = cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_CONSTANT)#绘制子图
plt.subplot(231), plt.imshow(img, '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(reflect_101, '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()
  • borderType:图像填充的方法。

  • BORDER_REPLICATE:复制法,也就是复制最边缘像素。

  • BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制

  • BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称。

  • BORDER_WRAP:外包装法。

  • BORDER_CONSTANT:常量法,常数值填充,需要在设置一个value值,已显示填充的颜色。

展示图如下:

相关内容

热门资讯

5位工业和信息化领域代表与中外... 转自:千龙网在国务院新闻办公室13日举行的“新征程上的奋斗者”中外记者见面会上,5位工业和信息化领域...
煌上煌:在端午节等节日期间,公... 证券日报网讯煌上煌5月15日在互动平台回答投资者提问时表示,在端午节等节日期间,公司为实现粽子产品与...
看图:阿里第四财季营收2365...   阿里发布2025财年第四财季财报:营收2365亿元(淘天1013.69亿+国际数字商业335.7...
李林家族办公室 Avenir ... 吴说获悉,总部位于香港的李林家族办公室 Avenir Group 最新 13F 文件披露显示,截至 ...
富奥股份拟注销2183.22万... 富奥汽车零部件股份有限公司于2025年4月18日召开第十一届董事会第十三次会议及第十一届监事会第八次...
广西富川:“123”模式构建基... 转自:新华财经图为医院工作人员正在线上审核处方 (林雯静 摄)广西富川瑶族自治县推行“123”医疗服...
药师帮(09885.HK)执行... 格隆汇5月15日丨药师帮(09885.HK)发布公告,董事会进一步宣布,于2025年5月15日,公司...
洽洽食品:与贵州君台厚酱酒业无... 5月15日,洽洽食品(002557)举行2024年度及2025年第一季度业绩网上说明会。去年末,公司...
万人说新疆|焊花里的匠心守护 新疆天业集团机械厂的车间里,31岁的电焊高级技师邵旭鹏正专注地焊接着关键设备。作为企业安全生产的“急...
两行动•两措施 | 总结&am... 为深入贯彻“两行动,两措施”,不断提升涉外司法服务水平。5月14日,西安莲湖法院召开座谈会,就“一带...
差异化金融服务支持“三农”丨财... 转自:经济日报在全面推进乡村振兴战略的关键时期,农村金融作为支持“三农”发展的重要力量,发挥着至关重...
记者手记:一杯咖啡里的绿水青山 转自:新华社新华财经北京5月15日电 记者手记:一杯咖啡里的绿水青山新华社记者戴小河初夏时节,在云南...
北京市中闻律师事务所合伙人张杨... 转自:证券日报网    本报记者 毛艺融    5月15日,由《证券日报》社有限责任公司主办,中证中...
云南省中医医院中药茶饮“上新”... 5月15日,医院工作人员在药房配制中药茶饮。近日,云南省中医医院的中药茶饮“上新”,在现有5款的基础...
撸猫、喝茶、发呆……05后大学... 转自:荔枝新闻原本杂草丛生的荒地,如今竟变成能撸猫、喝茶、发呆的"治愈小站",从无人问津到网红打卡地...
北京金融法院两年受理涉投资者保... 北京金融法院副院长薛峰15日在“5·15 全国投资者保护宣传日”新闻发布会上表示,过去两年,北京金融...
为期13天!南京应天大街长江隧... 转自:荔枝新闻5月15日至5月27日,每天的0点至5点,南京应天大街长江隧道实施全封闭管养。今天(5...
*ST宇顺:公司估值指标较可比... 每经AI快讯,5月15日,*ST宇顺(002289.SZ)公告称,公司股价变动(2025年3月31日...
女子回应穿瑜伽服上门做饭争议:... 【#女子回应穿瑜伽服上门做饭争议#:会筛选客户,客户多为独居女性】近日,浙江杭州一女子因上门做饭时穿...
上海开启“城市文明开放麦”全城... 中新网上海5月15日电(记者 许婧)“每个人被看见、被听见都需要一个舞台。城市文明就是这样的大舞台。...