Java教程

计算机视觉——1

本文主要是介绍计算机视觉——1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

图片显示:

import cv2
image = cv2.imread("3.1.jpeg")
cv2.imshow("flower",image)#显示的照片会自动销毁
#显示图像若没有下一句则照片会直接销毁,不会停留,
cv2.waitKey(10000)#目的:停顿当前场景一段时间
#此时电脑等待用户按键,若没有按键则会等待设置的时长然后才会执行下一句,若按键了会直接执行下一句,参数为0、负数、或空无限等待
cv2.destroyAllWindows()
#销毁所有正在显示的窗口
#cv2.imwrite("C:\.android",image)#这个路径有问题,换一个正确的路径就行
# D:/3.1.jpeg等同于D:\\3.1.jpeg 将照片保存到C盘下

输出位置:

#路径、窗口名中不可出现中文
import cv2
image = cv2.imread("3.1.jpeg")
#返回值就是图像,image即图像

for i in range(0,20):
    for j in range(0,20):
        image[i,j] = [0,0,255]
for i in range(0,20):
    for j in range(1003,1023):
        image[i,j] = [255,255,255]
for i in range(662,682):
    for j in range(1003,1023):
        image[i,j] = [0,255,0]
for i in range(662,682):
    for j in range(0,20):
        image[i,j] = [0,0,0]
for i in range(340,360):
    for j in range(490,510):
        image[i,j] = [0,255,255]
cv2.imshow("20040420",image)
cv2.waitKey()#此时等待用户按键,参数为0、负数、或空无限等待

获取图像属性:

#每幅图像都是由M行N列的像素(每一个小方块或者圆形或者其他形状)组成的,每一个像素都储存着一个像素值
import cv2
image = cv2.imread("3.1.jpeg")
print("获取色彩图像的属性:")
print("shape =",image.shape)
#获取像素个数
#返回垂直像素,水平像素,通道数,灰色图片通道数为1
print("size =",image.size)
#获取图片元素大小即垂直像素*水平像素*通道数
print("dtype =",image.dtype)
#获取图像的数据类型
image_Gray = cv2.imread("3.1.jpeg",0)
#读取与彩色图像对应的灰色图像,0表示灰色,1表示彩色可忽略不写,因为默认彩色
print("获取灰度图像的属性:")
print("shape =",image_Gray.shape)
print("size =",image_Gray.size)
print("dtype =",image_Gray.dtype)

px = image[291,218]
#获取当前位置的像素值
#PX为当前像素(当前小方块,先纵列再行)的像素值按照BGR返回(BLUE,GREEN,RED)
#把每一种颜色分量所在的区域叫做通道
#横轴像素有219个,对应的取值范围是0~218
#纵轴类似
print("坐标(291,218)上的像素的BGR是",px)
#输出像素值
px = [255,255,255]
#修改像素值,将(291,218)位置上的像素修改为【255,255,255】
print("改变后的元素值",px)

blue1 = image[:,:,0]#获取坐标(219,218)上B通道的像素值
green1 = image[:,:,1]#获取坐标(219,218)上G通道的像素值
red1 = image[:,:,2]#获取坐标(219,218)上R通道的像素值

数组:

import cv2
import numpy as np
#创建数组
n1 = np.array([1,2,3])
n2 = np.array([0.1,0.2,0.3])
n3 = np.array([[1,2],[3,4]])
print(n1,n2,n3)

#通过dtype,指定数组数据类型
list = [1,2,3]
n1 = np.array(list, dtype = np.float_)
n2 = np.array(list, dtype = float)
print(n1, n2)
print(n1.dtype)
print(type(n1[0]))

#创建三维数组 ndmin为3即为三维数组
nd1 = [1,2,3]
nd2 = np.array(nd1, ndmin = 3)
print(nd2)

#创建两行三列未初始化数组
n = np.empty([2,3])
print(n)

#创建无符号8位整数纯0数组
n = np.zeros((3,3),np.uint8)
#创建纯1数组
n = np.ones((3,3),np.uint8)

#随机数、数组的生成
n1 = np.random.randint(1,3,10)
print("随机生成10个1~3且不包括3的整数:")
print(n1)
n2 = np.random.randint(5,10)
print("size数组大小为空随机返回一个整数")
print(n2)
n3 = np.random.randint(5,size = (2,5))
print("随机生成5以内二维数组")

#数组加法
n1 = np.array([1,2,3])
n2 = np.array([4,5,6])
print(n1+n2)
#数组减法
print(n1-n2)
#数组乘法
print(n1*n2)
#数组除法
print(n1/n2)
#数组幂运算
print(n1**n2)
#数组比较运算返回TRUE/FALSE
print(n1 >= n2)
print(n1 == n2)
print(n1 <= n2)
print(n1 != n2)
#复制数组   两种
n2 = np.array(n1,copy = True)
n2 = n1.copy()

#以下分为两种 直接得到元素(取位置)或得到数组(切片)

#数组索引
print(n1[0])
#数组切片取前一个不取后一个,step为步长,当step为负数时表示倒着走
print(n1[0:2])
print(n1[1:])
print(n1[:3])
#反向索引 s
print(n1[-1])
print(n1[-1:-3:-1])
print(n1[::-1])
#二维数组索引
n = np.array([[0,1,2,3],[2,3,4,5],[7,3,4,5,]])
print(n[1])
print(n[1,2])
print(n[-1])
#二维数组切片
print(n[:2,1:])
print(n[1,:2])
print(n[:2,2])
print(n[:,:1])  #操作第一个切片之后剩下三个数组,后来的切边对每个数组都操作

#数组行索引 = 像素所在行数-1 = 像素纵坐标
#数组列索引 = 像素所在列数-1 = 像素横坐标

#创建图像
width = 200
height = 100
img = np.zeros((height,width),np.uint8)
cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()


这篇关于计算机视觉——1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!