查看: 9192|回复: 9
收起左侧

[项目方案] 在树莓派中调用weibo接口,实现自动拍照上传到微博

2013-6-15 13:27:06 | 显示全部楼层 |阅读模式
搞软件的,硬件没做什么特殊的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




回复

使用道具 举报

 楼主| 2013-6-15 13:28:47 | 显示全部楼层
上传的图片就是这种效果
tmp.jpg
回复 支持 反对

使用道具 举报

2013-6-15 16:47:39 | 显示全部楼层
写的很不错。图片质量差是设置不对,我之前设置摄像头拍照正常。
回复 支持 反对

使用道具 举报

 楼主| 2013-6-16 17:52:26 | 显示全部楼层
whtech1 发表于 2013-6-15 16:47
写的很不错。图片质量差是设置不对,我之前设置摄像头拍照正常。

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

使用道具 举报

2013-6-17 14:42:39 | 显示全部楼层
taget 发表于 2013-6-16 17:52
哦,谢谢,原来是摄像头质量比较次(长城宽带活动赠的),焦距没调节好。经过调节,好多了,不过还是只能 ...

普通摄像头也就这个标准了
回复 支持 反对

使用道具 举报

2013-6-21 20:50:04 | 显示全部楼层
图上质量的问题如何解决的呢?
回复 支持 反对

使用道具 举报

 楼主| 2013-6-22 00:12:44 | 显示全部楼层
linux0ne 发表于 2013-6-21 20:50
图上质量的问题如何解决的呢?

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

使用道具 举报

2013-6-26 10:59:00 | 显示全部楼层
技术贴是要顶的。
分辨率是摄像头的硬件分辨率,不能超,超了就出错了。
回复 支持 反对

使用道具 举报

2013-6-30 21:46:33 | 显示全部楼层
摄像头只能拍出320*240 的图片,否则会出现select time out的错误,而且质量很差,根本看不清,不知道是啥原因
我看到很多人遇到此问题,它是Raspbian不稳定引起的。有人安装了Arch Linux ARM,使用960x720也没问题
回复 支持 反对

使用道具 举报

2013-8-9 16:54:51 | 显示全部楼层
摄像头好模糊。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热点推荐

关注我们,了解更多

官方微信

服务时间:10:00-16:00

13714503811

公司地址:深圳市龙岗区南湾街道东门头路8号

Copyright © 2012-2020 Powered by 树莓派论坛 2019.4  粤ICP备15075382号-1
快速回复 返回列表 返回顶部