1.登录退出
2.获取好友以及群列表
因为userName好像会变,只存储userName是不行的
一般是搜索好友后重新获取username发消息才会成功,
2.1搜索好友
# 1获取自己的用户信息,返回自己的属性字典
result = itchat.search_friends()
print(result)
#2 根据姓名查找用户
result = itchat.search_friends(name='培杰')
print(result)
#3 根据微信号查找用户
result = itchat.search_friends(wechatAccount='zpj779878443')
print(result)
#4 根据UserName查找用户
result = itchat.search_friends(userName='@xxb096c3036543exx2d4de4fc222xxxx')
print(result)
#5 也可以多条件定位用户
itchat.search_friends(name='LittleCoder机器人', wechatAccount='littlecodersh')
2.2搜索群聊
# 获取特定UserName的群聊,返回值为一个字典
itchat.search_chatrooms(userName='@@abcdefg1234567')
# 获取名字中含有特定字符的群聊,返回值为一个字典的列表
itchat.search_chatrooms(name='LittleCoder')
# 以下方法相当于仅特定了UserName
itchat.search_chatrooms(userName='@@abcdefg1234567', name='LittleCoder')
3.发送消息给好友以及群
4.获取好友以及群消息
import itchat
@itchat.msg_register(itchat.content.TEXT, isGroupChat=True) #注册对文本消息进行监听,对群聊进行监听
def print_content(msg):
print(msg['Text']+'||来自:'+msg['FromUserName']+'群,用户:'+msg['ActualNickName']) #页面打印,也可根据实现情况进行入库操作。 msg['Text'] 群消息;msg['FromUserName'] 群id;msg['ActualNickName'] 发群消息的用户昵称
itchat.auto_login() # 手机扫码登录
itchat.run()
5.公众号消息
6.条形码二维码扫描
参考:https://www.cnblogs.com/dongxiaodong/p/10216579.html
使用pyzbar和PIL 及OpenCV-Python,实现二维码图片框选和在图片上印字体
import cv2
import pyzbar.pyzbar as pyzbar
import numpy
from PIL import Image, ImageDraw, ImageFont
def decodeDisplay(imagex1):
# 转为灰度图像
gray = cv2.cvtColor(imagex1, cv2.COLOR_BGR2GRAY)
barcodes = pyzbar.decode(gray)
for barcode in barcodes:
# 提取条形码的边界框的位置
# 画出图像中条形码的边界框
(x, y, w, h) = barcode.rect
cv2.rectangle(imagex1, (x, y), (x + w, y + h), (255, 255, 0), 2)
# 条形码数据为字节对象,所以如果我们想在输出图像上
# 画出来,就需要先将它转换成字符串
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
#不能显示中文
# 绘出图像上条形码的数据和条形码类型
#text = "{} ({})".format(barcodeData, barcodeType)
#cv2.putText(imagex1, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,5, (0, 0, 125), 2)
#更换为:
img_PIL = Image.fromarray(cv2.cvtColor(imagex1, cv2.COLOR_BGR2RGB))
# 参数(字体,默认大小)
font = ImageFont.truetype('fontx/hwst.ttf', 25)
# 字体颜色(rgb)
fillColor = (255,0,0)
# 文字输出位置
position = (x, y-10)
# 输出内容
str = barcodeData
# 需要先把输出的中文字符转换成Unicode编码形式( str.decode("utf-8) )
draw = ImageDraw.Draw(img_PIL)
draw.text(position, str, font=font, fill=fillColor)
# 使用PIL中的save方法保存图片到本地
# img_PIL.save('02.jpg', 'jpeg')
# 转换回OpenCV格式
imagex1 = cv2.cvtColor(numpy.asarray(img_PIL), cv2.COLOR_RGB2BGR)
# 向终端打印条形码数据和条形码类型
print("扫描结果==》 类别: {0} 内容: {1}".format(barcodeType, barcodeData))
cv2.imshow("camera", imagex1)
# 窗口等待任意键盘按键输入,0为一直等待,其他数字为毫秒数
cv2.waitKey(0)
# 销毁窗口,退出程序
cv2.destroyAllWindows()
def detect():
cv2.namedWindow("camera",cv2.WINDOW_NORMAL)
frame=cv2.imread("imgx\dongxiao2.png")
decodeDisplay(frame)
if __name__ == '__main__':
detect()
OpenCV-Python视频读取,并帧处理视频,实现条码的动态框选和识别
import cv2
import pyzbar.pyzbar as pyzbar
import numpy
from PIL import Image, ImageDraw, ImageFont
def decodeDisplay(imagex1):
# 转为灰度图像
gray = cv2.cvtColor(imagex1, cv2.COLOR_BGR2GRAY)
barcodes = pyzbar.decode(gray)
for barcode in barcodes:
# 提取条形码的边界框的位置
# 画出图像中条形码的边界框
(x, y, w, h) = barcode.rect
cv2.rectangle(imagex1, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 条形码数据为字节对象,所以如果我们想在输出图像上
# 画出来,就需要先将它转换成字符串
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
#不能显示中文
# 绘出图像上条形码的数据和条形码类型
#text = "{} ({})".format(barcodeData, barcodeType)
#cv2.putText(imagex1, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,5, (0, 0, 125), 2)
#更换为:
img_PIL = Image.fromarray(cv2.cvtColor(imagex1, cv2.COLOR_BGR2RGB))
# 参数(字体,默认大小)
font = ImageFont.truetype('fontx/hwst.ttf', 35)
# 字体颜色(rgb)
fillColor = (0,255,255)
# 文字输出位置
position = (x, y-10)
# 输出内容
str = barcodeData
# 需要先把输出的中文字符转换成Unicode编码形式( str.decode("utf-8) )
draw = ImageDraw.Draw(img_PIL)
draw.text(position, str, font=font, fill=fillColor)
# 使用PIL中的save方法保存图片到本地
# img_PIL.save('02.jpg', 'jpeg')
# 转换回OpenCV格式
imagex1 = cv2.cvtColor(numpy.asarray(img_PIL), cv2.COLOR_RGB2BGR)
# 向终端打印条形码数据和条形码类型
print("扫描结果==》 类别: {0} 内容: {1}".format(barcodeType, barcodeData))
cv2.imshow("camera", imagex1)
def detect():
cv2.namedWindow("camera",cv2.WINDOW_NORMAL)
camera = cv2.VideoCapture(0)
while True:
# 读取当前帧
ret, frame = camera.read()
#print(ret.shape)
decodeDisplay(frame)
if(cv2.waitKey(5)==27):
break
camera.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
detect()