2021-02-08 Python OpenCV GaussianBlur()函数

2021-02-08 Python OpenCV GaussianBlur()函数,第1张

//自己写的代码,拖动鼠标截取一部分图像

#include <cvh>

#include <highguih>

bool drawing = false;

CvRect rect;

CvPoint origin;

IplImage src;

IplImage dst;

void onMouse(int event,int x,int y,int flags,void param = NULL);

int main(int argc, char argv[])

{

src = cvLoadImage("D:\\Lenajpg", -1);

cvNamedWindow("源",1);

cvSetMouseCallback("源",onMouse,NULL);//捕捉鼠标

cvShowImage("源",src);

cvWaitKey(0);

cvDestroyAllWindows();

cvReleaseImage(&src);

cvReleaseImage(&dst);

return 0;

}

//鼠标事件处理函数

void onMouse(int event,int x,int y,int flags,void param)

{

if(event == CV_EVENT_LBUTTONDOWN && !CV_EVENT_MOUSEMOVE)

{

drawing = true;

origin=cvPoint(x,y);

rect=cvRect(x,y,0,0);

}

else if(event==CV_EVENT_MOUSEMOVE)

{

if(drawing)

{

rectx=MIN(originx, x);

recty=MIN(originy,y);

rectheight = abs(originx-x);

rectwidth = abs(originy-y);

}

}

else if(event == CV_EVENT_LBUTTONUP )

{

drawing = false;

if(rectheight==0 || rectwidth==0)

{

cvDestroyWindow("截图");

return;

}

dst=cvCreateImage(cvSize(rectwidth,rectheight),src->depth,src->nChannels);

cvSetImageROI(src,rect);

cvCopy(src,dst);

cvResetImageROI(src);

cvNamedWindow("截图",1);

cvShowImage("截图",dst);

cvSaveImage("截图jpg",dst);

cvWaitKey(0);

cvDestroyWindow("截图");

}

}

通过resize重置尺寸

参数:,输出尺寸(一般我不用这个,我传None),宽的比例,高的比例

例子:将img,缩小一半显示,那么宽高为原尺寸的05倍

img = cv2resize(img,None,fx=05,fy=05)

设置完尺寸后再显示

cv2imshow('img',img)

cv2waitKey(0)

希望我的回答对你有帮助!

Mat类:

是用于保存图像以及其他矩阵数据的数据结构。

图像载入函数imread():

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

filename表示图像载入的路径;

flags为载入标识。

flags=0 将图像转换为灰度再返回;

flags=1 将图像转换成彩色再返回;

flags=2 若载入图像的深度是16位或者32位,就返回对应的图像深度,否则,将图像转换为8位图像再返回。

flags=2|4 载入最真实无损的源图像

若flags不在枚举类型当中,flags>0 返回一个三通道的彩色图像;flags=0 返回灰度图像;flags<0 返回包含Alpha通道的加载图像。

图像显示函数imshow():

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

winname填写要显示的窗口标识名称;

mat填需要显示的图像。

输出图像到文件imwrite():

bool imwrite(const string& filename, InputArray img, const vector& params=vector());

第一个参数filename表示要写入的文件名

第二个参数img表示Mat类型的图像数据

通道分离split()函数;

void split(const Mat& src, Mat mvbegin);

void split(InputArray m, OutputArrayofArray mv);

第一个参数表示需要进行分离的多通道数组;

第二个参数表示函数 输出数组或输出的vector容器。

通道合并merge()函数:

void merge(const Mat mv, size_t count, OutputArray dst)

void merge(InputArrayOfArray mv, OutputArray dst);

第一个参数mv表示需要被合并的输入矩阵或vector容器的阵列,mv参数中所有矩阵必须拥有一样的尺寸;

第二个参数count表示当mv为空白的C数组时,代表输入矩阵的个数,通常可以省略不写;

第三个参数dst表示输出矩阵,和mv拥有一样的尺寸和深度

Python与OpenCV图像简单 *** 作

文章目录

OpenCV安装

1读取

2保存

3截取部分图像

4翻转

5缩放

6转换为灰度图像

7在一个窗口中显示两张

8绘图功能

OpenCV安装

打开命令行输入 pip install opencv-python(前提是有python环境)

1读取

使用 cv2imread() 函数,给出了几种读取路径的写法

import cv2#导入opencv包

#python中不需要声明变量

img1 = cv2imread("D:/test/1jpg")#绝对路径,推荐

img2 = cv2imread("D:\\test\\2jpg")#通常是两个斜线,单右斜线会被当成转义符

img3 = cv2imread("3jpeg")#相对路径,将放在py文件对应目录下

cv2imshow("test1", img1)

cv2imshow("test2", img2)

cv2imshow("test3", img3)

cv2waitKey(0)#没有这一句会一闪而过

##waitkey(delay=0),等待用户输入按键,返回该按键的值

2保存

使用 cv2write() 函数保存

import cv2# 导入OpenCV包

img=cv2imread("D:/test/3png",cv2IMREAD_COLOR)

cv2imshow("test",img)#OpenCV可以实现不同格式转换,支持jpg、bmp、png等格式相互无损转换

cv2imwrite("D:/test/31png",img)#将改变后的图像保存

cv2imwrite("D:/test/32bmp",img)

cv2waitKey(0)

3截取部分图像

import cv2

img = cv2imread("D:\\test\\2jpg")

frame = img[200:400,200:400] #截取部分图像,200-400行,200-400列

cv2imshow("test",frame)#显示截取后的图像

cv2waitKey(0)

4翻转

使用cv2flip(img,flipcode)来进行翻转

flipcode控制翻转方向

import cv2

img=cv2imread("D:/test/5jpg",cv2IMREAD_COLOR)

flipCode1=1#大于0左右翻转

flipCode2=0#等于0上下翻转

flipCode3=-1#小于0先上下翻转再左右翻转

img1 = cv2flip(img, flipCode1)#filpCode控制翻转方向

img2 = cv2flip(img, flipCode2)

img3 = cv2flip(img, flipCode3)

cv2imshow("test",img)

cv2imshow("test1",img1)

cv2imshow("test2",img2)

cv2imshow("test3",img3)

cv2waitKey(0)

5缩放

cv2resize(img,dsize,fx,fy),dsize和fx,fy都可以设置大小,不能同时为0

import cv2# 导入OpenCV包

img = cv2imread("D:/test/2jpg",cv2IMREAD_COLOR)

img1 = cv2resize(img, (700, 700))#设置输出的尺寸

img2 = cv2resize(img, None, fx=07, fy=07)#None的位置本来是输出的尺寸,这里设置了缩放因子

#fx-水平轴上的比例因子,fy-垂直轴上的比例因子

cv2imshow("test", img)

cv2imshow("test1", img1)

cv2imshow("test2", img2)

cv2imwrite("D:/test/resizejpg", img1)# 保存图像

cv2waitKey(0)

6转换为灰度图像

cv2cvtColor(img, cv2COLOR_RGB2GRAY)

cv2COLOR_RGB2GRAY表示把RGB图像转为灰度图像,2前是转换前,2后是转换后

import cv2#导入opencv包

#python中不需要声明变量

img = cv2imread("D:/test/1jpg")#cv2imread读进来的格式是BGR(W,H,C),而不是RGB

cv2imshow("BGR", img)

#将图像转换为RGB格式

img1 = cv2cvtColor(img, cv2COLOR_BGR2RGB)#因为opencv读取是按BGR读的,所以转换为RGB反而不像原图

cv2imshow("RGB",img1)

#将图像转换为灰度图像

img2 = cv2cvtColor(img1, cv2COLOR_RGB2GRAY)

cv2imshow("GRAY",img2)

cv2waitKey(0)

7在一个窗口中显示两张

import cv2

import numpy as np

img = cv2imread("D:/test/resizejpg")

img2 = cv2imread("D:/test/resizejpg")

#imgs = nphstack([img,img2])#在水平方向上平铺

imgs = npvstack([img,img2])#在竖直方向上堆叠

cv2imshow("mutil_pic", imgs)

cv2waitKey(0)

8绘图功能

import cv2

import numpy as np

img = 255npones((350,512,3),npuint8)#unit8:0~255

#ones()为创建一个元素均为一的矩阵

font = cv2FONT_HERSHEY_DUPLEX

#font = cv2FONT_HERSHEY_COMPLEX# 设置字体

#文本 # 对象、文本、 位置、 字体、字体大小、颜色、 字体粗细

cv2putText(img, "happy day", (50,300), font, 08, (25, 25, 25), 2,)#颜色可以自己调整,范围为0-255

#线 #起点 终点 颜色 粗细

cv2line(img, (50,310), (185,310), (0, 0,0),4)

#矩形 #左上顶点 右下顶点

cv2rectangle(img, (80,8), (200,100), (0, 255,0),2)

#圆形 #圆心 半径 颜色 控制是否填充 -1表示填充

cv2circle(img,(60,60),30,(0,0,213),1)

#椭圆 #中心点 长轴 短轴 偏转角度,起始角度,终止角度

cv2ellipse(img,(100,300),(100,50),180,0,360,(20,213,79),1)

cv2imshow("Draw", img)

cv2waitKey(0)

1npvstack([img1,img2]) 当img1和img2矩阵维度相同时才能堆叠

2除了imread,imwrite 函数没有返回值以外,flip,resize,cvtColor,vstack,hstack都有返回一个回来。

以上就是关于2021-02-08 Python OpenCV GaussianBlur()函数全部的内容,包括:2021-02-08 Python OpenCV GaussianBlur()函数、opencv常用函数、opencv如何在显示的窗口中用鼠标提取一块区域等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10147568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存