python图像识别opencv 怎样将opencv处理的图像显示在label标签上

图像处理(46)
安装好 OpenCV 之后,首先尝试加载一张最简单的图片并显示出来,代码示例:
第一种方式使用cv2.cv的LoadImage、ShowImage和SaveImage函数
import cv2.cv as cv
image=cv.LoadImage('img/image.png', cv.CV_LOAD_IMAGE_COLOR)
cv.NamedWindow('a_window', cv.CV_WINDOW_AUTOSIZE)
cv.ShowImage('a_window', image)
cv.SaveImage(&thumb.png&, thumb)
cv.WaitKey(0)
也可以直接使用cv2的imread、imwrite和imshow函数
import numpy as np
import cv2
img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('messigray.png',img)
cv2.destroyAllWindows()
imread函数还可以定义加载的mode,默认是以RGB模式处理图片:
import cv2
grayImage = cv2.imread('MyPic.png', cv2.CV_LOAD_IMAGE_GRAYSCALE)
cv2.imwrite('MyPicGray.png', grayImage)
import cv2
img = cv2.imread('img/image.png')
print img.shape
print img.size
print img.dtype
在处理图片的时候,我们经常会需要把一些信息直接以文字的形式输出在图片上,下面的代码将实现这个效果:
import cv2.cv as cv
image=cv.LoadImage('img/lena.jpg', cv.CV_LOAD_IMAGE_COLOR)
font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 3, 8)
y = image.height / 2
x = image.width / 4
cv.PutText(image,&Hello World !&, (x,y),font, cv.RGB(255, 255, 255))
cv.ShowImage('Hello World', image)
cv.WaitKey(0)
cv2.putText(frame,&'Hello World', (300,100),&0,&0.5, (0,0,255),2)
下面的例子将实现缩放图片并保存,这个在使用 OpenCV 做图像处理的时候都是很常用的操作:
import cv2.cv as cv
im = cv.LoadImage(&img/alkaline.jpg&)
thumb = cv.CreateImage((im.width / 2, im.height / 2), 8, 3)
cv.Resize(im, thumb)
cv.SaveImage(&thumb.png&, thumb)
import cv2
import numpy as np
img = cv2.imread('messi5.jpg')
res = cv2.resize(img,None,fx=2, fy=2, interpolation = cv2.INTER_CUBIC)
height, width = img.shape[:2]
res = cv2.resize(img,(2*width, 2*height), interpolation = cv2.INTER_CUBIC)
import cv2
import numpy as np
img = cv2.imread('messi5.jpg',0)
rows,cols = img.shape
M = np.float32([[1,0,100],[0,1,50]])
dst = cv2.warpAffine(img,M,(cols,rows))
cv2.imshow('img',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
img = cv2.imread('messi5.jpg',0)
rows,cols = img.shape
M = cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
dst = cv2.warpAffine(img,M,(cols,rows))
import cv2
import numpy as np
img = cv2.imread('mao.jpg')
rows,cols,ch = img.shape
pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]])
M = cv2.getAffineTransform(pts1,pts2)
dst = cv2.warpAffine(img,M,(cols,rows))
cv2.imshow('image',dst)
cv2.waitKey(0)
实际使用过程中,我们经常也需要对一些图片的颜色空间做一些改变之类的:
import cv2.cv as cv
im=cv.LoadImage('img/fruits.jpg',cv.CV_LOAD_IMAGE_COLOR)
res = cv.CreateImage(cv.GetSize(im), cv.CV_8UC2, 3)
cv.Convert(im, res)
cv.ShowImage(&Converted&,res)
res2 = cv.CreateImage(cv.GetSize(im), cv.CV_8UC2, 3)
cv.CvtColor(im, res2, cv.CV_RGB2BGR)
cv.ShowImage(&CvtColor&, res2)
cv.WaitKey(0)
cv.Convert():将图片从一个颜色空间转到另一个颜色空间
cv.CvtColor(src, dst, code):
cv2.cvtColor(input_image, flag)函数实现图片颜色空间的转换,flag 参数决定变换类型。如 BGR-&Gray flag 就可以设置为 cv2.COLOR_BGR2GRAY 。
一个简单的例子,下面的代码实现识别摄像视频中蓝色的部分:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
_, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
res = cv2.bitwise_and(frame,frame, mask= mask)
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
k = cv2.waitKey(5) & 0xFF
if k == 27:
cv2.destroyAllWindows()
以上的代码给出了视频中获取兴趣对象的基本思想。
对于一张图片的 R、G、B 通道,我们可以很方便的使用 OpenCV 获取并分离或者合并:
(这是将图像灰度化处理的一种方式)
import cv2.cv as cv
orig = cv.LoadImage('img/fruits.jpg')
b = cv.CreateImage(cv.GetSize(orig), orig.depth, 1)
g = cv.CloneImage(b)
r = cv.CloneImage(b)
cv.Split(orig, b, g, r, None)
merged = cv.CreateImage(cv.GetSize(orig), 8, 3)
cv.Merge(g, b, r, None, merged)
cv.ShowImage(&Image&, orig)
cv.ShowImage(&Blue&, b)
cv.ShowImage(&Green&, g)
cv.ShowImage(&Red&, r)
cv.ShowImage(&Merged&, merged)
cv.WaitKey(0)
import cv2
img = cv2.imread('img/image.png')
b,g,r = cv2.split(img)
img = cv2.merge((b,g,r))
cv2.copyMakeBorder函数
import cv2
import numpy as np
BLUE = [255,0,0]
img1 = cv2.imread('opencv_logo.png')
replicate = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP)
constant= cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:691669次
积分:8639
积分:8639
排名:第2265名
原创:43篇
转载:955篇
评论:70条
阅读:1007
(7)(14)(12)(8)(11)(13)(10)(21)(36)(15)(22)(55)(42)(47)(51)(17)(65)(21)(10)(25)(52)(15)(10)(5)(14)(8)(14)(70)(44)(32)(98)(119)(15)求助贴:怎么在tkinter的label中显示jpg或者bmp图像呢?_python吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:148,948贴子:
求助贴:怎么在tkinter的label中显示jpg或者bmp图像呢?收藏
用的是python3.3gif格式的可以用,但是不知道jpg或者bmp的怎么显示试了PIL,但是不知道怎么放在label中想试试python版本的opencv,但是不知道哪有的下载
登录百度帐号推荐应用> 博客详情
摘要: 代码地址:/juxiangwu/tensorflow-learning/tree/master/opencv
# -*- coding: utf-8 -*-
图像轮廓处理
import numpy as np
import cv2
img = cv2.imread('../../../datas/images/building.jpg')
imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
# 查找轮廓
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0,255,0), 1)
cv2.imshow("image",img)
cv2.waitKey()
cv2.destroyAllWindows()
人打赏支持
码字总数 6297
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥6060人阅读
python(61)
参考自:《Python计算机视觉》第十章
########################################################
OpenCV提供了两个Python接口,旧的cv模块使用OpenCV内部的数据类型,并且从Numpy使用起来可能需要一些技巧;而新的cv模块使用Numpy数组,并且使用起来更加直观。
导入新的cv模块的方式:import cv2
导入旧的cv模块的方式:
import cv2.cv
以下函数均来自cv2模块
#########################################################
读 / 写 显示以及转换图像
help(cv2.imread)
#读取图像result.jpg(在当前目录)
img=cv2.imread(&result.jpg&)
返回的img是一个Numpy的数组对象
OpenCV的图像为Numpy中的多维数组对象
help(cv2.imwrite)
输入文件名和待保存对象即可,函数imwrite()会根据文件后缀自动转换图像
cv2.imwrite(&result.jpg&, img) #保存为jpg格式的文件
help(cv2.cvtColor)
在OpenCV中,图像不是按传统的RGB颜色通道,而是按BGR顺序(即RGB的倒序)存储的。读取图像时默认的是BGR
颜色空间的转换用函数cvtColor()实现,常用的转换代码为:
cv2.COLOR_BGR2GRAY
#BGR图像转换为灰度图像
cv2.COLOR_BGR2RGB
#BGR格式图像转换为RGB格式图像
cv2.COLOR_GRAY2BGR
#灰度图像转换成BGR图像
上面每个转换代码中,转换后的图像颜色通道数与对应的转换代码相匹配,比如对于灰度图像只有一个通道,对于RGB和BGR图像则有三个图像
im=cv2.imread(&result.jpg&)
#创建灰度图像
gray=cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
help(cv2.imshow)
输入参数为窗口名和图像对象即可
help(cv2.waitKey)
参数可选,为空表示窗口一直停留,直到有按键按下;可以为数字,表示窗口停留的时间,以毫秒计
im=cv2.imread('result.jpg')
cv2.imshow('opencv', im)
cv2.waitKey()
#####################################################################
单纯使用Python来处理视频有些困难,因为需要考虑速度 / 编解码器 / 摄像机 / 操作系统和文件格式。目前还没有针对Python的视频库,使用OpenCV的Python接口是唯一还不错的选择。
OpenCV能够很好的支持从摄像头读取视频
example:捕获视频帧并在OpenCv窗口中显示这些视频帧
import cv2
#设置视频捕获
cap=cv2.VideoCapture(0)
while True:
ret,im=cap.read()
#显示在窗口上
cv2.imshow('video test', im)
key=cv2.waitKey(10)
if key==27:
if key==ord('' ):
cv2.imwrite('vid_result.jpg', im)
程序详解:
1.捕获对象VideoCapture从摄像头或文件捕获视频。通过一个整数进行初始化,该整数为视频设备的id:如果仅有一个摄像头与计算机相连接,那么该摄像头的id为0;
2.read()方法解码并返回下一视频帧,第一个变量ret是一个判断视频帧是否成功读入的标志,第二个变量则是实际读入的图像数组;
2.函数waitKey()等待用户按键,如果按下的是Esc(ASCII码是27)键,则退出应用;如果按下的是空格键,就保存该视频帧
cap=cv2.VideoCapture(videoname)
如果输入的是视频名,则调用该视频流
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:489591次
积分:7447
积分:7447
排名:第2969名
原创:275篇
转载:40篇
译文:10篇
评论:64条
(6)(10)(2)(3)(9)(7)(4)(1)(2)(1)(2)(3)(4)(4)(7)(11)(4)(9)(6)(5)(26)(38)(25)(36)(39)(42)(17)(2)1273人阅读
Python(8)
源码如下:
import numpy as np
import cv2
img = cv2.imread('lena.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('lena.png',img)
cv2.destroyAllWindows()
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:205744次
积分:2942
积分:2942
排名:第12196名
原创:112篇
评论:52条
(1)(3)(1)(1)(1)(1)(1)(3)(8)(5)(3)(4)(7)(1)(8)(28)(19)(12)(4)(3)(2)(2)(1)}

我要回帖

更多关于 opencv 反光图像处理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信