当前位置: 移动技术网 > IT编程>开发语言>.net > .NET + OpenCV & Python + OpenCV

.NET + OpenCV & Python + OpenCV

2018年09月13日  | 移动技术网IT编程  | 我要评论

小丑奇兵,赣南教育学院,车模李莹

最近需要做一个图像识别的gui应用,权衡了opencv+ 1)qt,2)python gui,3).net后选择了.net。。。

本文给出c#+opencv和python+opencv的相应参考,节省大家时间。



(一)c#.net + opencv

1)下载并安装emgu库(for opencv on .net env)

download @ https://sourceforge.net/projects/emgucv/

2)how to use opencv on c#?

vs上配置emgu(库)

3)测试on c#.net


(二)python + opencv


按照官网的instruction一步步来,可以从source自己编译,也可以直接用二进制文件。

这里注意我遇到的一个错误,undefined cv2.sift():

attributeerror: 'module' object has no attribute 'sift'

查资料有的地方解释为高版本把sift当做non-free的module需要自己编译才有,具体参考这个帖子。

但我自己编译成功后还是没解决问题。。。于是试着吧opencv 2.3.1换成opencv 2.4.6.0,再按官网的instruction预编译二进制文件方法把cv2.pyd拷到python下,成功了。。。。

ps: 喜欢在mac上折腾的看看这个帖子吧。。。installing opencv 2.4.2 on mac osx mountain lion with python support


最后贴个python+opencv+numpy测试代码:

import cv2
import numpy as np
#import pdb
#pdb.set_trace()#turn on the pdb prompt

#test cv2 and numpy package
print cv2.__version__
a = np.arange(10)
print(a)

#read image
img = cv2.imread('d:\privacy\picture\little girl.jpg',cv2.imread_color)
gray = cv2.cvtcolor(img,cv2.color_bgr2gray)
cv2.imshow('tt',img);

#basic accessing
b,g,r = img[0,0];#blue,green,red
print b,g,r

rows,columns,channels = img.shape
print rows,columns,channels
print img.size

#channels split and merge
b,g,r = cv2.split(img)
img = cv2.merge([b,g,r])

#sift
detector = cv2.sift()
keypoints = detector.detect(gray,none)
img = cv2.drawkeypoints(gray,keypoints)
#img = cv2.drawkeypoints(gray,keypoints,flags = cv2.draw_matches_flags_draw_rich_keypoints)
cv2.imshow('test',img);
cv2.waitkey(0)
cv2.destroyallwindows()



结果:

\






关于computer vision更多的学习资料将继续更新,敬请关注本博客和新浪微博rachel____zhang。





如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网