欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python入门opencv

程序员文章站 2024-03-25 19:13:22
...

第1章 opencv基础操作

1.用窗口显示图片

(一)先用此cv2.namedwindow()创建一个窗口,再用cv2.imshow()显示

(二)直接用cv2.imshow()创建一个新窗口显示。

`

*=cv2.imread('/home/mally/图片/2.png',0) 
cv2.namedWindow("way1")
cv2.imshow('way1',a)

//1表示3通道的RGB图象
b=cv2.imread('/home/mally/图片/2.png',1) 
cv2.imshow('way2',b)

cv2.waitKey()


2.使用cv2.waitkey()的交互功能.

输入a时出现图a,输入b时出现图b

ord 获取某字符的ASCII

import cv2

a=cv2.imread('/home/mally/图片/2.png',-1)

b=cv2.imread('/home/mally/图片/2.png',1)
cv2.imshow('at the beginning',b)

key=cv2.waitKey()
if key==ord('a'):    
    cv2.imshow('way1', a)
    cv2.imshow('press a',a)
elif key==ord('b'):
    cv2.imshow('press b',b)
cv2.waitKey()

3.保存图片到当前目录下

import cv2

a=cv2.imread('/home/mally/图片/3.jpeg',1)
cv2.imwrite("3.png",a)

第2章 图象处理基础

1.使用numpy库生成数组,以模拟图象

zeros()生成元素都是0的数组

import cv2
import numpy as np

img = np.zeros((8,8),dtype=np.uint8)
#生成8*8的二维数组,数值类型都是np.uint8
print("img=\n",img)
cv2.imshow("before",img)
print("读取像素点img[0,3]=",img[0,3])
img[0,3]=255
print("修改后 img=\n",img)
print("读取修改后像素点img[0,3]=",img[0,3])
cv2.imshow("after",img)
cv2.waitKey()
cv2.destroyAllWindows()

2.RGB

RGB模式的图像有3个通道,

[:,:,0]是blue,[:,:,1]是green,[:,:,2]是red

import cv2
import numpy as np

a=np.zeros((300,300,3),dtype=np.uint8)
a[:,:,1]=255
print("a=",a)
cv2.imshow("green",a)
cv2.waitKey()

3.使用numpy.array访问像素

(1). 使用item()比直接索引高效

(2).使用 itemset()修改像素值更高效

(3).random.randint 可以生成一个随机数组。

​ np.random.randit(n1,n2,size=[a,b],dtype=?)

​ 其中随机数范围为[n1,n2]

import cv2
import numpy as np

img=np.random.randint(10,100,size=[5,5],dtype=np.uint8)
print(img)
cv2.imshow("before",img)
print("img.item(3,2)=",img.item(3,2))
img.itemset((3,2),255)
print(img)
cv2.imshow("after",img)
cv2.waitKey()

4.ROI

即感兴趣区域(Region of Interest)

如给lena的face打马赛克mosaic

import cv2
import numpy as np

a=cv2.imread("5.jpeg")
face=a[100:180,90:200]
cv2.imshow("lena",a)
cv2.imshow("face",face)
face=np.random.randint(0,256,(80,110,3))

a[100:180,90:200]=face
cv2.imshow("make mosaic",a)
cv2.waitKey()

效果如下图

python入门opencv

5.通道操作

拆分图像通道 cv2.split()

合并图像通道 cv2.merge()

6.获取图像属性

shape 返回行数,列数,通道数

size 返回图像的像素数目

dtype返回图像的数据类型

import cv2

img=cv2.imread("5.jpeg")
print("img.shape=",img.shape)
print("img.size=",img.size)
print("img.dtype",img.dtype)
cv2.waitKey()
相关标签: opencv