taget 发表于 2013-6-15 13:27:06

在树莓派中调用weibo接口,实现自动拍照上传到微博

搞软件的,硬件没做什么特殊的diy

硬件:树莓派一枚 + usb 摄像头 没配置无线网卡,用的有线直接连到路由器

软件:

python + opencv


cap.py:

import os
import time
from logger import logger
from WeiboInterface import WeiboInterface
import cv

cap = cv.CaptureFromCAM(0)
cv.SetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_HEIGHT, 240)
cv.SetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_WIDTH, 320)


def cap_img(file):
      frame = cv.QueryFrame(cap)
      cv.SaveImage(file, frame)
      return file

def remove_img(file):
      if os.path.exists(file):
                os.remove(file)
                return True
      else:
                return False

logger = logger("main.log")

def main():
      img_file = 'tmp.jpg'
      weibo = WeiboInterface()
      path = cap_img(img_file)
      weibo.uploade_img(path)
      remove_img(path)
#可以在此处设置一个间隔时间,循环向认证的微薄上传图片
if __name__ == '__main__':
      main()


WeiboInterface.py:

app_key = 'xxxxxxx'
app_secret = 'xxxxxxxxxxxxxxxxxx'
r_url = 'https://api.weibo.com/oauth2/default.html'

#app_key 和 app_secret 从weibo开放平台申请一个应用后获得
#申请网址 http://open.weibo.com/apps

import time,os,sys
from logger import logger

logger = logger("main.log")

from weibo import APIClient # 从weibo 开放平台下载的api
class WeiboInterface:

      def __init__(self):
                self._client = APIClient(app_key, app_secret, r_url)
                url = self._client.get_authorize_url()
                print url

#在浏览器输入打印的url,然后会跳出一个登录的界面
#登录成功后把url中的code 复制过来,完成认证
                code = raw_input("Input code:")
                r = self._client.request_access_token(code)
                self._client.set_access_token(r.access_token, r.expires_in)

      def uploade_img(self, file_path):
                self._ret_msg = self._client.upload.statuses__upload( \
                           status='uploaded at ' + str(time.time()),\
                           pic=open(file_path, 'rb'))
                return self.parse_msg()

      def parse_msg(self):
                '''
                TODO
                '''
                print self._ret_msg
                return True

有感兴趣的可以一起研究

ps: 摄像头只能拍出320*240 的图片,否则会出现select time out的错误,而且质量很差,根本看不清,不知道是啥原因,电源,驱动,有人知道吗?
google了一下 某老外也遇到过,但是他的图片很清晰
http://fanjita.org/serendipity/archives/57-Capturing-webcam-video-with-OpenCV-on-Raspberry-Pi-Arch-Linux.html




taget 发表于 2013-6-15 13:28:47

上传的图片就是这种效果

whtech1 发表于 2013-6-15 16:47:39

写的很不错。图片质量差是设置不对,我之前设置摄像头拍照正常。

taget 发表于 2013-6-16 17:52:26

whtech1 发表于 2013-6-15 16:47 static/image/common/back.gif
写的很不错。图片质量差是设置不对,我之前设置摄像头拍照正常。

哦,谢谢,原来是摄像头质量比较次(长城宽带活动赠的),焦距没调节好。经过调节,好多了,不过还是只能拍320*240 大小的图片。

whtech1 发表于 2013-6-17 14:42:39

taget 发表于 2013-6-16 17:52 static/image/common/back.gif
哦,谢谢,原来是摄像头质量比较次(长城宽带活动赠的),焦距没调节好。经过调节,好多了,不过还是只能 ...

普通摄像头也就这个标准了

linux0ne 发表于 2013-6-21 20:50:04

图上质量的问题如何解决的呢?

taget 发表于 2013-6-22 00:12:44

linux0ne 发表于 2013-6-21 20:50 static/image/common/back.gif
图上质量的问题如何解决的呢?

是摄像头的问题,调整了焦距,好点了,不过分辨率只能是320*240

fashoionxu 发表于 2013-6-26 10:59:00

技术贴是要顶的。
分辨率是摄像头的硬件分辨率,不能超,超了就出错了。

smching 发表于 2013-6-30 21:46:33

摄像头只能拍出320*240 的图片,否则会出现select time out的错误,而且质量很差,根本看不清,不知道是啥原因我看到很多人遇到此问题,它是Raspbian不稳定引起的。有人安装了Arch Linux ARM,使用960x720也没问题

080809089t 发表于 2013-8-9 16:54:51

摄像头好模糊。。。
页: [1]
查看完整版本: 在树莓派中调用weibo接口,实现自动拍照上传到微博