openCV第二节

  1. 像素运算
import numpy as np
import cv2
#四则运算过程中:两个像素相加,如果大于255,则为255,小于0,则为0
#加法
def pixel_add(image,image1):
	image_add = cv2.add(image,image1)
	return image_add
#减法
def piexl_subtract(image,image1):
	return cv2.subtract(image,image1)
#除法
def pixel_divide(image,image1):
	return cv2.divide(image,image1)
#乘法
def pixel_multiply(image,image1):
	return cv2.multiply(image,image1)
#图像1,2的shape一致
image = cv2.imread('1.jpg')
image1 = cv2.imread('2.jpg')
image_add = pixel_add(image,image1)
cv2.imshow('image_add',image_add)
image_subtract = pixel_subtract(image,image1)
cv2.imshow('image_subtract',image_subtract)
image_divide = pixel.divide(image,image1)
cv2.imshow('image_divide',image_divide)
image_multiply = pixel_multiply(image,image1)
cv2.imshow('image_multiply',image_multiply)
cv2.waitKey(0)
cv2.destroyAllWindows()
#四则运算之后,像素还可以做一些逻辑运算
def logistic_demo(image,image1):
	#逻辑与
	image_and = cv2.bitwise_and(image,image1)
	#逻辑或:
	#bitwise_or是对二进制数据进行“或”操作,即对图像(灰度图像或彩色图像均可)每个像素值			  进行二进制“或”操作,1|1=1,1|0=0,0|1=0,0|0=0
	#bitwise_xor是对二进制数据进行“异或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作,1^1=0,1^0=1,0^1=1,0^0=0
	image_or = cv2.bitwise_or(image,image1)
	image_xor = cv2.bitwise_xor(image,image1)
	#逻辑not:1变为0,0变为1
	image_not = cv2.bitwise_not(image)
#除了以上计算,还可以计算均值与方差:
def other_demo(image):
	image_mean = cv2.mean(image)
	image_mean1,image_std = cv2.meanStdDev(image)
	return image_mean,image_mean1,image_std
  1. ROI与泛洪填充
#ROI块获取
image =cv2.imread('1.jpg')
#ROI区域
roi_place = image[100:300,150:300]
#显示ROI信息
cv2.imshow('roi_place',roi_place)
#修改ROI区域信息,然后数据写回到原来image
gray = cv2.cvtColor('roi_place',cv2.COLOR_BGR2GRAY)
back_image = cv2.cvtColor('gray',cv2.COLOR_GRAY2BGR)
image[100:300,150:300] = back_image
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()

#泛洪填充
#首先取一个ROI块,然后进行色彩填充
image = cv2.imread('windows.jpg')
def fill_color_demo(image):
    image_copy = image.copy()
    h,w = image.shape[:2]
    mask = numpy.zeros([h+2,w+2],image.dtype)
    cv2.floodFill(image_copy,mask,(50,50),(40,128,255),(100,100,100),(50,50,50),cv2.FLOODFILL_FIXED_RANGE)
    cv2.imshow('image_copy',image_copy)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
fill_color_demo(image)
def binary_color_demo():
    image = numpy.zeros([400,400,3],numpy.uint8)
    image[100:300,100:300,:] = 255
    cv2.imshow('fill_image',image)
    mask = numpy.zeros([402,402],numpy.uint8)
    cv2.floodFill(image,mask,(200,200),(40,40,40),
    cv2.FLOODFILL_MASK_ONLY)
    cv2.imshow('image_copy',image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
binary_color_demo()
#FLOODFILL_MASK_ONLY和FLOODFILL_FIXED_RANGE区别:
#cv.FLOODFILL_FIXED_RANGE: 指定颜色填充 填充颜色的判断依据:
#src(seed.x’, seed.y’) - loDiff <= src(x, y) <= src(seed.x’, seed.y’) +upDiff
#cv.FLOODFILL_MASK_ONLY: 指定位置填充
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值