当前位置: 首页 > news >正文

功能网站开发企业公众号申请注册

功能网站开发,企业公众号申请注册,做ppt兼职的网站,wordpress登录空白文章目录2 OpenCV基本操作2.1 IO操作2.2 图像基本操作2.2.1 图像绘制2.2.1.1 绘制直线2.2.1.2 绘制圆形2.2.1.3 绘制矩形2.2.1.4 添加文字2.2.1.5 试手2.2.2 获取/修改图像的像素点2.2.3 获取图像属性2.2.4 图像通道拆分/合并2.2.5 色彩空间改变2.2.6 边界填充2.3图像算数操作2… 文章目录2 OpenCV基本操作2.1 IO操作2.2 图像基本操作2.2.1 图像绘制2.2.1.1 绘制直线2.2.1.2 绘制圆形2.2.1.3 绘制矩形2.2.1.4 添加文字2.2.1.5 试手2.2.2 获取/修改图像的像素点2.2.3 获取图像属性2.2.4 图像通道拆分/合并2.2.5 色彩空间改变2.2.6 边界填充2.3图像算数操作2.3.1 图像加法2.3.2 图像混合2 OpenCV基本操作 2.1 IO操作 图像的本质是什么实际上图像就是矩阵而是几维矩阵视具体而定。如灰度值图片就是单通道图片是一个二维矩阵而对于彩色图片其拥有三个通道也就是说一个图片是三个矩阵堆叠而成。如图所示 其中矩阵中的每个值我们叫做像素点每个像素点取值0~2550是最暗的即黑色往上递增越来越亮。如在R通道上取值211即红色越来越亮。 我们来导入一张图片试试我用的是这张你们可以和我不一样。 cv2.imread(filename,flags) 读取图片filename字符串类型用于指定路径flags整数类型用于指定图片的加载形式1为cv.IMREAD_COLOR表明其以彩色模式加载图像任何图像的透明度都将被忽略这是默认参数0为cv.IMREAD _GRAYSCALE表明其以灰度模式加载图像-1为cv.IMREAD_UNCHANGED表明alpha通道的加载图像模式 cv2.imshow(winname,mat) 用于显示图片winname显示图片的窗口名称mat要加载的图片 import cv2# 读取图像 img cv2.imread(rC:\Users\13966\Desktop\Test01.jpg, 1) cv2.imshow(image, img) cv2.waitKey(0) cv2.destroyAllWindows()如果不用cv2.waitKey()方法图片会一闪而过。该方法可以传入整型参数传入的参数为毫秒如果传入0则表示按任意键终止显示图像。cv.destroyAllWindows()方法用于销毁窗口。在平时开发中我们可以把以上的操作封装为一个函数。 用cv2包读取的RGB图片一般会变成BGR格式这是需要注意的。 在通常做完操作后我们如何保存一张图片呢 cv2.imwrite(‘filename’,img) 用于保存图片filename用于填写图片地址img图片对象 import cv2# 读取图像 def load_cv_img():img cv2.imread(rC:\Users\13966\Desktop\Test01.jpg, 1)cv2.imshow(image, img)cv2.waitKey(0)cv2.destroyAllWindows()cv2.imwrite(rC:\Users\13966\Desktop\Test02.jpg, img)load_cv_img()2.2 图像基本操作 2.2.1 图像绘制 2.2.1.1 绘制直线 cv.line(img,start,end,color,thickness) img要绘制的参数Start,end直线的起点和终点color线条的颜色Thickness线条宽度 2.2.1.2 绘制圆形 cv.circle(img,centerpoint,r,color,thickness) img要绘制圆形的图像Centerpoint,r圆心和半径color线条的颜色Thickness线条宽度为-1时生成闭合图案并添加文字 2.2.1.3 绘制矩形 cv.rectangle(img,leftupper,rightdown,color,thickness) img要绘制矩形的图像Leftupperrightdown矩形的左上角和右下角坐标color线条的颜色Thickness线条宽度 2.2.1.4 添加文字 cv.putText(img,text,org,font,fontsize,thickness,cv.LINE_AA) img图像text要写入的文本数据org文本的放置位置font字体Fontsize字体大小 2.2.1.5 试手 import numpy as np import cv2 as cv import matplotlib.pyplot as plt# 1 创建图像 img np.zeros((512, 512, 3), np.uint8)# 2 绘制图像 cv.line(img, (0, 0), (512, 512), (255, 0, 0), 5) cv.circle(img, (244, 244), 20, (0, 255, 0), 4) cv.rectangle(img, (122, 122), (400, 400), (0, 0, 255), 4) cv.putText(img, OpenCV, (50, 100), cv.FONT_ITALIC, 3, (144, 144, 0))# 3 显示结果 cv.imshow(image, img) cv.waitKey(0) cv.imwrite(rC:\Users\13966\Desktop\Test03.jpg, img)out 在控制颜色这一块通常是输入BGR值以元组的形式传入对于字体这一块通常有多种选择常用的有FONT_HERSHEY_SIMPLEX、FONT_HERSHRY_PLAIN等。 2.2.2 获取/修改图像的像素点 这个没什么好说的因为对于cv读取图像来说按照前面所讲其本质上是一个多维数组所以按照数组的索引方式修改即可。 import cv2 as cv# 读取图片 img cv.imread(rC:\Users\13966\Desktop\Test01.jpg)# 获取部分像素点 cv.imshow(image, img[0:50, :, :]) cv.waitKey(0)out 2.2.3 获取图像属性 图像无非就是n维矩阵。所以属性自然也就是大小、数据类型、形状那几个。 属性API形状img.shape图像大小img.size数据类型img.dtype import numpy as np import cv2 as cv import matplotlib.pyplot as plt# 1 创建图像 img np.zeros((512, 512, 3), np.uint8)# 2 绘制图像 cv.line(img, (0, 0), (512, 512), (255, 0, 0), 5) cv.circle(img, (244, 244), 20, (0, 255, 0), 4) cv.rectangle(img, (122, 122), (400, 400), (0, 0, 255), 4) cv.putText(img, OpenCV, (50, 100), cv.FONT_ITALIC, 3, (144, 144, 0))print(f图像大小{img.size}) print(f图像的形状{img.shape}) print(f图像的数据类型{img.dtype})2.2.4 图像通道拆分/合并 有时候需要在cv读取的BGR图像中进行单通道工作这个时候我们需要使用split方法而如果想要把处理好的各个通道合并可以使用merge方法。 import cv2 as cvimg cv.imread(rC:\Users\13966\Desktop\Test01.jpg) grayImg cv.cvtColor(img, cv.COLOR_BGR2GRAY) cv.imshow(image, grayImg)out 2.2.5 色彩空间改变 OpenCV中有150多种颜色空间的转换方法这些方法你可以这么记忆如果你想从A-B那么可以调用cv.A2B。如BGR转Gray则调用包里的BGR2GRAY。 import cv2 as cv# 1 创建图像 img cv.imread(rC:\Users\13966\Desktop\Test01.jpg)# 2 通道拆分 b, g, r cv.split(img) cv.imshow(b_image, b) cv.waitKey(0) cv.destroyAllWindows() out 2.2.6 边界填充 cv.copyMakeBorder(src,top,bottom,left,right,BorderType) 用于边界填充src填充图像BorderType填充类型BORDER_REPLICATE赋值法复制最边缘的像素填充BORDER_REFLECF反射法对感兴趣的图像中的像素在两边进行复制BORDER_REFLECT_101反射法也就是以最边缘像素为轴BORDER_WRAP外包装法如cdefgh[abcdefgh]abcdefgBORDER_CONSTANT常数法用常数值填充所以要指定value import cv2 as cv import matplotlib.pyplot as plt# 读取图片 img cv.imread(rC:\Users\13966\Desktop\Test01.jpg)# 指定填充位置 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) reflect101 cv.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv.BORDER_REFLECT101) 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, value0)# 显示图片 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(reflect101, gray) plt.title(REFLECT101) plt.subplot(235) plt.imshow(wrap, gray) plt.title(WRAP) plt.subplot(236) plt.imshow(constant, gray) plt.title(CONSTANT)plt.show()out 2.3图像算数操作 2.3.1 图像加法 我们可以使用OpenCV中的cv.add()函数将两个图片相加或者可以简单通过numpy操作添加两个图像如res img1img2两个图像应该具有相同的大小和类型或者第二个图像可以是标量值。 需要注意的是OpenCV和Numpy加法之间存在差异OpenCV的加法是饱和操作如果两个图片是一样的并且做加法那么图片会变得饱和度非常高而Numpy添加是模运算其做出来的效果不是很好。 import cv2 as cvimg cv.imread(rC:\Users\13966\Desktop\Test01.jpg) img2 cv.imread(rC:\Users\13966\Desktop\Test01.jpg) mulImg cv.add(img, img2) cv.imshow(image, mulImg) cv.waitKey(0) print(img) print(img2)out 我们试着将两张不同的图片做加法。 import numpy as np import cv2 as cv import matplotlib.pyplot as plt# 1 创建图像 img cv.imread(rC:\Users\13966\Desktop\Test01.jpg) img2 cv.imread(rC:\Users\13966\Desktop\Test02.jpg) mulImg cv.add(img, img2) cv.imshow(image, mulImg) cv.waitKey(0)另一张图片是这个合并前必须保证两图片大小相同且通道数相同 out 2.3.2 图像混合 图像混合实际上等于加强版的图像加法它可以控制两图片的透明度比例。换而言之图像混合可以控制合成图片中原先各图片的占比。 想要使用图像混合只需要使用addWeighted()方法即可。 混合公式为g(x)a⋅img1b⋅img2γg(x) a·img1b·img2\gammag(x)a⋅img1b⋅img2γ。 import cv2 as cv# 1 创建图像 img cv.imread(rC:\Users\13966\Desktop\Test01.jpg) img2 cv.imread(rC:\Users\13966\Desktop\Test02.jpg) mulImg cv.addWeighted(img, 0.2, img2, 0.8, 0) cv.imshow(image, mulImg) cv.waitKey(0)out
http://www.zqtcl.cn/news/247475/

相关文章:

  • 昭通公司做网站ps在线网页版
  • 做阿里巴巴网站费用吗深圳市企业名录
  • 做仿牌网站被封动态公司网站设计
  • 怎么用flashfxp上传网站ui设计需要学哪些课程
  • 片头网站一个主机放多个网站
  • 商城网站一般建设的宽度网站开发图标
  • 做名片哪个网站可以找win7优化大师免安装版
  • 建筑网库网络优化的基本方法
  • 汕头市品牌网站建设公司做外贸那个网站比较好
  • 网站的好坏wordpress 页面制作
  • 成都网站建设熊掌号WordPress模板博客主题
  • 西宁网站建设有限公司个人建站提供软件下载
  • 商丘哪里教做网站的绵阳市三台县城乡建设局网站
  • 百度seo整站优化公司岳阳网站开发收费
  • 阳江市人才招聘网新乡网站关键词优化
  • 襄阳做公司网站的软件公司简单网页html模板
  • 有网站如何做app开发公司认领工程网站
  • 济宁网站建设云科网络wordpress幻灯片简码
  • 国外做问卷网站好生产企业展厅设计
  • 提供网站制作公司报价长治网站制作平台
  • 丹东网站开发网站关键词和网页关键词的样本
  • 表白网站在线制作软件北京市轨道交通建设管理有限公司网站
  • asp做微网站设计网站有必要备案吗
  • 网站建设推广营销策划广州在线网页制作
  • photoshop怎么做网站局域网内用自己电脑做网站
  • 四会网站建设服装店网站建设规划书
  • 网站规范化建设海南百度网站建设
  • 商业网站建设设计公司平面ui设计网站
  • 南宁建站免费模板网页无法访问如何解决h5
  • 怎么查网站后台地址电商网站怎样做优化才最合理