±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½²½âÁËÅäÖÿª·¢»·¾³AnacondaºÍtensorflowµÄһЩ»ù´¡ÖªÊ¶£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×Ô¼òÊ飬ÓÉ»ðÁú¹ûÈí¼þç÷ç÷±à¼ÍƼö |
|
1.ÅäÖÿª·¢»·¾³Anaconda

(1)´ò¿ªAnaconda Prompt£¬½«ÍøÖ·Ì滻ΪÇ廪¾µÏñ£¬ÕâÑùÏÂÔØ¸÷ÖÖÒÀÀµ»á¿ìһЩ£º
conda config
--add channels https://mirrors.tuna.tsinghua.edu.cn /anaconda/pkgs/free/
conda config --set show_channel_urls yes |
(2)´ò¿ªAnaconda Navigator£¬´´½¨Ò»¸öÔËÐл·¾³£¬Ãû³ÆÎªtensorflow36£¬²¢°²×°tensorflowºÍopencv

2.Hello World
(1)ÔÚNavigatorÖÐHomeÒ³ÃæÀïÔËÐÐnotebook

(2)ͼƬµÄ¶ÁÈ¡Óëչʾ
cv2.imread()ÓÃÓÚͼƬ¶ÁÈ¡£¬Ëü½ÓÊÜ2¸ö²ÎÊý¡£²ÎÊý1ΪÎļþÃû£¬²ÎÊý2ΪͼƬ¶ÁÈ¡ÀàÐÍ£¬0Ϊ¶ÁÈ¡³É»Ò¶Èͼ£¬1Ϊ¶ÁÈ¡³É²Êɫͼ
cv2.imshow()ÓÃÓÚÏÔʾͼƬ£¬Ëü½ÓÊÜ2¸ö²ÎÊý¡£²ÎÊý1Ϊ´°ÌåÃû³Æ£¬²ÎÊý2Ϊ¶ÁȡͼƬµÄÔʼÊý¾Ý
cv2.waitKey(0)ÓÃÓÚ³ÌÐòÔÝÍ££¬ÒªÏÔʾͼƬ±ØÐëÔËÐÐÕâÐдúÂë
import cv2
img = cv2.imread('image0.jpg',1)
cv2.imshow('image',img)
cv2.waitKey(0) |

(3)ͼƬµÄдÈë
cv2.imwrite()¸Ã·½·¨½ÓÊÜ3¸ö²ÎÊý¡£²ÎÊý1ΪÎļþÃû£¬²ÎÊý2ΪͼƬÔʼÊý¾Ý£¬²ÎÊýÈýΪѹËõÖÊÁ¿£¬²»Í¬µÄͼƬ¸ñʽӵÓв»Í¬µÄÊýÖµ·¶Î§£¬¶ÔÓÚjpgÀ´Ëµ¿ÉÑ¡ÖÊÁ¿0-100£¬¶ÔÓÚpngÀ´ËµÑ¹Ëõ·¶Î§Îª0-9
import cv2
img = cv2.imread('image0.jpg',1)
#Íê³ÉͼƬµÄдÈ빦ÄÜ
cv2.imwrite('image1.jpg',img,[cv2.IMWRITE_JPEG_QUALITY,50])
cv2.imwrite('image1.png',img,[cv2.IMWRITE_PNG_COMPRESSION,0])
#jpg 0 ѹËõ±È¸ß png 0 ѹËõ±ÈµÍ
#jpg ѹËõ·¶Î§ 0-100 png ѹËõ·¶Î§ 0-9 |

(4)ÏñËØ²Ù×÷»ù±¾¸ÅÄî
ÑÕÉ«Éî¶È£º°´8bit¾ÙÀý£¬¾ÍÊÇÓÃ8λ´æ´¢Ò»¸öÑÕÉ«µÄÖµ£¬8bitµÄÿ¸öÑÕɫͨµÀµÄȡֵ·¶Î§ÊÇ0-255
ͼƬ´óС£º640x480¼´Ë®Æ½¡¢ÊúÖ±·½ÏòÉÏÓÐ640¡¢480¸öÏñËØ£»640x480x3¼´Í¼Æ¬Õ¼ÓõĿռ䣨8bitͼƬ)
ͼƬ¸ñʽ£º¶ÔÓÚpngͼƬÀ´Ëµ£¬Ëü²ÉÓõͼÊÇÎÞËðѹËõ·½Ê½£¬±Èjpg¶à³öÒ»¸öalphaÑÕɫͨµÀ£¬ÓÃÀ´´æ´¢Í¸Ã÷¶È
ÑÕɫͨµÀ£ºopencv¶ÁÈ¡µÄͼƬÑÕɫͨµÀÊǰ´bgrÀ´ÅÅÁеÄ(b,g,r) = img[0,0]ÓÃÔª×éÀ´´æ´¢Ò»¸öÏñËØµÄÑÕÉ«
(b,g,r) = img[100,100]
#img[]ÊÇÒ»¸ö¾ØÕó½á¹¹£¬¶ÁÈ¡³öµÄÊý¾ÝÒÔÔª×é´¢´æ£¬×óÉϽÇΪÆðµã
print(b,g,r) #openCV¶ÁÈ¡ÑÕɫΪbgr
for i in range(1,100):
for j in range(1,100):
img[100+i,100+j] = (255,0,0)
cv2.imshow('image2',img)
cv2.waitKey(0) |

(5)tensorflow»ù´¡ÖªÊ¶
ʹÓÃͼ (graph) À´±íʾ¼ÆËãÈÎÎñ
ÔÚ±»³ÆÖ®Îª »á»° (Session) µÄÉÏÏÂÎÄ (context) ÖÐÖ´ÐÐͼ
ʹÓÃÕÅÁ¿(tensor) ±íʾÊý¾Ý
ͨ¹ý±äÁ¿ (Variable) ά»¤×´Ì¬
ʹÓà feed ºÍ fetch ¿ÉÒÔΪÈÎÒâµÄ²Ù×÷¸³Öµ»òÕß´ÓÆäÖлñÈ¡Êý¾Ý

ÔÚTensorflow¼ÆËãͼ(graph)ÖУ¬²Ù×÷¼ä´«µÝµÄÊý¾Ý¶¼ÊÇ tensor¡£ ¿ÉÒÔ°Ñ TensorFlowÖÐtensor ¿´×÷ÊÇÒ»¸ö n άµÄÊý×é»òÁÐ±í¡£ Ò»¸ö tensor °üº¬Ò»¸ö¾²Ì¬ÀàÐÍ rank£¬ºÍ Ò»¸ö shape¡£
ͼÖеĽڵ㱻³ÆÖ®Îª op (operation)¡£ Ò»¸ö op »ñµÃ 0 ¸ö»ò¶à¸ö Tensor£¬Ö´ÐмÆËã, ²úÉú 0 ¸ö»ò¶à¸ö Tensor¡£Ã¿¸ö Tensor ÊÇÒ»¸öÀàÐÍ»¯µÄ¶àάÊý×é¡£ÀýÈ磬Äã¿ÉÒÔ½«Ò»Ð¡×éͼÏñ¼¯±íʾΪһ¸öËÄά¸¡µãÊýÊý×é [batch, height, width, channels]¡£
Ò»¸öͼÃèÊöÁ˼ÆËãµÄ¹ý³Ì¡£ÎªÁ˽øÐмÆË㣬ͼ±ØÐëÔڻỰÀï±»Æô¶¯¡£»á»°½«Í¼µÄ op ·Ö·¢µ½ÖîÈç CPU »ò GPU Ö®ÀàµÄ É豸 ÉÏ£¬Í¬Ê±ÌṩִÐÐ op µÄ·½·¨¡£ÕâЩ·½·¨Ö´ÐÐºó£¬ ½«²úÉúµÄ tensor ·µ»Ø¡£

(6)TensorflowËÄÔòÔËËã
tf.add()¼Ó·¨ tf.substract()¼õ·¨ tf.multiply()³Ë·¨ tf.divide()³ý·¨

ʹÓÃռλ·û·½Ê½
import tensorflow
as tf
data1 = tf.placeholder(tf.float32)
data2 = tf.placeholder(tf.float32)
dataAdd = tf.add(data1,data2)
with tf.Session() as sess:
print(sess.run(dataAdd,feed_dict={data1:2,data2:6}))
print('end') |
(7)tensorflow¾ØÕó
ͨ¹ý[ [data1,data2,... ] ]´´½¨£¬×îÍâ²ãµÄ[ ]Ö»´ú±íÒ»¸öÊý×飬ÀïÃæµÄ[ ]´ú±íÒ»ÐУ¬ÄÚ²ãµÄÊý¾Ý¸öÊý´ú±íÁ˼¸ÁУ¬ÀýÈç[[1,2],[3,4]]´ú±íÒ»¸ö2*2µÄ¾ØÕó
import tensorflow
as tf
data1 = tf.constant([[6,6]])#´´½¨Ò»¸ö1x2µÄ¾ØÕó
data2 = tf.constant([[2],[2]])#´´½¨Ò»¸ö2x1µÄ¾ØÕó
data3 = tf.constant([[1,2],[3,4],[5,6]])#3x2¾ØÕó
print(data3.shape)
with tf.Session() as sess:
print(sess.run(data3))
print(sess.run(data3[0]))#´òÓ¡µÚÒ»ÐÐ
print(sess.run(data3[:,0]))#´òÓ¡µÚÒ»ÁÐ
print(sess.run(data3[0,1]))#µÚÒ»ÐеڶþÁÐ |

|