可以具体说一下是怎么调用的吗,像我使用C/C++调用这个外部程序(例如Python程序)时,我是这么做的,通过命令行参数通信,给个模板,注意看我的注释。
创新互联公司是一家集网站建设,屏边企业网站建设,屏边品牌网站建设,网站定制,屏边网站建设报价,网络营销,网络优化,屏边网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
C的部分(用C++也行,不过不难,也不是重点):
#includestdlib.h
#includestdio.h
int main(){
char pic_dir[255],pic_dir[255],cmd[255];
printf("What is your pic_dir? (e.g. C:\\a.jpg)\n");
/*虽然我强烈认为命名上应该不用pic_dir而是用pic_path*/
scanf("%s",pic_dir);
printf("What is your pic_name?(e.g. b.jpg)\n");
scanf("%s",pic_name);
printf("so we are calling a python program to deal with those above, please wait...\n");
sprintf(cmd,"python process.py %s %s ",pic_dir,pic_name);
/*这里是一个关键点,python的运行目录在你的PATH环境变量里有,如下图最后一行*/
system(cmd);
return 0;
}
process.py:(部分内容,主要是在process方法定义后面加一点东西)
def process(pic_dir,pic_name):
...#(这里的语句体(suite)不用改, 加上后面两句就行)
from sys import argv
process(argv[1],argv[2])
OK完成
cv2.imshow("left", img_left)
filename3=str(number)+'n3'+'.jpg' #打印第number张图片+增值方式+保存类型
cv2.imwrite(savedpath + filename3, img_left)
"""
# 数据增强实现
"""
import cv2
import numpy as np
import os
# 图像平移
def img_translation(image):
# 图像平移 下、上、右、左平移
M = np.float32([[1, 0, 0], [0, 1, 100]])
img_down = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))
M = np.float32([[1, 0, 0], [0, 1, -100]])
img_up = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))
M = np.float32([[1, 0, 100], [0, 1, 0]])
img_right = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))
M = np.float32([[1, 0, -100], [0, 1, 0]])
img_left = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))
# 保存图片,需要保存上述的哪一图片,就在cv2.imwrite()中,将哪一图片名放入。
# filename='xxx' +'.jpeg'
# cv2.imwrite(savedpath + filename, img_left)
# 显示图形
cv2.imshow("down", img_down)
filename0=str(number)+'n0'+'.jpg'
cv2.imwrite(savedpath + filename0, img_down)
cv2.imshow("up", img_up)
filename1=str(number)+'n1'+'.jpg'
cv2.imwrite(savedpath + filename1, img_up)
cv2.imshow("right", img_right)
filename2=str(number)+'n2'+'.jpg'
cv2.imwrite(savedpath + filename2, img_right)
cv2.imshow("left", img_left)
filename3=str(number)+'n3'+'.jpg'
cv2.imwrite(savedpath + filename3, img_left)
# 图像缩放
def img_scale(image):
result = cv2.resize(image, (224, 224))
cv2.imshow("scale", result)
filename=str(number)+'n5'+'.jpg'
cv2.imwrite(savedpath + filename, result)
# 图像翻转
def img_flip(image):
# 0以X轴为对称轴翻转,0以Y轴为对称轴翻转, 0X轴Y轴翻转
horizontally = cv2.flip(image, 0) # 水平镜像
vertically = cv2.flip(image, 1) # 垂直镜像
hv = cv2.flip(image, -1) # 水平垂直镜像
# 显示图形
cv2.imshow("Horizontally", horizontally)
filename1=str(number)+'n6'+'.jpg'
cv2.imwrite(savedpath + filename1, horizontally)
cv2.imshow("Vertically", vertically)
filename2=str(number)+'n7'+'.jpg'
cv2.imwrite(savedpath + filename2, vertically)
cv2.imshow("Horizontally Vertically", hv)
filename3=str(number)+'n8'+'.jpg'
cv2.imwrite(savedpath + filename3, hv)
# 图像旋转
def img_rotation(image):
# 原图的高、宽 以及通道数
rows, cols, channel = image.shape
# 绕图像的中心旋转
# 参数:旋转中心 旋转度数 scale
M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 30, 1)
# 参数:原始图像 旋转参数 元素图像宽高
rotated = cv2.warpAffine(image, M, (cols, rows))
# 显示图像
cv2.imshow("rotated", rotated)
filename1=str(number)+'n9'+'.jpg'
cv2.imwrite(savedpath + filename1, rotated)
#选装60度
W = cv2.getRotationMatrix2D((cols / 2, rows / 2), 60, 1)
# 参数:原始图像 旋转参数 元素图像宽高
rotated1 = cv2.warpAffine(image, W, (cols, rows))
cv2.imshow("rotated", rotated)
filename2=str(number)+'n12'+'.jpg'
cv2.imwrite(savedpath + filename2, rotated1)
#选装145度
W = cv2.getRotationMatrix2D((cols / 2, rows / 2), 60, 1)
# 参数:原始图像 旋转参数 元素图像宽高
rotated2 = cv2.warpAffine(image, W, (cols, rows))
cv2.imshow("rotated", rotated)
filename3=str(number)+'n13'+'.jpg'
cv2.imwrite(savedpath + filename3, rotated2)
# 图像加噪
def img_noise(image, mean=0, var=0.001):
'''
添加高斯噪声
mean : 均值
var : 方差
'''
image = np.array(image / 255, dtype=float)
noise = np.random.normal(mean, var ** 0.5, image.shape)
out = image + noise
if out.min() 0:
low_clip = -1.
else:
low_clip = 0.
out = np.clip(out, low_clip, 1.0)
out = np.uint8(out * 255)
cv2.imshow("noise", out)
filename3=str(number)+'n10'+'.jpg'
cv2.imwrite(savedpath + filename3, out)
# 图像亮度调节
def img_brightness(image):
contrast = 1 # 对比度
brightness = 100 # 亮度
pic_turn = cv2.addWeighted(image, contrast, image, 0, brightness)
# cv2.addWeighted(对象,对比度,对象,对比度)
'''cv2.addWeighted()实现的是图像透明度的改变与图像的叠加'''
cv2.imshow('bright', pic_turn) # 显示图片
filename3=str(number)+'n11'+'.jpg'
cv2.imwrite(savedpath + filename3, pic_turn)
if __name__ == '__main__':
i = 0
path = '../Data/'
print(path)
savedpath = './result_new/'
filelist = os.listdir(path)
total_num = len(filelist)
for item in filelist:
number = i + 1
i = number
print("######")
print("打印到第",i,"张图片")
src = cv2.imread(path + item)
img_translation(src)
img_scale(src)
img_flip(src)
img_rotation(src)
img_noise(src)
img_brightness(src)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码较为繁琐,有空之后进行优化
输出结果
第一步,定义一个变量n1并赋值为987,调用bin函数将n1转换成二进制,
第二步,再次定义一个变量n2并赋值一个长整型,使用bin函数转换,第三步,如果传入的参数是一个逻辑值或是一个字符串,使用bin函数返回什么结果,第四步,定义一个列表变量n4,并进行赋值;然后调用bin函数,结果发现出现了报错,第五步,如果传入的参数是一个负数,使用bin函数转换之后,对应的结果也为负数,第六步,定义变量n6,并进行赋值为0,结果发现返回的值也是0,并且是二进制数,注意事项
注意python语言中的bin函数的用法
注意bin函数的传入参数和返回值
reg = r'src="(.+?\.jpg)" pic_ext'
pic_ext 是匹配源里要包含的东西,也就是说源内容一定要以 pic_ext结尾才匹配成功。
import turtle, math
def pic(x0, y0, x1, y1):
dis = int(math.sqrt((x0 - x1) ** 2 + (y0 - y1) ** 2))
turtle.hideturtle()
turtle.up()
turtle.goto(x0, y0)
turtle.down()
turtle.goto(x1, y1)
turtle.left(math.atan2(y1 - y0, x1 - x0) / math.pi * 180)
turtle.up()
turtle.backward(dis / 2)
turtle.write('长度为:%s' % dis, align='left')
turtle.done()
def palin():
k = []
total = []
for i in range(10, 200000):
while i 0:
k.append(i % 10)
i = i // 10
for m in range(len(k) // 2):
if k[m] != k[len(k) - m - 1]:
break
else:
print(k)
total.append(k)
k = []
print(len(total))
if __name__ == '__main__':
x0 = int(input('输入A的横坐标:'))
y0 = int(input('输入A的纵坐标:'))
x1 = int(input('输入B的横坐标:'))
y1 = int(input('输入B的纵坐标:'))
pic(x0, y0, x1, y1)
palin()
我把这两个放在一个主函数里运行了