c++获取图像的长宽 opencv_yi点分享 | opencv+python 常用方法汇总(持续更新)

b38d1404527ca599f61464e26d9a9d69.png
  1. 图像的输入、输出
  2. 获取图像基本信息
  3. 像素取反
  4. 色彩空间转换
  5. 捕捉视频中的颜色物块
  6. 通道的分离与合并
  7. 算术运算
  8. 逻辑运算
  9. 调整图像亮度、对比度
  10. 泛洪填充
  11. 模糊操作
  12. 高斯噪声、高斯模糊
  13. 边缘保留滤波(EPF)
  14. 像素直方图
  15. 像素直方图应用
  16. 直方图反向投影(定位)
  17. 模板匹配
  18. 图像二值化
  19. 图像金字塔
  20. 图像梯度
  21. Canny边缘提取
  22. 直线检测
  23. 提取水平、竖直线
  24. 圆检测
  25. 轮廓发现
  26. 对象测量
  27. 膨胀、腐蚀
  28. 开闭操作
  29. 其他形态学操作
  30. 分水岭算法(图像分割)
  31. 人脸检测
  32. 数字验证码识别

01、输入、输出

读取图像

src = cv.imread("E:/opencv/OPENCV_3.1/opencv/sources/samples/data/test.jpg")

显示图像

cv.imshow("input image", src)

保存图像

cv.imwrite("C:/Users/ASUS/Desktop/test1.jpg", gray)

从摄像头读进视频

def video_demo():  # opencv 读进来的视频无声音
    capture = cv.VideoCapture(0)  # 第0个摄像头
    while True:
        ret, frame = capture.read()
        frame = cv.flip(frame, 1)  # 1上下颠倒 0左右颠倒 -1都颠倒
        cv.imshow("video", frame)
        c = cv.waitKey(50)
        if c == 27:
            break

02、获取图像基本信息

def get_image_info(image):
    print(type(image))
    print(image.shape)
    print(image.size)
    print(image.dtype)
    pixel_data = np.array(image)
    print(pixel_data)

03、像素取反

# 自己写的方法
def access_pixels(image):
    print(image.shape)
    height = image.shape[0]
    width = image.shape[1]
    channels = image.shape[2]
    print("width: %s, height: %s, channels: %s" % (width, height, 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)

# opencv 的API
def inverse(img):
    dst = cv.bitwise_not(img)
    cv.imshow("inverse_demo", dst)

04、色彩空间转换

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)
    ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
    cv.imshow("ycrcb", ycrcb)

05、捕捉视频中的颜色物块

0134e17f2b68d5f1085c9a632dd25ef0.png
def extrace_object_demo():
    capture = cv.VideoCapture("E:/opencv/OPENCV_3.1/opencv/sources/samples/data/1.mp4")
    while True:
        ret, frame = capture.read()
        if not ret:
            break
        hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
        lower_hsv = np.array([0, 43, 46])
        upper_hsv = np.array([10, 255, 255])
        mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)
        dst = cv.bitwise_and(frame, frame, mask=mask)
        cv.imshow("dst", dst)
        cv.imshow("video", frame)
        cv.imshow("mask", mask)
        c = cv.waitKey(40)
        if c == 27:
            break

06、通道的分离与合并

src = cv.imread("E:/opencv/OPENCV_3.1/opencv/sources/samples/data/mua.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)

b, g, r = cv.split(src)  # 分离
cv.imshow("blue", b)
cv.imshow("green", g)
cv.imshow("red", r)

src[:, :, 2] = 0
src1 = cv.merge([b, g, r])  # 合并
cv.imshow("changed image", src)
cv.imshow("changed image1", src1)

07、算术运算

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 divide_demo(m1, m2):
    dst = cv.divide(m1, m2)
    cv.imshow("divide_demo", dst)

def multiply_demo(m1, m2):
    dst = cv.multiply(m1, m2)
    cv.imshow("multiply_demo", dst)

均值、方差

def others(m1, m2):
    M1, dev1 = cv.meanStdDev(m1) 
    M2, dev2 = cv.meanStdDev(m2)
    print(M1)
    print(M2)
    print(dev1)
    print(dev2)

08、逻辑运算

def logic_demo(m1, m2):
    # dst = cv.bitwise_and(m1, m2)  # 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值