opencv 里的图像是矩阵格式
girl=cv.imread(r"img\dog.jpg")
print(type(girl))
结果如下:
<class 'numpy.ndarray'>
图像的尺寸就表明共有多少个像素点,每个像素点有三个通道,分别代表b,g,r三层颜色,取值(0,255)之间。
当将变量x代入数组修改每个色层的像素之后,图像就会发生截然不同的变换。示例程序如下:
import cv2 as cv
import numpy as np
import math
# 像素计算
def access_pixel(image):
# 计录时值
t1=cv.getTickCount()
height,width,channels=image.shape
for row in range(height):
for col in range(width):
for c in range(channels):
pv=image[row,col,c]
if pv<200:
image[row,col,c]=20*1.2# 固定值
'''''
image[row,col,c]=255-pv# 255为白色,胶卷色
if pv<200:
image[row,col,c]=20*1.2# 固定值
if pv<200:
image[row,col,c]=pv*1.2# 部分高亮
'''''
cv.imshow("pixel_demo",image)
info(image)
# 计时,秒数=末时值-初时值/cpu频率
t2=cv.getTickCount()
time=(t2-t1)/cv.getTickFrequency()
print("time:%s s"%time)
print("t1:%s"%t1)
print("t2:%s"%t2)
print("-------------------开机时间!----------------------")
# 图像导入
def main2():
global girl
girl=cv.imread(r"img\dog.jpg")
girl=solid_size(girl,400)
print(type(girl))
# ——1图像尺寸调整
def solid_size(image,width=500):
h,w,c=image.shape
height=int(width/w*h)
image=cv.resize(image,(width,height),interpolation=cv.INTER_NEAREST)
cv.imshow("name",image)
return image
if __name__ == "__main__":
main2()
access_pixel(girl)
cv.waitKey(0)# 维持时间,为0时任意键退出
cv.destroyAllWindows()
运行结果如下:
目录:
(暂无)