个人笔记 长期更新

#### 创建一个图片
import cv2 # Not actually necessary if you just want to create an image.
import matplotlib.pyplot as plt #jupyter notebook 用cv2 show img有问题
import numpy as np
height=300
width=300
blank_image = np.zeros((height,width,3), np.uint8)
print(blank_image.shape)
#blank_image[:,0:width//2] = (128,128,128) # (B, G, R)
#blank_image[:,width//2:width] = (128,128,128)
white_image = blank_image.copy()
white_image[...]=(255,255,255)
plt.imshow(white_image)
plt.show() gray_image = blank_image.copy()
gray_image[...]=(128,128,128)
plt.imshow(gray_image)
plt.show()
# white_in_center_img = blank_image.copy()
white_in_center_img[100:200,100:200,:]=(128,128,128)
plt.imshow(white_in_center_img)
plt.show()

读取一个图片

import cv2
img = cv2.imread("/nfsserver/test.jpg")
print(img.shape)

输出(640, 480, 3). 顺序为HWC,BGR

opencv里内存里的存储顺序

https://stackoverflow.com/questions/37040787/opencv-in-memory-mat-representation



举个具体的例子,比如8 x 8的彩色图片。像素坐标从(0,0)到(7,7),每个像素有r,g,b三个值。

存储顺序为(0,0,b),(0,0,g),(0,0,r),(0,1,b),(0,1,g),(0,1,r)......(7,7,b),(7,7,g),(7,7,r)

所以第i行,第j列,第c个channel对应的index即为 i x j x 3 + j x 3 + c.

resize

import cv2
import matplotlib.pyplot as plt
import numpy as np
height=3
width=5
blank_image = np.zeros((height,width,3), np.uint8)
blank_image[1:2,3:4,]=(255,0,0)
plt.imshow(blank_image)
plt.show() cv2.imwrite('/home/su/Desktop/test.jpg',blank_image) blank_image = cv2.resize(blank_image, (416, 416), interpolation=cv2.INTER_CUBIC)
cv2.imwrite('/home/su/Desktop/test2.jpg',blank_image)

opencv mat type

在用printf("mat.type")打印的时候打出来的只是一个数字,不好观察具体的类型,可以参见下表

+--------+----+----+----+----+------+------+------+------+

| | C1 | C2 | C3 | C4 | C(5) | C(6) | C(7) | C(8) |

+--------+----+----+----+----+------+------+------+------+

| CV_8U | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 |

| CV_8S | 1 | 9 | 17 | 25 | 33 | 41 | 49 | 57 |

| CV_16U | 2 | 10 | 18 | 26 | 34 | 42 | 50 | 58 |

| CV_16S | 3 | 11 | 19 | 27 | 35 | 43 | 51 | 59 |

| CV_32S | 4 | 12 | 20 | 28 | 36 | 44 | 52 | 60 |

| CV_32F | 5 | 13 | 21 | 29 | 37 | 45 | 53 | 61 |

| CV_64F | 6 | 14 | 22 | 30 | 38 | 46 | 54 | 62 |

+--------+----+----+----+----+------+------+------+------+

打印类型的参考代码:

string type2str(int type) {
string r; uchar depth = type & CV_MAT_DEPTH_MASK;
uchar chans = 1 + (type >> CV_CN_SHIFT); switch ( depth ) {
case CV_8U: r = "8U"; break;
case CV_8S: r = "8S"; break;
case CV_16U: r = "16U"; break;
case CV_16S: r = "16S"; break;
case CV_32S: r = "32S"; break;
case CV_32F: r = "32F"; break;
case CV_64F: r = "64F"; break;
default: r = "User"; break;
} r += "C";
r += (chans+'0'); return r;
}

cv:Mat to vector

Mat to array

uchar * arr = image.isContinuous()? image.data: image.clone().data;
uint length = image.total()*image.channels();

Mat to vector

cv::Mat flat = image.reshape(1, image.total()*image.channels());
std::vector<uchar> vec = image.isContinuous()? flat : flat.clone();

opencv代码片段合集的更多相关文章

  1. Javascript 语言精粹 代码片段合集

    Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...

  2. 常用torch代码片段合集

    PyTorch常用代码段整理合集 本文代码基于 PyTorch 1.0 版本,需要用到以下包 import collections import os import shutil import tqd ...

  3. numpy代码片段合集

    生成shape为(num_examples, num_inputs),符合0-1分布的数据. np.random.normal(0, 1, (num_examples, num_inputs))

  4. 天气类API调用的代码示例合集:全国天气预报、实时空气质量数据查询、PM2.5空气质量指数等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 全国天气预报:数据来自国家气象局,可根据地名.经纬度GPS.IP查 ...

  5. 位置信息类API调用的代码示例合集:中国省市区查询、经纬度地址转换、POI检索等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 中国省市区查询:2017最新中国省市区地址 经纬度地址转换:经纬度 ...

  6. 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...

  7. 生活常用类API调用的代码示例合集:邮编查询、今日热门新闻查询、区号查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 邮编查询:通过邮编查询地名:通过地名查询邮编 今日热门新闻查询:提 ...

  8. 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  9. 出行服务类API调用的代码示例合集:长途汽车查询、车型大全、火车票查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 长途汽车查询:全国主要城市的长途汽车时刻查询,汽车站查询 车型大全 ...

随机推荐

  1. EF中获取当前上下文的表名

    EF在处理并发上并不是很好,很多时候我们需要手动写sql操作数据库.但是在基类中我们如何获取当前服务仓储操作的表呢? 使用正则是其中一种解决办法 Repository.Table是一条查询语句,通过t ...

  2. python:王思聪究竟上了多少次热搜?

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 朱小五 凹凸玩数据 PS:如有需要Python学习资料的小伙伴可以加 ...

  3. Nginx+keepalived(高可用主备模式)

    Nginx+keepalived(高可用主备模式) 环境:centos6.7 准备:两台服务器(虚拟机).两台应用(Tomcat).Nginx.keepalived server1:192.168.2 ...

  4. django4-模板进阶

    1.模板系统的语法 引用变量数据: {{  }} 标签逻辑操作:{%...%} 2.变量 变量名由字符数字下划线组成 ,可以执行由视图函数传过来的对象的方法和属性 ,但是视图函数中如果使用 ' . ' ...

  5. 按需动态加载js

    有些时间我们希望能按需动态加载js文件,而不是直接在HTML中写script标签. 以下为示例代码: var js = document.createElement('script'); js.asy ...

  6. Android Toolbar中的title居中问题

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/167 Android Toolbar中的title居中问题 ...

  7. python pyinstaller 模块的基本使用

    作用 PyInstaller是一个压缩python文件成为可执行程序的一个软件.它会扫描你所有的Python文档,并分析所有代码从而找出所有你的代码运行所需的模块.然后,PyInstaller会将所有 ...

  8. SRDC - ORA-22924 or ORA-1555 on LOB data: Checklist of Evidence to Supply (Doc ID 1682707.1)

    SRDC - ORA-22924 or ORA-1555 on LOB data: Checklist of Evidence to Supply (Doc ID 1682707.1) Action ...

  9. Python—版本和环境的管理工具(Pipenv)

    pipenv简介 虚拟环境本质是一个文件,是为了适应不同的项目而存在.pipenv相当于virtualenv和pip的合体. 整合了 pip+virtualenv+Pipfile,能够自动处理好包的依 ...

  10. IAR调试查看程序时间

    在无仿真器情况下设置: 调试仿真,点击view菜单下registers 软件仿真时计算两断点CYCLECOUNTER(在CPU registers中)的差值,乘以指令周期(MCLK)便是执行时间