# -*- coding:utf-8 _*-
"""
@Author:tzting
@File: 像素运算06与07.py
@Time: 2020/11/12 11:14
"""
"""
像素运算:算术运算与逻辑运算
算术运算:加、减、乘、除;应用它可以调节亮度;调整对比度
逻辑运算:与、或、非;应用-遮罩层控制
代码层面知识点:
常见图像混合
算法运算与几何运算
"""
import tensorflow as tf
import cv2 as cv
import numpy as np
# 算术运算
def add_demo(m1,m2): # 加
dst = cv.add(m1,m2)
cv.imshow("add_demo",dst)
def subtract_demo(m1,m2): # 减
dst = cv.subtract(m1,m2)
cv.imshow("subtract_demo",dst)
def multipy_demo(m1, m2): # 乘
dst = cv.multiply(m1, m2)
cv.imshow("multipy_demo", dst)
def divide_demo(m1, m2): # 乘
dst = cv.divide(m1, m2)
cv.imshow("divide_demo", dst)
def others(m1, m2):
# M1 = cv.mean(m1) # 均值 图像是数组
# M2 = cv.mean(m2)
M1, dev1 = cv.meanStdDev(m1) # 得到均值和方差 ,方差越大,说明图像之间差异性越大
M2, dev2 = cv.meanStdDev(m2)
h,w = m1.shape[:2]
print(M1)
print(M2)
print(dev1)
print(dev2)
img = np.zeros([h,w],np.uint8)
M, dev = cv.meanStdDev(img)
print(M)
print(dev)
# 逻辑运算
def logic_demo(m1): # ,m2):
#dst = cv.bitwise_and(m1,m2) # 与运算
#dst = cv.bitwise_or(m1, m2) # 或运算
dst = cv.bitwise_not(m1) # 或对一张图像而言
cv.imshow("logic_demo", dst)
def extract_object_demo(): # 对颜色对象很快的提取出来
capture = cv.VideoCapture("C:/Users/tzt/Desktop/opencv-python/ex.mp4")
while(True):
ret, frame = capture.read() # 如果有的话返回真,如果没有的话,返回flase,frame返回图像,ret返回值
if ret == False:
break;
# 用inrange色彩空间分离,不过要先转化为hsv图像空间!!!
hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
lower_hsv = np.array([35,43,46]) # 绿色的低值
higher_hsv = np.array([77,255,255]) # 绿色的高值
mask = cv.inRange(hsv, lower_hsv,higher_hsv) # 得到二值图像
dst = cv.bitwise_and(frame, frame, mask=mask)
cv.imshow("video",frame)
cv.imshow("mask",dst)
c = cv.waitKey(40)
if c == 27: # braek的值
break;
def contrast_brightness_demo(image,c,b): # 调整亮度b和对比度c
h,w,ch = image.shape
blank = np.zeros([h,w,ch],image.dtype)
dst = cv.addWeighted(image,c,blank,1-c,b)
cv.imshow("contrast_brightness_demo",dst)
src2 = cv.imread("C:/Users/tzt/Desktop/opencv-python/lena.png")
src1 = cv.imread("C:/Users/tzt/Desktop/opencv-python/contours.png")
print(src1.shape)
print(src2.shape)
# cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("sc1", src1)
cv.imshow("sc2", src2)
"""
add_demo(src1,src2) # 大于255截断为255,黑色为0
subtract_demo(src1,src2) # 小于0截断为0
multipy_demo(src1,src2)
divide_demo(src1,src2)
others(src1,src2)
logic_demo(src2)
extract_object_demo()
"""
contrast_brightness_demo(src2,1.2,100)
cv.waitKey(0)
cv.destroyAllWindows()
像素运算
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 返回目录 1. 亮度调整 2. 图像相加 像素运算 5:图像叠加 3. 图像相减 4. 图像相除 图像相乘图像相乘...
- 返回目录 1. 方形Logo:采用两张图像的所有分量加权和, 部分更新右上角中 输出结果 2. 圆形logo:采用...
- 返回目录 1. 直方图获取与显示 相关函数: cv2.calcHist(images,channels,mask,...