python中pixels函数_Python+OpenCV3.3图像处理(一)

接下来的几篇文章将会记录本人学习计算机视觉的第一个课程的学习成果,与各位共享。

环境搭建:win10

pip install opencv-python

pip install opencv-contrib-python

pip install pytesseract

以上命令安装完所需的库

from cv2 import cv2 as cv

import numpy as np

def video_demo():

capture = cv.VideoCapture(0)#捕获摄像头

while(True):

ret,frame = capture.read()#获取摄像头数据流

cv.imshow("video",frame)

c = cv.waitKey(50)

if c == 27:

break

def color_space_demo(image):#色彩空间

gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)

cv.imshow("gray",gray)

hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV)

# cv.imshow("hsv",hsv)

yuv = cv.cvtColor(image,cv.COLOR_BGR2YUV)

# cv.imshow("yuv",yuv)

# 转换图像二值图

ret,dst = cv.threshold(gray,180,255,cv.THRESH_BINARY)

cv.imshow('binary:',dst)

def access_pixels(image):

height,width,channels = image.shape

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

cv.imshow("pixels_demo",image)

def inverse(image):

# 对图像矩阵中的每个像素值进行二进制或操作

# 图像灰度值,黑~白,0~255,一般计算方法:Gray=R*0.3+G*0.59+B*0.11;

dst = cv.bitwise_not(image)

cv.imshow("image change",dst)

rows,cols,channels = image.shape

roi = image[0:100,0:100]

def get_image_info(image):

# rows,cols,channels = img2.shape

print(image)

print(type(image))

print(image.shape)

print(image.size)

print(image.dtype)

print("------hello---------")

src = cv.imread("./dance.jpg")

cv.namedWindow("Input Image",cv.WINDOW_AUTOSIZE)

cv.imshow("Input Image",src)

gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)

# get_image_info(gray)

cv.imwrite("./img_gray.jpg",gray)

# getTickCount()表示操作系统启动至当前代码时所走的tick数,getTickFrequency()函数获得机器主频,(t2 - t1)/cv.getTickFrequency()*1000)表示,运行

# 所花tick数/电脑运行频率得到总的运行时间,单位为s,*1000换算为ms

t1 = cv.getTickCount()

color_space_demo(src)

inverse(src)

#access_pixels(src)

#video_demo()

t2 = cv.getTickCount()

access_pixels(src)

print("time:%sms"%((t2 - t1)/cv.getTickFrequency()*1000))

cv.waitKey(0)

cv.destroyAllWindows()

以上代码代码实现读入图片,显示图片,打开摄像头获取摄像头的视频数据。

还涉及色彩空间的知识,目前的理解就是不同格式的图片。

关于inverse那个函数,那个函数等于就是调用现成的接口以实现access_pixels函数中通过几个for循环实现的功能,无需等待,运行即可得到结果。足见,底层语言的高效率,python还是太嫩了。

注意:opencv读取的视频是没有声音的。(p1--p4)

======================

"多年后"补记坑:

1.运行报如下错误:

C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

提示中很显然看出是图片读入失败,尝试print图片信息显示为None,所以肯定图片没读进来,应该是路径出了问题。一番搜索发现,windows默认路径应该是反斜杠,我们应该改成斜杠,但是修改后发现问题依然没能解决。凭着多年的直觉,应该是文件夹名称的问题,尝试一番果然,文件夹名称最好用英文,中文会有莫名其妙的冲突。。。。。

2.waitKey(decay)

decay为0时,无限等待,这里需要注意,单位是ms

3.hsv,yuv,ray,色彩空间,自行百度

4.inconsistent use of tabs and spaces in indentation (, line 42)pylint(syntax-error)

补记:

当我们使用anaconda时,在visual stdio code中切换环境,activate 环境名,deactivate退出环境

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值