{"id":9067,"date":"2024-01-02T13:59:25","date_gmt":"2024-01-02T05:59:25","guid":{"rendered":"\/?p=9067"},"modified":"2024-01-02T14:05:19","modified_gmt":"2024-01-02T06:05:19","slug":"opencv%e5%9b%be%e5%83%8f%e5%9f%ba%e6%9c%ac%e6%93%8d%e4%bd%9c","status":"publish","type":"post","link":"\/?p=9067","title":{"rendered":"OpenCV\u56fe\u50cf\u57fa\u672c\u64cd\u4f5c"},"content":{"rendered":"<h2>\u56fe\u50cf\u57fa\u672c\u64cd\u4f5c<\/h2>\n<h4>\u73af\u5883\u914d\u7f6e\u5730\u5740\uff1a<\/h4>\n<ul>\n<li>\n<p>Anaconda:<a href=\"https:\/\/www.anaconda.com\/download\/\">https:\/\/www.anaconda.com\/download\/<\/a><\/p>\n<\/li>\n<li>\n<p>Python_whl:<a href=\"https:\/\/www.lfd.uci.edu\/~gohlke\/pythonlibs\/#opencv\">https:\/\/www.lfd.uci.edu\/~gohlke\/pythonlibs\/#opencv<\/a><\/p>\n<\/li>\n<li>\n<p>eclipse:\u6309\u7167\u81ea\u5df1\u7684\u559c\u597d\uff0c\u9009\u62e9\u4e00\u4e2a\u80fddebug\u5c31\u597d<\/p>\n<\/li>\n<\/ul>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/lena_img.png\" alt=\"title\" \/><\/p>\n<h3>\u6570\u636e\u8bfb\u53d6-\u56fe\u50cf<\/h3>\n<ul>\n<li>cv2.IMREAD_COLOR\uff1a\u5f69\u8272\u56fe\u50cf<\/li>\n<li>cv2.IMREAD_GRAYSCALE\uff1a\u7070\u5ea6\u56fe\u50cf<\/li>\n<\/ul>\n<pre><code class=\"language-python\">import cv2 #opencv\u8bfb\u53d6\u7684\u683c\u5f0f\u662fBGR\nimport matplotlib.pyplot as plt\nimport numpy as np \n%matplotlib inline \n\nimg=cv2.imread(&#039;cat.jpg&#039;)<\/code><\/pre>\n<pre><code class=\"language-python\">img<\/code><\/pre>\n<pre><code>array([[[142, 151, 160],\n        [146, 155, 164],\n        [151, 160, 169],\n        ...,\n        [156, 172, 185],\n        [155, 171, 184],\n        [154, 170, 183]],\n\n       [[107, 118, 126],\n        [112, 123, 131],\n        [117, 128, 136],\n        ...,\n        [155, 171, 184],\n        [154, 170, 183],\n        [153, 169, 182]],\n\n       [[108, 119, 127],\n        [112, 123, 131],\n        [118, 129, 137],\n        ...,\n        [154, 170, 183],\n        [153, 169, 182],\n        [152, 168, 181]],\n\n       ...,\n\n       [[162, 186, 198],\n        [157, 181, 193],\n        [142, 166, 178],\n        ...,\n        [181, 204, 206],\n        [170, 193, 195],\n        [149, 172, 174]],\n\n       [[140, 164, 176],\n        [147, 171, 183],\n        [139, 163, 175],\n        ...,\n        [167, 187, 188],\n        [123, 143, 144],\n        [104, 124, 125]],\n\n       [[154, 178, 190],\n        [154, 178, 190],\n        [121, 145, 157],\n        ...,\n        [185, 198, 200],\n        [130, 143, 145],\n        [129, 142, 144]]], dtype=uint8)<\/code><\/pre>\n<pre><code class=\"language-python\">#\u56fe\u50cf\u7684\u663e\u793a,\u4e5f\u53ef\u4ee5\u521b\u5efa\u591a\u4e2a\u7a97\u53e3\ncv2.imshow(&#039;image&#039;,img) \n# \u7b49\u5f85\u65f6\u95f4\uff0c\u6beb\u79d2\u7ea7\uff0c0\u8868\u793a\u4efb\u610f\u952e\u7ec8\u6b62\ncv2.waitKey(0) \ncv2.destroyAllWindows()<\/code><\/pre>\n<pre><code class=\"language-python\">def cv_show(name,img):\n    cv2.imshow(name,img) \n    cv2.waitKey(0) \n    cv2.destroyAllWindows()<\/code><\/pre>\n<pre><code class=\"language-python\">img.shape<\/code><\/pre>\n<pre><code>(414, 500, 3)<\/code><\/pre>\n<pre><code class=\"language-python\">img=cv2.imread(&#039;cat.jpg&#039;,cv2.IMREAD_GRAYSCALE)\nimg<\/code><\/pre>\n<pre><code>array([[153, 157, 162, ..., 174, 173, 172],\n       [119, 124, 129, ..., 173, 172, 171],\n       [120, 124, 130, ..., 172, 171, 170],\n       ...,\n       [187, 182, 167, ..., 202, 191, 170],\n       [165, 172, 164, ..., 185, 141, 122],\n       [179, 179, 146, ..., 197, 142, 141]], dtype=uint8)<\/code><\/pre>\n<pre><code class=\"language-python\">img.shape<\/code><\/pre>\n<pre><code>(414, 500)<\/code><\/pre>\n<pre><code class=\"language-python\">#\u56fe\u50cf\u7684\u663e\u793a,\u4e5f\u53ef\u4ee5\u521b\u5efa\u591a\u4e2a\u7a97\u53e3\ncv2.imshow(&#039;image&#039;,img) \n# \u7b49\u5f85\u65f6\u95f4\uff0c\u6beb\u79d2\u7ea7\uff0c0\u8868\u793a\u4efb\u610f\u952e\u7ec8\u6b62\ncv2.waitKey(10000) \ncv2.destroyAllWindows()<\/code><\/pre>\n<pre><code class=\"language-python\">#\u4fdd\u5b58\ncv2.imwrite(&#039;mycat.png&#039;,img)<\/code><\/pre>\n<pre><code>True<\/code><\/pre>\n<pre><code class=\"language-python\">type(img)<\/code><\/pre>\n<pre><code>numpy.ndarray<\/code><\/pre>\n<pre><code class=\"language-python\">img.size<\/code><\/pre>\n<pre><code>207000<\/code><\/pre>\n<pre><code class=\"language-python\">img.dtype<\/code><\/pre>\n<pre><code>dtype('uint8')<\/code><\/pre>\n<h3>\u6570\u636e\u8bfb\u53d6-\u89c6\u9891<\/h3>\n<ul>\n<li>cv2.VideoCapture\u53ef\u4ee5\u6355\u83b7\u6444\u50cf\u5934\uff0c\u7528\u6570\u5b57\u6765\u63a7\u5236\u4e0d\u540c\u7684\u8bbe\u5907\uff0c\u4f8b\u59820,1\u3002<\/li>\n<li>\u5982\u679c\u662f\u89c6\u9891\u6587\u4ef6\uff0c\u76f4\u63a5\u6307\u5b9a\u597d\u8def\u5f84\u5373\u53ef\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-python\">vc = cv2.VideoCapture(&#039;test.mp4&#039;)<\/code><\/pre>\n<pre><code class=\"language-python\"># \u68c0\u67e5\u662f\u5426\u6253\u5f00\u6b63\u786e\nif vc.isOpened(): \n    oepn, frame = vc.read()\nelse:\n    open = False<\/code><\/pre>\n<pre><code class=\"language-python\">while open:\n    ret, frame = vc.read()\n    if frame is None:\n        break\n    if ret == True:\n        gray = cv2.cvtColor(frame,  cv2.COLOR_BGR2GRAY)\n        cv2.imshow(&#039;result&#039;, gray)\n        if cv2.waitKey(100) &amp; 0xFF == 27:\n            break\nvc.release()\ncv2.destroyAllWindows()<\/code><\/pre>\n<h3>\u622a\u53d6\u90e8\u5206\u56fe\u50cf\u6570\u636e<\/h3>\n<pre><code class=\"language-python\">img=cv2.imread(&#039;cat.jpg&#039;)\ncat=img[0:50,0:200] \ncv_show(&#039;cat&#039;,cat)<\/code><\/pre>\n<h3>\u989c\u8272\u901a\u9053\u63d0\u53d6<\/h3>\n<pre><code class=\"language-python\">b,g,r=cv2.split(img)<\/code><\/pre>\n<pre><code class=\"language-python\">r<\/code><\/pre>\n<pre><code>array([[160, 164, 169, ..., 185, 184, 183],\n       [126, 131, 136, ..., 184, 183, 182],\n       [127, 131, 137, ..., 183, 182, 181],\n       ...,\n       [198, 193, 178, ..., 206, 195, 174],\n       [176, 183, 175, ..., 188, 144, 125],\n       [190, 190, 157, ..., 200, 145, 144]], dtype=uint8)<\/code><\/pre>\n<pre><code class=\"language-python\">r.shape<\/code><\/pre>\n<pre><code>(414, 500)<\/code><\/pre>\n<pre><code class=\"language-python\">img=cv2.merge((b,g,r))\nimg.shape<\/code><\/pre>\n<pre><code>(414, 500, 3)<\/code><\/pre>\n<pre><code class=\"language-python\"># \u53ea\u4fdd\u7559R\ncur_img = img.copy()\ncur_img[:,:,0] = 0\ncur_img[:,:,1] = 0\ncv_show(&#039;R&#039;,cur_img)\n<\/code><\/pre>\n<pre><code class=\"language-python\"># \u53ea\u4fdd\u7559G\ncur_img = img.copy()\ncur_img[:,:,0] = 0\ncur_img[:,:,2] = 0\ncv_show(&#039;G&#039;,cur_img)<\/code><\/pre>\n<pre><code class=\"language-python\"># \u53ea\u4fdd\u7559B\ncur_img = img.copy()\ncur_img[:,:,1] = 0\ncur_img[:,:,2] = 0\ncv_show(&#039;B&#039;,cur_img)<\/code><\/pre>\n<h3>\u8fb9\u754c\u586b\u5145<\/h3>\n<pre><code class=\"language-python\">top_size,bottom_size,left_size,right_size = (50,50,50,50)\n\nreplicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)\nreflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_REFLECT)\nreflect101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101)\nwrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP)\nconstant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_CONSTANT, value=0)<\/code><\/pre>\n<pre><code class=\"language-python\">import matplotlib.pyplot as plt\nplt.subplot(231), plt.imshow(img, &#039;gray&#039;), plt.title(&#039;ORIGINAL&#039;)\nplt.subplot(232), plt.imshow(replicate, &#039;gray&#039;), plt.title(&#039;REPLICATE&#039;)\nplt.subplot(233), plt.imshow(reflect, &#039;gray&#039;), plt.title(&#039;REFLECT&#039;)\nplt.subplot(234), plt.imshow(reflect101, &#039;gray&#039;), plt.title(&#039;REFLECT_101&#039;)\nplt.subplot(235), plt.imshow(wrap, &#039;gray&#039;), plt.title(&#039;WRAP&#039;)\nplt.subplot(236), plt.imshow(constant, &#039;gray&#039;), plt.title(&#039;CONSTANT&#039;)\n\nplt.show()<\/code><\/pre>\n<p>\u200b<br \/>\n<img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/%E5%9B%BE%E5%83%8F%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C_34_0.png\" alt=\"png\" \/><br \/>\n\u200b    <\/p>\n<ul>\n<li>BORDER_REPLICATE\uff1a\u590d\u5236\u6cd5\uff0c\u4e5f\u5c31\u662f\u590d\u5236\u6700\u8fb9\u7f18\u50cf\u7d20\u3002<\/li>\n<li>BORDER_REFLECT\uff1a\u53cd\u5c04\u6cd5\uff0c\u5bf9\u611f\u5174\u8da3\u7684\u56fe\u50cf\u4e2d\u7684\u50cf\u7d20\u5728\u4e24\u8fb9\u8fdb\u884c\u590d\u5236\u4f8b\u5982\uff1afedcba|abcdefgh|hgfedcb   <\/li>\n<li>BORDER_REFLECT_101\uff1a\u53cd\u5c04\u6cd5\uff0c\u4e5f\u5c31\u662f\u4ee5\u6700\u8fb9\u7f18\u50cf\u7d20\u4e3a\u8f74\uff0c\u5bf9\u79f0\uff0cgfedcb|abcdefgh|gfedcba<\/li>\n<li>BORDER_WRAP\uff1a\u5916\u5305\u88c5\u6cd5cdefgh|abcdefgh|abcdefg  <\/li>\n<li>BORDER_CONSTANT\uff1a\u5e38\u91cf\u6cd5\uff0c\u5e38\u6570\u503c\u586b\u5145\u3002<\/li>\n<\/ul>\n<h3>\u6570\u503c\u8ba1\u7b97<\/h3>\n<pre><code class=\"language-python\">img_cat=cv2.imread(&#039;cat.jpg&#039;)\nimg_dog=cv2.imread(&#039;dog.jpg&#039;)<\/code><\/pre>\n<pre><code class=\"language-python\">img_cat2= img_cat +10 \nimg_cat[:5,:,0]<\/code><\/pre>\n<pre><code>array([[142, 146, 151, ..., 156, 155, 154],\n       [107, 112, 117, ..., 155, 154, 153],\n       [108, 112, 118, ..., 154, 153, 152],\n       [139, 143, 148, ..., 156, 155, 154],\n       [153, 158, 163, ..., 160, 159, 158]], dtype=uint8)<\/code><\/pre>\n<pre><code class=\"language-python\">img_cat2[:5,:,0]<\/code><\/pre>\n<pre><code>array([[152, 156, 161, ..., 166, 165, 164],\n       [117, 122, 127, ..., 165, 164, 163],\n       [118, 122, 128, ..., 164, 163, 162],\n       [149, 153, 158, ..., 166, 165, 164],\n       [163, 168, 173, ..., 170, 169, 168]], dtype=uint8)<\/code><\/pre>\n<pre><code class=\"language-python\">#\u76f8\u5f53\u4e8e% 256\n(img_cat + img_cat2)[:5,:,0] <\/code><\/pre>\n<pre><code>array([[ 38,  46,  56, ...,  66,  64,  62],\n       [224, 234, 244, ...,  64,  62,  60],\n       [226, 234, 246, ...,  62,  60,  58],\n       [ 32,  40,  50, ...,  66,  64,  62],\n       [ 60,  70,  80, ...,  74,  72,  70]], dtype=uint8)<\/code><\/pre>\n<pre><code class=\"language-python\">cv2.add(img_cat,img_cat2)[:5,:,0]<\/code><\/pre>\n<pre><code>array([[255, 255, 255, ..., 255, 255, 255],\n       [224, 234, 244, ..., 255, 255, 255],\n       [226, 234, 246, ..., 255, 255, 255],\n       [255, 255, 255, ..., 255, 255, 255],\n       [255, 255, 255, ..., 255, 255, 255]], dtype=uint8)<\/code><\/pre>\n<h3>\u56fe\u50cf\u878d\u5408<\/h3>\n<pre><code class=\"language-python\">img_cat + img_dog<\/code><\/pre>\n<pre><code>---------------------------------------------------------------------------\n\nValueError                                Traceback (most recent call last)\n\n<ipython-input-111-ffa3cdc5d6b8> in <module>()\n----> 1 img_cat + img_dog\n\nValueError: operands could not be broadcast together with shapes (414,500,3) (429,499,3) <\/code><\/pre>\n<pre><code class=\"language-python\">img_cat.shape<\/code><\/pre>\n<pre><code>(414, 500, 3)<\/code><\/pre>\n<pre><code class=\"language-python\">img_dog = cv2.resize(img_dog, (500, 414))\nimg_dog.shape<\/code><\/pre>\n<pre><code>(414, 500, 3)<\/code><\/pre>\n<pre><code class=\"language-python\">res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.6, 0)<\/code><\/pre>\n<pre><code class=\"language-python\">plt.imshow(res)<\/code><\/pre>\n<pre><code><matplotlib.image.AxesImage at 0x20a6b5f39e8><\/code><\/pre>\n<p>\u200b<br \/>\n<img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/%E5%9B%BE%E5%83%8F%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C_47_1.png\" alt=\"png\" \/><br \/>\n\u200b    <\/p>\n<pre><code class=\"language-python\">res = cv2.resize(img, (0, 0), fx=4, fy=4)\nplt.imshow(res)<\/code><\/pre>\n<pre><code><matplotlib.image.AxesImage at 0x20a6b58b908><\/code><\/pre>\n<p>\u200b<br \/>\n<img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/%E5%9B%BE%E5%83%8F%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C_48_1.png\" alt=\"png\" \/><br \/>\n\u200b    <\/p>\n<pre><code class=\"language-python\">res = cv2.resize(img, (0, 0), fx=1, fy=3)\nplt.imshow(res)<\/code><\/pre>\n<pre><code><matplotlib.image.AxesImage at 0x20a6b7bcb00><\/code><\/pre>\n<p>\u200b<br \/>\n<img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/%E5%9B%BE%E5%83%8F%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C_49_1.png\" alt=\"png\" \/><br \/>\n\u200b    <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u56fe\u50cf\u57fa\u672c\u64cd\u4f5c \u73af\u5883\u914d\u7f6e\u5730\u5740\uff1a Anaconda:https:\/\/www.anaconda.com\/download\/ Python_wh   \u2026 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[223],"tags":[],"_links":{"self":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts\/9067"}],"collection":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9067"}],"version-history":[{"count":1,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/9067\/revisions"}],"predecessor-version":[{"id":9068,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/9067\/revisions\/9068"}],"wp:attachment":[{"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9067"},{"taxonomy":"post_tag","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}