欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET + OpenCV & Python + OpenCV

程序员文章站 2022-03-24 23:43:05
最近需要做一个图像识别的gui应用,权衡了opencv+ 1)qt,2)python gui,3).net后选择了.net。。。本文给出c#+opencv和python+opencv的相应参考,节省...

最近需要做一个图像识别的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()



结果:

.NET + OpenCV & Python + OpenCV


.NET + OpenCV & Python + OpenCV




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