Python+OpenCV图像处理(一)

Step1:
import cv2 as cv
src=cv.imread(‘E:\imageload\example.png’)
cv.namedWindow(‘input_image’, cv.WINDOW_AUTOSIZE)
cv.imshow(‘input_image’, src)
cv.waitKey(0)
cv.destroyAllWindows()
代码解释:
  src=cv.imread(‘E:\imageload\example.png’)
  #读取这个路径的图片 注意这里的路径必须全是英文,不能有中文 但是分隔符\是随意的,还可以是 / \ // 形式的 (在python3至少是这样)
  cv.namedWindow(‘input_image’, cv.WINDOW_AUTOSIZE)
   #namedWindow函数,用于创建一个窗口 默认值为WINDOW_AUTOSIZE,所以一般情况下,这个函数我们填第一个变量就可以了。其实这一行代码没有也可以正常显示的(下面imshow会显示)
  cv.imshow(‘input_image’, src)
  #在指定的窗口中显示一幅图像         
  cv.waitKey(0)
  # 参数=0: (也可以是小于0的数值)一直显示,不会有返回值 若在键盘上按下一个键即会消失 ,则会返回一个按键对应的ascii码值
    参数>0:显示多少毫秒 超过这个指定时间则返回-1
  cv.destroyAllWindows()
   #删除建立的全部窗口,释放资源
注意:若同时使用namedWindow和imshow函数,则两个函数的第一个参数名字必须相同。

一. 打印图片属性、设置图片存储路径、电脑摄像头的调取和显示

#打印图片的属性、保存图片位置
import cv2 as cv
import numpy as np #numpy是一个开源的Python科学计算库
def get_image_info(image):
print(type(image)) #type() 函数如果只有第一个参数则返回对象的类型 在这里函数显示图片类型为 numpy类型的数组
print(image.shape)
#图像矩阵的shape属性表示图像的大小,shape会返回tuple元组,
# 第一个元素表示矩阵行数,第二个元组表示矩阵列数,第三个元素是3,表示像素值由光的三原色组成
print(image.size) #返回图像的大小,size的具体值为shape三个元素的乘积
print(image.dtype) #数组元素的类型通过dtype属性获得
pixel_data=np.array(image)
print(pixel_data) # 打印图片矩阵 N维数组对象即矩阵对象
src=cv.imread(‘E:\imageload\example.png’)
cv.namedWindow(‘input_image’, cv.WINDOW_AUTOSIZE)
cv.imshow(‘input_image’, src)
get_image_info(src)
cv.imwrite(“E:/example.png”,src) #图片存储路径
gray=cv.cvtColor(src,cv.COLOR_BGR2GRAY) #使图片颜色变为灰度 # cv.imwrite(“E:/example.png”,gray)
cv.waitKey(0)

二.电脑摄像头的调取和显示

#电脑摄像头的调取和显示
import cv2 as cv
def video_demo():
capture=cv.VideoCapture(0)
#参数为视频设备的id ,如果只有一个摄像头可以填0,表示打开默认的摄像头 这里的参数也可以是视频文件名路径,只要把视频文件的具体路径写进去就好
while True: #只要没跳出循环,则会循环播放每一帧 ,waitKey(10)表示间隔10ms
ret, frame = capture.read()
#read函数读取视频(摄像头)的某帧,它能返回两个参数. 第一个参数是bool型的ret,其值为True或False,代表有没有读到图片. 第二个参数是frame,是当前截取一帧的图片
frame=cv.flip(frame,1)
#翻转 0:沿X轴翻转(垂直翻转) 大于0:沿Y轴翻转(水平翻转) 小于0:先沿X轴翻转,再沿Y轴翻转,等价于旋转180°
cv.imshow(“video”,frame)
pc=cv.waitKey(10) #超过10ms, waitKey函数会返回-1,如果10ms内在键盘按了某个按键,则 waitKey函数会返回对应按键的ASCII码值,ASCII码值一定大于0
if pc>0:
break
# if cv.waitKey(10) == ord(‘z’): # 键盘输入z退出窗口,不按z点击关闭会一直关不掉 也可以设置成其他键。 ord()函数返回对应字符的ASCII数值
# break
video_demo()
cv.destroyAllWindows()

list和array是不同的

python中的list是python的内置数据类型,list中的数据类型不必相同的,而array的中的数据类型必须全部相同。
a=[[1,2],[1,2]] #二维列表
print(a)
b=a[1][1]
print(b)
  运行结果:
  [[1, 2], [1, 2]]
  2
  注意:上述代码中读取二维列表元素的方法是a[1][1],而不是a[1,1]
  array代码如下:
  import numpy as np
a = np.array([[1,2],[1,2]]) #将列表转化为array类型
print(a)
b=a[1][1]
print(b)
c=a[1,1]
print©
运行结果:
  [[1 2]
  [1 2]]
  2
  2
  注意:将列表转换为数组类型后,要读取二维数组中的元素方法可以是a[1][1],也可以是a[1,1]。但是前面list就只能是a[1][1]
  补注:数组和列表的乘法也有区别
代码如下:
import numpy as np
a=np.array([[1,2],[1,2]])
b=a2
print(b)
c=[[1,2],[1,2]]
d=c
2
print(d)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用PythonOpenCV进行图像处理的例子: 首先,确保已经安装了PySimpleGUI、cv2和numpy库文件。可以使用以下命令通过pip安装它们: ```shell pip install pysimplegui pip install opencv-python pip install numpy ``` 然后,设计GUI界面。可以使用PySimpleGUI库来实现GUI可视化。以下是一个简单的GUI设计示例: ```python import PySimpleGUI as sg # 创建GUI窗口 layout = [[sg.Image(key='image')]] window = sg.Window('Image Processing', layout, finalize=True) # 打开内置摄像头 cap = cv2.VideoCapture(0) while True: event, values = window.read(timeout=0, timeout_key='timeout') # 实时读取图像 ret, frame = cap.read() # GUI实时更新 imgbytes = cv2.imencode('.png', frame)[1].tobytes() window['image'].update(data=imgbytes) if event == sg.WINDOW_CLOSED: break window.close() ``` 这段代码创建了一个名为"Image Processing"的GUI窗口,其中包含一个用于显示图像的图像框。通过打开内置摄像头,可以实时读取图像,并将其显示在GUI窗口中。当用户关闭窗口时,程序退出。 4、实时图像处理 4.1、阈值二值化 阈值二值化是一种常用的图像处理技术,可以将图像转换为黑白二值图像。以下是一个简单的阈值二值化示例: ```python # 读取图像 image = cv2.imread('image.jpg', 0) # 阈值二值化 _, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY) # 显示结果 cv2.imshow('Binary Image', binary_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,首先使用cv2.imread()函数读取一张灰度图像。然后,使用cv2.threshold()函数将图像进行阈值二值化处理。最后,使用cv2.imshow()函数显示二值化后的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值