一、opencv基础-python版本(读取、复制、缩放、显示、保存、像素访问、通道分离与合并、图像上绘制文字、直线、矩形、圆、多边形)

一、图像的读取、复制、显示、保存

 import cv2  #导入Opencv库
1、读取图像
     img = cv2.imread("D:\cat.jpg")       #读取图片
2、复制图像
	 img1=img.copy()           
3、保存图像
     cv2.imwrite('rose_copy.jpg', img1)
	 #第一个参数保存图像的地址以及文件的名字,第二个参数所要保存			  的图像数组。
4、显示图像
	cv2.namedWindow('Image',cv2_WINDOW_NORMAL)  #创建窗口
   cv2.resizeWindow('Image',400,400)  #改变显示窗口大小
   cv2.imshow('Image', img)     #在窗口中显示
   cv2.waitKey(0)      #保持窗口
5、显示两张图像
img=cv2.imread("D:/images/wu.jpg")
img2=cv2.imread("D:/images/wuq.jpg")
def tooimage(img,img2):
     imgs = np.hstack([img,img2])
     cv2.namedWindow('mutil_pic',cv2.WINDOW_NORMAL)
     cv2.resizeWindow('mutil_pic',600,400) 
     cv2.imshow("mutil_pic",imgs)
     cv2.waitKey(0)
tooimage(img,img2)

二、图像元素的访问、通道分离与合并

import cv2
import numpy as np
1、像素访问
img = cv2.imread("D:\cat.jpg")       #读取图片
print(img[20,30,0])
2.椒盐函数
def salt(img, numbers):
    for x in range(numbers):
        i = np.random.randint(img.shape[0])
        j = np.random.randint(img.shape[1])
        for k in range(3):
            img[i][j][k] = 255
    return img
img = salt(img, 1000)
3、通道分离
b, g, r = cv2.split(img)
4、通道合并
(1)  OpenCV中自带的函数megre
megre = cv2.merge([b, g, r])
(2)  numpy模块中的dstack,深度拼接函数
dstack = np.dstack([b, g, r])

三、在图像上绘制文字、直线、矩形

1、图像上显示文字

import cv2
img = cv2.imread("/Users/chenzhenyu/desktop/6.jpeg")
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'small apple', (10, 255), font, 1.6, (255, 255, 0), 2)
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2、绘制直线和矩形

img = np.zeros([512, 512, 3])
#line函数用来画直线,第一个参数可以理解为画布矩阵,
#第二个参数pt1是直线的起始位置,第三个参数pt2是直线的终止位置,
#第四个参数color用来控制直线的颜色,第五个参数thickness表示的是线条的厚度或者说是宽度
cv2.line(img, (255, 512), (255, 0), (255, 0, 255), 9)
#cv2.rectangle函数用来画矩形,第一个参数为需要传入的画布矩阵,
#第二个参数pt1是矩形的左上角位置坐标,第三个参数pt2是矩形右下角的位置坐标,
#第四个参数color用来控制矩形的颜色,第五个参数thickness表示的是边框的厚度或者是宽度
cv2.rectangle(img, (150, 150), (350, 350), (255, 255, 0), 2)
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3、绘制圆和椭圆

#第二个参数指的是圆心,第三个参数指的是圆心
cv2.circle(img, (255, 255), 50, (255, 0, 255), 9)
cv2.circle(img, (250, 245), 9, (255, 0, 0), 36)
#第二个参数是椭圆的中心点,第三个参数axes指的是短半径和长半径,
#第四个参数指的是逆时针旋转的角度,
#第五个参数指的是逆时针开始画图的角度,第六个指的是逆时针结束画图的角度
#四五六参数若加上符号,表示的反方向,即顺时针方向
cv2.ellipse(img, (255, 255), (170, 70), 20, 0, 270, (255, 255, 0), 2)
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

4、绘制多边形

pts = np.array([[50, 190], [380, 420], [255, 50], [120, 420], [450, 190]])
#第三个参数指的是是否封口,这里注意第二个参数外面必须再加一层中括号
cv2.polylines(img, [pts], True, (255, 255, 0), 15)
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小树苗m

您的打赏,是我的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值