Opencv简单图像操作方法实战

 更新时间:2024年02月18日 15:23:04   作者:stoAir  
OpenCV是一个开源的计算机视觉库,它提供了一系列丰富的图像处理和计算机视觉算法,这篇文章主要给大家介绍了关于Opencv简单图像操作方法的相关资料,需要的朋友可以参考下

Opencv

一、读取图片

1.imshow

Mat imread(const string& filename, intflags=1 );

flags:
enum
{
/* 8bit, color or not */
   CV_LOAD_IMAGE_UNCHANGED  =-1,
/* 8bit, gray */
   CV_LOAD_IMAGE_GRAYSCALE  =0,
/* ?, color */
   CV_LOAD_IMAGE_COLOR      =1,
/* any depth, ? */
   CV_LOAD_IMAGE_ANYDEPTH   =2,
/* ?, any color */
   CV_LOAD_IMAGE_ANYCOLOR   =4
};

Mat image0=imread("dota.jpg",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);//载入最真实的图像
Mat image1=imread("dota.jpg",0);//载入灰度图
Mat image2=imread("dota.jpg",199);//载入3通道的彩色图像
Mat logo=imread("dota_logo.jpg");//载入3通道的彩色图像
  • CV_LOAD_IMAGE_UNCHANGED,这个标识在新版本中被废置了,忽略。
  • CV_LOAD_IMAGE_ANYDEPTH- 如果取这个标识的话,若载入的图像的深度为16位或者32位,就返回对应深度的图像,否则,就转换为8位图像再返回。
  • CV_LOAD_IMAGE_COLOR- 如果取这个标识的话,总是转换图像到彩色一体
  • CV_LOAD_IMAGE_GRAYSCALE- 如果取这个标识的话,始终将图像转换成灰度
  • flags >0返回一个3通道的彩色图像。
  • flags =0返回灰度图像。
  • flags <0返回包含Alpha通道的加载的图像。

2.namedWindow

void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE ); 
  • WINDOW_NORMAL设置了这个值,用户便可以改变窗口的大小(没有限制)
  • WINDOW_AUTOSIZE如果设置了这个值,窗口大小会自动调整以适应所显示的图像,并且不能手动改变窗口大小。
  • WINDOW_OPENGL 如果设置了这个值的话,窗口创建的时候便会支持OpenGL。

3.imshow

void imshow(const string& winname, InputArray mat);

4.效果图

c++

python

二、图像操作

python

import cv2 as cv
import numpy as np
image = cv.imread("/home/stoair/Opencv/Images/1.png", 4)
cv.namedWindow("initial",cv.WINDOW_NORMAL)
cv.namedWindow("after",cv.WINDOW_NORMAL)
height = image.shape[0]
width = image.shape[1]
cv.imshow("initial",image)
for i in range(height):
	for j in range(width):
		(b, g, r) = image[i, j]
		ave = b/3 + g/3 + r/3
		image[i, j] = (ave, ave, ave)

cv.imshow("after",image) 
cv.waitKey(0)

c++

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs.hpp> 
#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
    Mat image0 = imread("/home/stoair/Opencv/Images/1.png", 4);
    namedWindow("initial", WINDOW_NORMAL);
    namedWindow("change", WINDOW_NORMAL);
    imshow("initial", image0);

    int height = image0.rows;
    int width = image0.cols;
    for(int i = 0; i < height; i++){
        for(int j = 0; j < width; j++){
            unsigned char b = image0.at<Vec3b>(i, j)[0];
            unsigned char g = image0.at<Vec3b>(i, j)[1];
            unsigned char r = image0.at<Vec3b>(i, j)[2];
            unsigned char ave = b/3 + g/3 +r/3;
            image0.at<Vec3b>(i, j)[0] = ave;
            image0.at<Vec3b>(i, j)[1] = ave;
            image0.at<Vec3b>(i, j)[2] = ave;
        }
    }

    imshow("change", image0);
    waitKey(0);
    return 0;
}

总结 

到此这篇关于Opencv简单图像操作方法的文章就介绍到这了,更多相关Opencv图像操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Python中如何使用yield

    在Python中如何使用yield

    在 Python 开发中,yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构、协程与并发都会用到它,文中详细介绍了yield的用法,需要的朋友可以参考下
    2021-06-06
  • Django项目创建到启动详解(最全最详细)

    Django项目创建到启动详解(最全最详细)

    这篇文章主要给大家介绍了关于Django项目创建到启动的步骤,本文介绍的方法算是最全最详细的一个项目,需要的朋友可以参考下
    2019-09-09
  • 解决pycharm上的jupyter notebook端口被占用问题

    解决pycharm上的jupyter notebook端口被占用问题

    今天小编就为大家分享一篇解决pycharm上的jupyter notebook端口被占用问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python 使用递归的方式实现语义图片分割功能

    python 使用递归的方式实现语义图片分割功能

    这篇文章主要介绍了python 使用递归的方式实现语义图片分割,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 如何解决Python读取图片路径存在转义字符的问题

    如何解决Python读取图片路径存在转义字符的问题

    这篇文章主要为大家详细介绍了如何解决Python读取图片路径时存在转义字符的问题,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2023-07-07
  • python模块之paramiko实例代码

    python模块之paramiko实例代码

    这篇文章主要介绍了python模块之paramiko,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python自动化办公之PPT段落的使用

    Python自动化办公之PPT段落的使用

    这篇文章将详细为大家介绍一些Python中PPT段落的一些使用:获取段落、段落添加内容、自定义段落等,文中的示例代码讲解详细,需要的可以参考一下
    2022-05-05
  • python 装饰器的使用示例

    python 装饰器的使用示例

    这篇文章主要介绍了python 装饰器的使用示例,帮助大家更好的理解和使用python装饰器,感兴趣的朋友可以了解下
    2020-10-10
  • 八个超级好用的Python自动化脚本(小结)

    八个超级好用的Python自动化脚本(小结)

    每天你都可能会执行许多重复的任务,例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等,本文主要介绍了Python自动化脚本,具有一定的参考价值,感兴趣的可以了解一下
    2022-07-07
  • 举例讲解Python常用模块

    举例讲解Python常用模块

    今天小编就为大家分享一篇关于举例讲解Python常用模块,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论