学习视频:python+opencv3.3视频教学 基础入门
前一节学习记录:
Python+OpenCV(一)——基础操作
Python+OpenCV(三)——色彩空间
Python+OpenCV(四)——像素运算
Python+OpenCV(五)——ROI和泛洪填充
Python+OpenCV(六)——均值/中值/自定义/高斯模糊、高斯噪声处理、高斯双边滤波
Python+OpenCV(七)——直方图及其应用
Python+OpenCV(八)——图像二值化
Python+OpenCV(九)——图像金字塔、图像梯度
Python+OpenCV(十)——Canny边缘提取
Python+OpenCV(十一)——直线检测、圆检测
Python+OpenCV(十二)——轮廓发现
Python+OpenCV(十三)——对象测量
Python+OpenCV(十四)——膨胀与腐蚀
Python+OpenCV(十五)——开闭操作
Python+OpenCV(十六)——顶帽、黑帽
Python+OpenCV(十七)——人脸识别
Python+OpenCV(十八)——数字/字母验证码识别
源码如下:
# -*- coding = utf-8 -*-
# @Time : 2021/7/30 20:24
# @Author : 西兰花
# @File : OpenCV02.py
# @Software : PyCharm
import cv2 as cv
import numpy as np
def access_pixel(image): # 修改像素函数
print(image.shape)
height = image.shape[0] # 列
width = image.shape[1] # 行
channels = image.shape[2] # 通道
print("height : %s, width : %s, channels : %s"%(height, width, channels))
# for row in range(height):
# for col in range(width):
# for c in range(channels):
# pv = image[row, col, c]
# image[row, col, c] = 255 - pv
# 使用bitwise_not()函数将所有像素值取反,函数执行更高效
image = cv.bitwise_not(image)
cv.imshow("pixels_demo", image)
def create_image():
"""
img = np.zeros([300, 300, 3], np.uint8) # 创建一个有3个通道的图像
img[:, :, 0] = np.ones([300, 300]) * 255 # 第一条通道都赋值为255,就是blue
img[:, :, 1] = np.ones([300, 300]) * 255 # 第二条通道都赋值为255,就是green
img[:, :, 2] = np.ones([300, 300]) * 255 # 第三条通道都赋值为255,就是red
# 如果三条通道同时都赋值为255,就是white
cv.imshow("new image", img)
img = np.ones([300, 500, 1], np.uint8) # 创建1通道图像,初始化
img = img * 0
cv.imshow("new image", img)
cv.imwrite("C:/Users/Administrator/Pictures/PS/newImage.jpg", img)
m1 = np.ones([3, 3], np.uint8)
m1.fill(12222.388)
print(m1)
m2 = m1.reshape([1, 9])
print(m2)
"""
print("------ Hello OpenCV ------")
src = cv.imread("C:/Users/Administrator/Pictures/PS/11.png") # 读取色彩空间默认为blue,green,red3个通道
# 通过GUI创建窗口,窗口大小根据照片大小自动调整
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src) # 显示图像
t1 = cv.getTickCount()
access_pixel(src)
#create_image()
t2 = cv.getTickCount()
time = (t2 - t1)/cv.getTickCount() # 测试运行时间
print("time : %s ms"%(time*1000))
cv.waitKey(0)
cv.destroyAllWindows() # 销毁/关闭所有窗口