Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
openCVºÍTensorflowÆð²½
 
×÷Õߣºlhdoeo
  3684  次浏览      27
 2019-10-29
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½²½âÁËÅäÖÿª·¢»·¾³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]))#µÚÒ»ÐеڶþÁÐ

   
3684 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚͼ¾í»ýÍøÂçµÄͼÉî¶Èѧϰ
×Ô¶¯¼ÝÊ»ÖеÄ3DÄ¿±ê¼ì²â
¹¤Òµ»úÆ÷ÈË¿ØÖÆÏµÍ³¼Ü¹¹½éÉÜ
ÏîĿʵս£ºÈçºÎ¹¹½¨ÖªÊ¶Í¼Æ×
 
Ïà¹ØÎĵµ

5GÈ˹¤ÖÇÄÜÎïÁªÍøµÄµäÐÍÓ¦ÓÃ
Éî¶ÈѧϰÔÚ×Ô¶¯¼ÝÊ»ÖеÄÓ¦ÓÃ
ͼÉñ¾­ÍøÂçÔÚ½»²æÑ§¿ÆÁìÓòµÄÓ¦ÓÃÑо¿
ÎÞÈË»úϵͳԭÀí
Ïà¹Ø¿Î³Ì

È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ&TensorFlow
»úÆ÷ÈËÈí¼þ¿ª·¢¼¼Êõ
È˹¤ÖÇÄÜ£¬»úÆ÷ѧϰºÍÉî¶Èѧϰ
ͼÏñ´¦ÀíËã·¨·½·¨Óëʵ¼ù